数据是如何通过外网找到内网主机的

  • 详细内容
TCP /IP 内外网通信外网是如何把信息返回到内网指定IP及局域网的电脑指定IP的呢? http请求后外网信息如何返回到局域内网的指定电脑的
来源:http://www.greensoftcode.net/   发布日期:2011-04-24      点击次数:8040 发布者IP:218.25.20.72

例如:我内网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

posted @ 2019-03-13 11:24  软件匠工  阅读(1636)  评论(0)    收藏  举报