TCP/IP ARP协议
ARP 协议 — 将IP地址映射成物理地址
分组带上发送者和接收者地址
在帧的首部填上物理地址
问题描述,A和B进行通信
A —- B
Ia —- Ib
Pa —- Pb
一般问题
1 源和目标在同一网段
2 源和目标由路由器相连(跨多个网络)
物理地址/硬件地址 类型
1 | IPv4 总空间32位,无法容纳一个MAC地址 |
ARP Cache:改善ARP性能
先保存目标IP的物理地址,可以使得下一次不需要发起一次ARP请求
表项:
-> IP , MAC
-> TTY
维护:使用定时器(典型的生命期是20min,超时删去)
软状态:匿名(当信息发生改变/过时的时候,不会告知相关的节点)
缺点:延迟时间较长,例如在出现节点崩溃的情况需要等到节点不活跃时期(到生命期)
改进ARP:
- 被查询的机器若收到请求则添加到自己的Cache中,所有的本网的节点都收到ARP请求,发送者的地址信息则在本网站点中都更新
- 同时,机器在崩溃重启的时候向外发送一个ARP请求,此时原先的节点会对自己的表项做一个更新
关于地址映射:
1 ARP只是其中的一种方案,并非所有网络都需要此过程
2 ARP的解析属于底层技术,属于底层物理网络有关的部分
ARP 实现
ARP功能的分类
- 地址的映射
- 响应ARP请求
ARP过程中的一些分析
1 | 1 当用户发送一个报文的时候,需要对地址进行映射; |
ARP的封装关系
1 | 封装在链路层 帧的数据区中 |
ARP 报文格式
非定长格式
因为不同的物理网络报文的长度,格式不一样;网络层上的地址也有多种不同类型的地址,格式也可能不一样在以太网中的报文格式
Sender HA 6字节(物理地址)
Sender IP 4字节(IP地址)
Target HA (目标物理地址)
Target IP (目标IP地址)HARDWARE TYPE:以太网MAC地址,类型值为1
PROTOCOL TYPE:表示网络层的协议类型,以太网0x0800
OPERATION:报文类型1 :ARP请求 2 :ARP响应 3 :RARP请求 4 :RARP响应
自动缓存再检验
Jitter 抖动现象
1 | 指连续传输的分组从一个站传输到另一个站,接受分组的延迟时间有变化 |
ARP造成的抖动:
1 | cache表项中包含和cache表项中映射由于定时器超时失效;当失效时需要重新发起一次ARP请求需要额外的时间解析。 |
解决方法:early revalidation(早期再检验)
- 解决思路:
减少分组传输中的抖动:延迟时间的变化值 - 方案:
另外设置一个定时器(每个表项都设置一个):
重新验证定时器,超时间隔比原先计时器小一些,如果响应还存在,则重新复位计时器
RARP | RARP -> BOOTP -> DHCP
1 | 已知物理地址,求对应的IP地址(是一个反向的地址映射) |
ARP Cache 在3层交换机上的实现
- 目标:
减少ARP的流量 - 实现举例:
A向B发送一个ARP请求
交换机先收到A发的ARP请求,查询自己的Cache,若有B的物理地址则向A发送响应(相当于一个代理,一个节流的过程)
代理ARP
- 作用:
将一个IP网络映射到两个物理的网络地址(两个或多个不同的物理子网) - 使用范围:
应用于使用ARP的网络环境中 - 分析:
运行代理ARP的路由采用了一种说谎的方式
1 利用了ARP协议之间的信任
2 需要在地址绑定表中插入,在安装的时候合法性与一致性都存在问题
3 具体实现上的安全问题,例如Spoofing欺骗 - spoofing欺骗:
例如:三台机器A,B,C连在一个网络中,A和B通信,C是入侵者,C要截取A和B间的通信。C监听ARP请求,获取到A和B的IP地址和MAC地址,那么此时C可以向B发送ARP请求:IP地址是A的,MAC地址是C的;同样,发给A时IP地址是B,MAC地址是C的;(发送多次才能奏效);此时,促使了A和B修改了它们的ARP表项。所以A和B中的通信都经过C。 - 不同的IP地址对应一个同一个物理地址
优点:加进一个单独的路由器不会影响网络中的其他节点
缺点:1只用于ARP地址解析的场景下 2不适用于复杂的网络 3不支持合理的路由表(受控管理的规模有限)
IPv6 邻居发现协议
1 | 1 IP地址是邻居发现协议(NDP)中的一项功能 |
参考资料:
- INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER