Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1193706
  • 博文数量: 146
  • 博客积分: 6619
  • 博客等级: 准将
  • 技术积分: 1621
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-29 14:06
文章分类

全部博文(146)

文章存档

2020年(1)

2019年(4)

2018年(3)

2017年(5)

2015年(5)

2014年(7)

2013年(5)

2012年(11)

2011年(15)

2010年(13)

2009年(14)

2008年(63)

分类: 网络与安全

2017-08-20 00:29:47

局域网A中主机A产生的数据包是如何发送至局域网B中的主机B的。下图展示了数据包从主机A中应用程序生成到转发到主机B的过程。

主机A的应用程序先生成应用层数据,应用层数据达到传输层后,传输层根据应用层协议类型,对应用层数据进行TCP或UDP封装,封装好的报文送至网络层进行网络层封装,网络层对数据进行封装时,要添加IP头,IP头中的源IP地址填写主机A的IP地址,目的IP填写主机B所在局域网B映射的B的外网IP地址。IP层数据包之后传输到数据链路层进行数据链路层的封装。一般来讲,局域网采用以太网的组网方式,因此数据链路层是根据MAC地址对帧数据进行转发的。主机A在数据传送开始是不知道主机B的MAC地址的,因此,①主机A会先发送ARP广播数据包至网络,请求主机B的MAC地址。②交换机A接收到ARP广播数据包后,先进行解封装,学习主机A的IP地址和MAC地址,接着对ARP包进行重新封装并继续广播至除接收端口外的所有端口。③路由器接收到该ARP广播数据包后,解封装ARP数据包,发现其中的目的IP地址为外网IP,此时,路由器A将ARP响应包的源MAC设置为自己的MAC地址,目的MAC设置为主机A的MAC地址并发送到交换机A。④交换机A接收到该ARP响应数据包后,发现目的MAC为主机A,因此直接将该ARP响应包转发至主机A。到此,主机A知道了发送数据到主机B需要封装的目的MAC地址。⑤主机A将数据包封装好后发送至交换机A。⑥交换机根据MAC地址将数据都发送至路由器A。⑦路由器A作为局域网A与外网的连接,它同时也要承担网络地址转换的工作,将接收的数据用映射好的外网IP作为源IP进行重新封装,之后将数据转发至外网。(根据NAT地址转换的规则,局域网地址转换为外网地址有三种方式:静态转换、动态转换、端口多路复用。)

外网数据如何被正确的转发至主机B中的过程和上述过程是对称的。

2015.11.16补充

这两天室友问我数据在网络上是怎么传播的,本以为很清楚了,巴拉巴拉给室友讲,结果在讲的过程中发现很多细节的东西还是说不清楚。果然是“绝知此事要躬行”啊,没有实际去跟踪或解析过数据包,了解的也都只是皮毛。今天去乐视面试,又被问到了数据在网络上的转发过程,还好庆幸当时室友问完赶紧去查了查。

一个是关于数据包传输过程中IP地址和MAC地址的变化:

IP地址在传输过程中不会发生改变,除非遇到NAT

MAC地址在传输过程中,在同一个广播域内不发生变化,跨广播域时发生变化。也就是在经过路由器的时候MAC地址会发生改变。

(http://www.cnblogs.com/hnrainll/archive/2012/11/23/2783697.html,这里讲的更清楚)


阅读(2189) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~