ARP协议:
背景:数据链路层在进行数据封装时,需要MAC地址
作用:在已知目的IP地址获取目的MAC地址
工作范围:广播域,其报文不能穿越路由器,不能转发到其他广播域
ARP数据包格式:
ARP:
Hardware Type:硬件地址类型,一般值为1(以太网)
Protocol Type:;协议类型,一般为0x0800(IP协议)
Hardware Length:MAC地址长度,单位字节,一般为6(以太网)
Protocol Length:IP地址长度,单位字节,一般为4(IP地址)
Operation Code:操作类型,值1为ARP请求,2为ARP应答
Source Hardware Address:源MAC地址
Source Protocol Address:源IP地址
Destination Hardware Address:目的MAC
Destination Protocol Address:目的IP地址
ARP工作过程:
1.主机A通过ARP缓存表判断是否知道主机B的MAC地址
主机名>arp -a //查询主机A的ARP缓存表
表内信息包括:Internet Address(IP地址), Physical Address(MAC地址), Type(动态/静态)
缓存表默认时间为:20min
PS.初始表为空
2.缓存表内没有主机B的MAC地址,发送ARP请求报文
请求报文
(1)二层Ethernet_||封装:
源MAC:主机A的MAC
目的MAC:FF-FF-FF-FF-FF-FF(广播地址)
(2)ARP封装:
操作类型:值1,Request
目的IP:主机B的IP
源IP:主机A的IP
目的MAC:00-00-00-00-00-00(未知地址)
源MAC:主机A的MAC
3.主机B收到请求包,查看其目的IP与本机地址的一致性
4.一致,将源MAC加入自己的缓存表,后返回应答报文;不一致,不响应
响应报文:
(1)Ethernet_||封装;
源MAC:主机B的MAC
目的MAC:主机A的MAC
(2)ARP封装:
操作类型:值2,Reply
目的IP:主机A的IP
源IP:主机B的IP
目的MAC:主机A的MAC
源MAC:主机B的MAC
5.主机A收到响应报文,将主机B的MAC地址加入自己缓存表,Type为dynamic
其他应用:
1.ARP代理(Proxy ARP)
背景:主机A和主机B在不配置网关的情况下可以通信
要求:主机A和B在同一网段,可在不同物理网络
步骤:
(1).在路由器的主机一侧的端口开启ARP代理功能,接收IP广播包获取MAC地址
(2)开启ARP代理后,检查目的地址与源地址是否在同一网段,触发ARP代理功能
(3)路由器开始接收ARP报文,并处理
(4)收到主机A发送的ARP请求报文,请求主机B的MAC,路由器查找主机B路由。
(5)找到路由,则将自己的MAC地址封装到ARP响应报文返回给主机A,代替主机A与主机B通行。
若没找到,则不响应。
2.免费ARP
作用:IP地址变动时,检测IP地址是否冲突
①发送免费ARP报文:
(1)Ethernet_||封装;
源MAC:主机A的MAC
目的MAC:FF-FF-FF-FF-FF-FF(广播地址)
(2)ARP封装:
目的IP:主机A的IP
源IP:主机A的IP
目的MAC:00-00-00-00-00-00(未知)
源MAC:主机A的MAC
②收到响应报文,即冲突不使用