ARP协议在同网段及跨网段下的工作原理
一、ARP在同网段下的工作原理
每台主机都有一个ARP列表, 记录着主机---MAC的一个对应,当源主机发送一个数据包(记录目标IP)到目标主机时, 会先查此MAC表是否存在该IP与MAC的地址,如果有,则直接将数据包发送到此MAC地址, 如果没有, 则向本网段发起一个ARP请求的广播包, 本网段所有主机都会收到到此广播包, 此广播包包含源主机的IP+MAC及目标IP, 网段中每台主机都会检查此ARP广播包中的目标IP是否与自己的IP一致, 如果不同则忽略并丢弃该广播包, 如果相同, 则目标主机会把源主机中的MAC和IP添加到自己的ARP列表中, 如果ARP表中存在该源主机的IP+MAC则将其覆盖, 然后该目标主机会给源主机发送一个ARP响应包, 告诉源主机自己是它要查找的MAC地址, 源主机收到这个响应包后, 源主机得到目标主机的IP+MAC,并会添加到源主机的ARP列表中, 并利用此信息开发数据的传输, 如果源主机一直没有收到目标主机的ARP响应数据包, 表示ARP查询失败
A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的MAC地址,于是A向10网段发送一个ARP请求广播(谁是192.168.10.2 ,请告诉192.168.10.1),当B收到该广播,就检查自己,结果发现和自己的一致,然后就向A发送一个ARP单播应答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。
二、局域网中跨网段主机间通讯
不同网段主机通讯时, 源主机会封装网关的MAC(通常为路由器)为目标地址, 然后源主机会将数据包发送给路由器, 后续路由器进行路由转发, 通过路由器的ARP解析目标IP的MAC地址, 再将数据包送达目的地, 具体过程如下:

路由器也相当于一个主机(PC) 也有自己的ARP表(IP+MAC的对应)
A给B发数据包 源为自己的IP+MAC 目标为B的IP 没有MAC 发现目标IP与源IP不在同一网段 则再封装网关为目标 但没网关MAC 则封装自己的MAC为源MAC, 目标MAC为全F的广播MAC地址 请求网关3.2的MAC 路由器(网关)收到广播包 则源3.1及源MAC写路由器 的MAC表 并回复一个应答包给源 封装有网关IP与MAC的单播包 给源 , 源记录网关MAC及网关IP的对应, 再封装数据包 源IP+源MAC(真实) 目标IP(真实,路网段) 目标MAC统统写网关MAC 将此数据包给网关转发
路由器收到封装有源IP+源MAC的数据后 看目标IP不是自己的 则查路由表 发送数据包到到目标网段的目标IP 但没有目标主机的MAC 则路由器会发送ARP请求查询B的MAC B单播回复B的MAC 网关会记录B的MAC 再封装正确的目标B的IP与MAC给B 最终的路由器的数据包为 源IP为A的IP 源MAC为路由器的MAC 目标IP与目标MAC为真实B的 再发送
综上在跨网段通信过程中有以下过程:
1、判断地址是否同一网段
2、查询目的IP地址的mac(发送arp请求)
此外需注意点:
1、ARP请求以广播发送、以单播回应
2、路由器隔离广播。每一个网段都是独立的广播域
3、跨越网段通信需要使用网关的mac地址
ps:如想深入分析,建议模拟环境,进行抓包操作,可以看到具体经历了哪些过程,有助于深入了解。

浙公网安备 33010602011771号