基于ARP分析一个数据报如何在同一子网和不同子网之间传输

Posted 狱典司

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于ARP分析一个数据报如何在同一子网和不同子网之间传输相关的知识,希望对你有一定的参考价值。

基于ARP分析一个数据报如何在同一子网和不同子网之间传输

1. 在同一个子网

假设主机A为源主机,要向目的主机B发送数据报:
(1)A要确定B的MAC地址:
1.1)主机A到自身ARP模块查ARP表,若有则取出映射;
1.2)若主机A中的ARP表没有主机B的IP到MAC的映射记录,则:

  • A构造一个ARP查询分组,其中内容为:(A的IP,A的MAC,B的IP,FF-FF-FF-FF-FF-FF),其中FF-FF-FF-FF-FF-FF是广播地址
  • A将此查询ARP分组广播到子网内所有的适配器(也可以说是所有的主机和路由器)中,每个收方适配器都将此ARP查询分组向上传递给ARP模块,这些ARP模块都将检查自己的IP与ARP查询分组中的IP是否相同;
  • 相同的一个(即主机B)将自己的IP和MAC地址作为源地址,A的IP和MAC作为目的地址封装成一个ARP响应分组,发送给主机A;
  • 主机A更新其ARP表;

(2)主机A(的适配器)将数据报封装进帧,并插入目的(即B的)MAC地址,将之发送。


2. 在不同子网

主机A:111.111.111.111要向主机B:222.222.222.222发送一个数据报:

  • 需要注意的是:该例子每台主机仅有一个IP和一个网络接口(一个网络接口对应一个适配器,一个适配器对应一个MAC地址),但连接两个子网的路由器有两个接口,故其有两个IP、两个适配器(两个ARP模块)即两个MAC地址。
  • 网络中每个适配器都有自己的MAC地址。

两主机处于不同子网,故A中的ARP表肯定没有B的IP->MAC的映射,但它有从A到路由器接口111.111.111.0的适配器MAC地址(说明这个接口与A同属一个子网),故:
(1)主机以路由器的MAC为目标MAC地址,以B的IP为目标IP发送数据报给路由器。
(2)在子网1上的路由器的适配器看到链路层帧是向它寻址的,因此将该帧一路上交至网络层;路由器在网络层中查路由表得到通往目标(主机B)IP的下一跳(即接口222.222.222.220),将该数据转发到接口222.222.222.220
(3)路由器接口222.222.222.220对应的适配器查ARP表,得到了主机B的MAC地址,将其插入封装了数据报的帧,发送给主机B。

以上是关于基于ARP分析一个数据报如何在同一子网和不同子网之间传输的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络复习之网络层

计算机网络复习之网络层

王道考研 计算机网络17 IP数据报 最大传送单元MTU IP地址 IPv4 子网划分 ARP协议 ICMP协议 移动IP

Linux基础入门之网络属性配置

复习笔记计算机网络之网络层

《TCP/IP入门经典》摘录--Part 3