目标:做一个网页服务器。
花生壳内网版本:
注册一个帐号。记住你的IP和客户端的端口。
你共享一个端口,则配置80:11125.
xiongyf--->你的IP。
服务器不会记录80:11125隐射。
发给你的客户端。
客户端再将11125解释为80。调用80端口。
假想前提:TCP通信。
特点:服务器只要开一个监听端口为客户端服务。
对于DNS解析为你IP,是DNS服务器做的事情。
二级与名服务器解开你的IP后,还会返回给客户端吗?
应该不会,而是直接将数据重新封包,丢给服务器程序。IP+客户端口+数据(11125+数据)。
普通版:
注册一个花生壳。给你一个帐户名。IP-》隅名。同时客户端会自动解你的IP。
说到底就是做了一个DNS服务器对射到你的IP。
对于端口。你可以将本地的服务端口绑定到公网端口。
NAT的时候,源IP会被修改,端口也会被改。就是做了个隐射。
外网访问的时候都是通过地址+端口---》与名+端口。
这个时候数据走的不是花生壳服务器通道。而是直接走自己的通道了(还是要和客户端打交道)
缺点:如果小区用的宽带,很可能不是公网IP。这个时候搭建服务器的话,地址绑定就成了问题。
除非每级都进行绑定。
可以改善:
让内网版本修正。
只做狱名解析。
对于数据的传输,还是点对点。
那如何知道自己的服务起80端口对应公网的端口呢?
显然如果接的不是一级公网,此法是不能实现的(除非你能对所有NAT的路由器控制绑定)。
那如何作呢?
如果我是花生壳的设计者。
我会将客户端用UDP实现。
这样我能实现点对点。花生壳将通信双方的IP:PORT告诉对方。双方后面就可以进行直接通信了。
当然都是要通过客户端来传送数据。但是是点对点了。后面的数据不是通过服务器中转。
总结:用UDP实现点对点。
用TCP则只能中转。