拓扑描述:
设备 | 接口 | 接口IP地址 | 接口MAC地址 |
AR1 | GE 0/0/0 | 192.168.1.1 | 00e0-fca2-4aa1 |
AR2 | GE 0/0/0 | 192.168.1.2 | 00e0-fcef-6ead |
1.数据封装
当R1要访问R2时,需要根据TCP/IP模型进行依次的封装过程,应用层产生的原始数据叫PDU,经过下层协议的封装,最终通过传输介质,到达R2,每一层封装的信息都不相同。
应用层 | 原始数据----PDU |
传输层 | 封装TCP头部-----数据段 |
网络层 | 封装IP头部-----数据包 |
数据链路层 | 封装以太帧头部----数据帧 |
物理层 | 转换成二进制进行传输----比特流 |
工作中用来测试网络连通性最常用的就是ICMP协议中的ping命令,当R1 ping R2时,R1需要先进行数据的封装。
数据 | ICMP封装:ICMP头部 | IP封装:SIP-192.168.1.1,DIP-192.168.1.2 | 以太帧封装:SMAC-R1MAC,DMAC-? |
当进行二层封装时,R1并不知道R2的MAC地址,无法完成ICMP的完整封装过程,导致无法进行通信。
2.ARP协议
ARP——地址解析协议,它的功能是可以根据已知IP地址,去获取目的MAC地址。工作原理如下:
- R1访问R2,进行数据的封装,封装进行到二层,发现没有R2的MAC地址。
- R1查看本地ARP缓存表,发现没有R2的IP和MAC地址映射。查看ARP表命令:dis arp all或者dis arp | include 192.168.1.2。
- R1开始封装ARP,发送ARP request 广播请求
ARP request Sender IP:192.168.1.1 Sender mac:00e0-fca2-4aa1 Target ip:192.168.1.2 Target mac:00-00-00-00-00-00 | ethernet II SMAC:00e0-fca2-4aa1 DMAC:FF-FF-FF-FF-FF-FF |
- 以太帧的目的MAC地址用全F的广播地址代替,ARP报文中由于不知道R2的MAC地址,所以用全0补充,以比特流的形式发送出去。
- R2收到R1的ARP request报文,进行解封装,去掉物理层头部,查看以太帧的目的MAC地址是广播地址,所以接收,由于type字段是0x0806,所以拆掉二层头部交由ARP协议处理。
- 查看ARP头部信息,发现目的地址是自己的接口地址,并且获取到R1的IP和MAC,给R1回复单播ARP reply,同时将R1的IP和MAC缓存到本地ARP表中。
ARP reply Sender IP:192.168.1.2 Sender mac:00e0-fcef-6ead Target ip:192.168.1.1 Target mac:00e0-fca2-4aa1 | ethernet II SMAC:00e0-fcef-6ead DMAC:00e0-fca2-4aa1 |
- R1收到R2的ARP reply报文,经过解封装,获取到R2的MAC地址,将R2的MAC缓存到本地ARP表中,然后可以完成ICMP包的封装,进行数据转发。