tcp/ip 协议–arp协议
arp (address request protocal)地址解析协议是位于数据链路的协议,旨在获取目的IP对应的mac 地址
对于第一个sync包,到达IP 层之后,IP层通过查询路由表,对于目标IP的不同情况做不同处理:
- 目标IP 与源IP在同一网段
查看本机的arp 高速缓存表中是否存在目标IP对应的mac 地址,如果存在,直接封装数据包并转发。如果不存在,通过arp 广播包请求目标地址的mac,并用arp信息更新本地的arp 缓存表,最后通过IP数据包发送数据目标机器 - 目标IP与源IP 不在同一网段
查看本机的arp 高速缓存表中是否存在目标IP对应的mac 地址,如果存在,直接封装数据包并转发。如果不存在,通过arp 广播包获取默认网关的mac 地址,并用arp信息更新本地的arp 缓存表,最后通过IP数据包发送数据到网关
arp 请求协议格式:
字段1是ARP请求的目的mac,ff:ff:ff:ff:ff:ff代表广播包。fa:ff:ff:ff:ff:ff代表网关包
字段2是源mac地址。
字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。
字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。
字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。
字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。
字段8是操作类型字段,值为1:ARP请求;2:ARP应答;3:RARP请求;4:RARP应答。
字段9和10是源mac和源IP
字段11和12是目的端的mac地IP地址。