路由器转发数据包过程详解

本文由 Andre tian 于 2014-7-4 8:18 Friday 发布在 数据通信技术 评论(1)

主机PC1向主机PC2发个数据包,中间经过B路由器,请问源地址和源MAC是怎么变化的?

答:就假设拓扑图是这个样子吧:PC1-----(B1-B2) -------PC2

B1和B2是路由器B上的两个接口, PC1和PC2是PC,由主机PC1向主机PC2发送数据包,那么在主机PC1形成的数据包的目的IP就是PC2的IP,源IP就是主机PC1的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是PC1的MAC地址。

转发过程:假如是第一次通信PC1没有PC2的ARP映射表

PC1在本网段广播一个数据帧(目的MAC地址为:FFFF:FFFF:FFFF:FFFF)帧格式为:

源MAC地址(PC1)

源IP地址(PC1)

FFFF:FFFF:FFFF:FFFF

目的IP地址(PC2)

由于PC2和PC1不在同一网段,路由器不转发广播帧。假设路由器B、C配置了到达PC2网段的路由。此时路由器给PC1回复一个应答数据包,告诉PC1自己的MAC地址就是PC1要通信的PC2主机的MAC地址。而此时PC1建立ARP映射表,将该MAC地址(即路由器的B1接口)与PC2的IP地址建立映射关系。实际上是路由器对其进行了“欺骗”。

其应答数据帧格式为:

源MAC地址(路由器B1)

源IP地址(PC2)

目的MAC地址(PC1)

目的IP地址(PC1)

而数据包在B1接口的时候其数据包的帧格式为:

源MAC地址(PC1)

源IP地址(PC1)

FFFF:FFFF:FFFF:FFFF

目的IP地址(PC2)

 

对于路由器B同样建立了自己的ARP映射表:将PC1的MAC地址与PC1的IP地址映射。

数据包在流出B2接口的时候其数据包的帧格式为:

源MAC地址(路由器B2)

源IP地址(PC1)

FFFF:FFFF:FFFF:FFFF

目的IP地址(PC2)

 

PC2所在的网段各主机将自己的IP地址与数据包中的目的IP地址比对。若符合则将自己的MAC地址替换上广播MAC地址,并回复该数据帧:

源MAC地址(PC2)

源IP地址(PC2)

目的MAC地址(路由器B2)

目的IP地址(PC1)

路由器收到该数据包的时候,由于已经建立了ARP映射表,一方面路由器将储存在映射表中的对应关系调出来。将PC1的MAC地址覆盖路由器B2接口的MAC地址。另一方面路由器更新ARP映射表,将PC2的MAC地址与PC2的IP地址映射。

此时流出路由器B1接口的数据包的帧格式为:

源MAC地址(PC2)

源IP地址(PC2)

目的MAC地址(PC1)

目的IP地址(PC1)

之后PC1收到该数据帧。通信建立。同时更新ARP映射表,将PC2的MAC地址与PC2的IP地址建立对应关系。

此后每次通信时由于PC1要与PC2通信时。由于PC1已经建立了到PC2IP地址的ARP映射,所以下次要通信时直接从本地ARP调用。

你想建一个跟《易玩稀有》类似的网站吗?

大家对以上内容的评论:

Andre tian by 2014-09-09 09:46
这里要提到路由器的功能,他的转发机制是独立的,仅限于单个路由器的,即下一跳转发,数据包进入到路由器后,判断下一跳,找到出口,出去时要打上下一跳的MAC地址,所以要是没有下一跳数据包就无法转发。

发表评论:

   

    验证码

支持Ctrl+Enter提交

关于本站  |  畅学网  |  手机版  |  空间支持  |  RSS信息  |  趣味OS  |  QQ交流  |  版权声明 | 豫ICP备 10211463号-1

All Rights Reserved. Powered by Emlog & Themes by ewCEO.com  
当前模板可售并承接各种定制服务
回到顶部