包头服务器搭建
① 如何配置服务器的内网IP以及MTU
在本机打开dos窗口,执行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是网关IP地址,1472是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。 如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。
如果出现: Packet needs to be fragmented but DF set. 表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。
如果检测到网关的MTU值是1500,不需要修改。 如果网关有防火墙ping不通,可以试试直接把MTU设为1400。
② C语言 Server和服务器之间的通信协议采用包头Header+包体Body的形式,能够具体实现这个吗
当然可以,协议是具有层次的,协议的目的就是让通信双方能明白自己正在传输的是怎样的数据格式。
TCP/IP是一种比较通用的通信协议,在windows中采用socket组件库实现,是对协议通信功能的一种封装,
如你要发送一个信息(数据如“MSG”)从A到B,那么A将“MSG”打包成“4MSG”,第一个字节“4”表示这个数据包长度为4,那么接紧接的3个字节就是数据,那么这里就是一个协议,只是这个协议很简单,属于你自己开发的协议,而TCP这些协议属于开放协议,大家都知道标准,因此只要收到一个TCP数据包,那么你就可以根据协议分析你收到的数据包的格式是什么,数据包协议中,一般在数据包的开始部分定义了固定格式的信息,如TCP包头中包含了数据长度,目的的IP地址等很多信息。
如果你收到一个数据包,你不清楚它是什么格式的,那么你怎么解析呢,根本无法解析的,当然如果人工打开这个数据包进行数据内容与已知的协议比对,也许可以猜出它是什么格式。
看数据包的传送过程,
程序A:sengPackage("MSG"){ 调用TCP协议函数sendTCPPackage("4MSG");};
sendTCPPackage(char *pkg){调用IP协议函数sendIPPackage(TCP头+“4MSG”)};
sendIPPackage(char *pkg){调用MAC协议函数sendMACPackage(IP头+“TCP头+4MSG”)};
sendMACPackage(char *pkg){调用驱动发送数据包sendPkg(MAC头+“IP头TCP头+4MSG”)};
这里仅仅是用函数调用的描述解释协议实现的原理:协议的分层在编写程序时体现的就是一个调用层次关系。
在接收方,其实就是调用相同层级的函数对收到的数据包进行解包,把去掉本层头部的数据包传给上层调用函数,
如getPackage(char *buffer){
buffer = getTCPPackageData(buffer);
return buffer +1; // 去掉开始的一个字节。这里就是我自己定义的协议解包过程。
}; //buffer是收到的数据包。
char * getTCPPackage(char *buffer){
buffer = getIPPackageData(buffer);
buffer = 去掉TCP包后的数据包; // TCP包解包过程,IP,MAC的解包一样。
return buffer;
}
如HTTP是建立在TCP协议上,那么TCP包的数据部分就包含了HTTP的协议头部以及HTTP的数据部分。也就是说协议分层中,任何上层的协议被打包后的数据包(注意其中包含有协议头)被下层协议当做一个纯数据处理,下层协议并不清楚你上层怎么组织数据的。
因此我们只要能获得任何一层的协议调用函数接口,就可以采用该层协议来传输数据,我们如果能获得MAC层的调用函数接口,那么直接打包成MAC传输也可以,只是MAC的格式中不包含TCP、IP这些信息,数据包到达路由器的时候就不知道发给哪个电脑了,除非路由器知道MAC地址是哪个电脑,并且路由器支持MAC包的转发。因此需要用什么协议,是根据需要来确定的。
采用共用协议,目的是让通信过程更加通用,使系统可以通过已知的网络进行连接。
③ win2008 如何同时搭建pptp和l2tp服务
L2TP支持MP(Multilink Protocol),把多个物理通道捆绑为单一逻辑信道
pptp使用M$的拨号网络作为客户端,使用gre做tunnel封装,mppe进行加密。
l2tp也使用M$的拨号网络做为客户端,在lac进行一次证,在lns进行二次认证,tunnel是处于lac与lns之间。加密方式可以选择mppe和ipsec。
ipsec使用ESP/AH做为tunnel封装,一般需要专用的客户端。如cisco的vpn client或其它厂商的client.
PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同:
1.PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。
2.PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。
3.L2TP可以提供包头压缩。当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。
4.L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道。
④ 如何创建ftp
附件[VPN.rar]:
这个方法比较无奈,因为它必须你找的有公网IP的电脑和你的电脑都在线,速度也受到双方限制,但是完全免费的!
下面是一些容易出现的问题:
FTP基础知识
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:"我打开了XXXX端口,你过来连接我"。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:"我打开了XXXX端口,你过来连接我"。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
FTP服务器端的注意事项
一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost
1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。
2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。
3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。
二、FTP服务器是内网IP,用内网动态域名标准版cmxnatproxy
这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。
FTP客户端的注意事项
请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。
一、客户端只有内网IP,没有公网IP
从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。
作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。
二、客户端有公网IP,但安装了防火墙
如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开1024以上的高端端口。
三、连接用内网标准版cmxnatproxy搭建的FTP服务,必须要用PASV方式。连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用。
当然,使用PORT方式的时候,还要满足上面的两个条件。
四、常见的FTP客户端软件PORT方式与PASV方式的切换方法。
大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。
在大部分FTP客户端的设置里,常见到的字眼都是"PASV"或"被动模式",极少见到"PORT"或"主动模式"等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
IE:
工具 -> Internet选项 -> 高级 -> "使用被动FTP"(需要IE6.0以上才支持)。如果找不到这个选项,请看 图片。
CuteFTP:
Edit -> Setting -> Connection -> Firewall -> PASV Mode
或
File -> Site Manager,在左边选中站点 -> Edit -> Use PASV mode
FlashGet:
工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> PASV模式
FlashFXP:
选项 -> 参数选择 -> 代理/防火墙/标识 -> 使用被动模式
或
站点管理 -> 对应站点 -> 选项 -> 使用被动模式
或
快速连接 -> 切换 -> 使用被动模式
LeapFTP:
Options -> Preferences -> General -> Proxy -> Use PASV mode
五、请尽量不要用IE作为FTP客户端
IE只是个很粗糙的FTP客户端工具。首先,IE6.0以下的版本不支持PASV方式;其次,IE在登录FTP的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。在测试自己的FTP网站的时候,强烈建议不要使用IE。
FTP建站的详细配置过程
请参考这个网页的说明来配置:
使用Serv-U建立FTP网站
高级话题
一、为什么没有公网IP,也能使用PORT方式登录FTP?
NAT网关的工作方式是在TCP/IP数据包的包头里找局域网的源地址和源端口,替换成网关的地址和端口。对数据包里的内容,是不会改变的。而使用PORT方式登录FTP的时候,IP地址与端口信息是在数据包里面的,而不是在包头。因此,没有公网IP,使用PORT方式是无法从internet上的ftp服务器下载数据的。
但是,极少数的NAT网关也支持PORT方式。这些NAT网关连数据包里面的内容都扫描,扫描到PORT指令后会替换PORT方式的IP和端口。在这种NAT网关下面,用PORT方式就没问题了。不过,这些网关也只扫描21端口的数据包,如果FTP服务器不是用默认的21端口,也无法使用PORT方式。
二、内网可以用PORT访问其他FTP,为什么不能用PORT访问自己的TrueHost FTP?
下面要讨论的问题,只是为了说明一些原理,是不影响实际使用的。如果您没有兴趣深究这些原理,不必花时间看。
内网用户通过支持PORT方式的NAT网关,访问自己本机利用TrueHost建立的FTP服务器,FTP命令链路的建立过程如下:
FTP客户端
10.10.0.1
端口xxx <==> ISP NAT网关
61.144.1.2
端口xxxx <==> TH服务器
x.x.x.x
端口21 <==> TH客户端 <==> 用户FTP服务器
10.10.0.1
端口21
FTP客户端通过ISP的NAT网关、科迈TrueHost服务器、TrueHost客户端,连接用户本机的FTP服务器的21端口。
当需要下载数据的时候,FTP客户端通过这条命令链路,向FTP服务器发送PORT命令。假设命令为:
PORT 10,10,0,1,30,4 (即IP=10.10.0.1 端口=30*256+4=7684)
当命令通过ISP的NAT网关的时候,NAT网关判断目的端口是21,并且是PORT命令,于是,修改命令里的IP和端口,替换为自己的IP和端口,比如:
PORT 61,144,1,2,50,6 (即IP=61.144.1.2 端口=50*256+6=12806)
用户的FTP服务器最终收到的是上面这个PORT命令。于是,FTP服务器向这个IP和端口发送连接请求,建立数据链路。图示:
用户FTP服务器
10.10.0.1
端口20 <==> ISP NAT网关
61.144.1.2
端口12806 <==> FTP客户端
10.10.0.1
端口7684
但是,因为NAT网关的公网IP只能接收外来的连接请求。就是说,61.144.1.2:12806只能接收其他公网IP的连接请求,对于从NAT内部(10.10.0.1:20)发起的连接请求,是无法建立连接的。为什么?原因很简单,因为内网IP要访问外网,必须要通过NAT建立映射。于是FTP数据链路无法建立。于是,用户无法在自己的机器上通过21端口访问自己的TrueHost FTP。
我们再来看看,如果FTP端口不是21,比如是22,会发生什么情况呢?在FTP客户端发送PORT命令的时候,NAT网关检测到目标端口是22,因为支持PORT的NAT网关只监视目的端口是21的数据包,发现目的端口是22的数据包,不做任何处理,完全放行。于是FTP服务器收到的PORT命令依然是PORT 10,10,0,1,30,4。于是FTP服务器向这个IP和端口发送连接请求。图示:
用户FTP服务器
10.10.0.1
端口20 <==> FTP客户端
10.10.0.1
端口7684
这种情况下命令链路就可以建立起来了。而且是等于本机连接本机,速度飞快。
综上所述,内网用户无法用PORT方式通过21端口访问自己的TrueHost FTP服务器。如果FTP端口不是21,则可以访问,而且实际上是本机连接本机。
上面的文字,仅仅是为了说明一些原理,不影响实际使用。如果本机访问本机,还要通过FTP的话,就有画蛇添足之嫌了。
⑤ 内蒙古包头市电信dns服务器的少
内蒙古电信DNS:首选222.74.1.200 ,备用222.74.126.230。
⑥ 服务器托管哪家好
服务器托管可以去了解下思腾合力,我们公司用的就是思腾合力的机房,而且它们家还收购了内蒙古包头公司并建成思腾云计算数据中心,具有IDC/ISP服务经营资质,性价比高,挺好的。网络也有很多相关资料。