数据是如何通过外网找到内网主机的
-
详细内容
![]()
例如:我内网IP是 192.168.1.25 外网IP 是218.222.222.22 那么我访问一个网站例如:http://www.baidu.com 后
在我的IE上就会显示百度网页啦。
那么 对于网民来说这是再简单不过的事情啦! 但这个过程是如何实现的呢 ?有人会很迅速并且很牛_B的说:TCP/IP协议!
是的这个肯定是TCP、IP协议啦 那么tcp、ip协议是如何实现的? 这时有的就到网上看tcp/IP视频讲座 ,说实话他们讲的确实很好没有错 声音真的很清晰并且很清脆 但就这个问题我看过的所有tcp/ip协议讲座无论是清华大学的 还是 电子科技大学的都只字未提,可能是由于这个问题不是问题吧!他们讲的就是OSI什么7层 什么物理层 链路层 还有XX层等 这些我很多年在学校都了解啦!谈不上会 只是了解。但我想知道的问题更具体 更直观!
我想知道的就是 见图

我画的图很垃圾!
下面我好回答路由是怎么实现的:
我用socket 与外网服务器进行TCP连接 端口为2011
内网连接为见图

见本机采用的接受端口为4115 而是远程服务器显示连接IP是我ADSL宽带外网IP端口是:13843
见图

而不是4115 所以我怀疑: 返回应答等信息到达内网是通过路由端口确定是哪个内外IP发送的请求!
后来也查询啦下资料也证明我的猜测见 NAT工作原理(到网上查):

在局域网内部的私有地址是不能访问外网的,必须通过转换成公有地址才可以访问Internet,以上所图,是两个公司之间的Inter网络互相交流,下面来谈谈它的工作原理
192.168.1.0网络的PC1想要访问192.168.10.0网络的User1
1.PC1向RA(网关)发送请求,告诉自己的私有IP地址和MAC地址,并且要求自己要到达192.168.10.0网络的User1主机
2.RA收到请求后,把PC1的源IP地址进行转换,变成内部全局地址,即公有地址202.16.58.1,并且为PC1制定一个随机产生的端口号(来识别某台主机),发送到Inter网
3.Inter网络收到了内部全局IP地址的请求,之间进行路由选择,被RB接收,RB通过查看RA发送过来的内部全局IP地址和端口号等信息,直接发送给192.168.10.0网络的网关
4.网关路由器RB收到了信息,根据对方发过来的目标主机信息,把数据传输给192.168.10.0网络的User1主机
5.根据ICMP协议,user1主机需要回应,对数据进行相应的处理,把数据封装后发送给网关
6.网关把user1的私有IP地址转换成外部局部IP地址,即公有地址202.16.58.2,通过这个公有地址,转发到路由器RA
7.RA收到数据包,查看自己缓存里的对应的主机和端口,并对192.168.1.0网络的PC1进行转发
思考:如果两个局域网的主机网络是一样的怎么办呢?
这样就构成了地址交叉,我们知道,在一个网络或者子网中,IP地址一样会产生冲突,就那上图来说把,假如192.168.10.0网络也是192.168.1.0网络,两个公司合并了,那该怎么去解决这个IP冲突呢?
其原理和上述原理一样,只不过多了个地址交叉的过程,在这里两个网关,其中的一个充当一个善意的欺骗者,告诉网络中一个假的消息,其实自己是很清楚的,只是把自己当成了一个代理作用,帮别人转发信息
转载:http://www.greensoftcode.net/techntxt/201142417546488788295
浙公网安备 33010602011771号