TCP/IP ARP协议

ARP 协议 — 将IP地址映射成物理地址

分组带上发送者和接收者地址
在帧的首部填上物理地址

问题描述,A和B进行通信
A —- B
Ia —- Ib
Pa —- Pb

一般问题
1 源和目标在同一网段
2 源和目标由路由器相连(跨多个网络)

物理地址/硬件地址 类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IPv4 总空间32位,无法容纳一个MAC地址

在IPv4上的地址映射举例:
1 proNET => 接口卡上的开关可以拨动,只有8bit
--> 直接地址映射
例如,在IPv4/IPv6中可以直接映射实现
配置方案:在IP地址的主机号部分进行一一对应

2 Ethernet => 48位物理地址,无法装载
--> 动态绑定法:
ARP协议:先向地址广播一个ARP请求,目标匹配自身IP地址响应ARP请求
跨网发生在每一个子网内

不直接广播IP地址方式的原因:
1 广播不会跨网
2 浪费资源
ARP采用广播方式开销大

ARP Cache:改善ARP性能

先保存目标IP的物理地址,可以使得下一次不需要发起一次ARP请求
表项:
-> IP , MAC
-> TTY
维护:使用定时器(典型的生命期是20min,超时删去)

软状态:匿名(当信息发生改变/过时的时候,不会告知相关的节点)
缺点:延迟时间较长,例如在出现节点崩溃的情况需要等到节点不活跃时期(到生命期)

改进ARP:

  • 被查询的机器若收到请求则添加到自己的Cache中,所有的本网的节点都收到ARP请求,发送者的地址信息则在本网站点中都更新
  • 同时,机器在崩溃重启的时候向外发送一个ARP请求,此时原先的节点会对自己的表项做一个更新

关于地址映射:

​ 1 ARP只是其中的一种方案,并非所有网络都需要此过程
​ 2 ARP的解析属于底层技术,属于底层物理网络有关的部分

ARP 实现

ARP功能的分类

  • 地址的映射
  • 响应ARP请求

ARP过程中的一些分析

1
2
3
4
5
6
7
8
9
1 当用户发送一个报文的时候,需要对地址进行映射;
ARP使用cache技术,如果在cache中能够找到地址对,就直接使用;如果找不到,则发送ARP请求。(在发送ARP请求后可能得不到响应,1 请求丢失,2 目标主机处于关机状态)
2 发送分组后,在地址解析成功之前分组先被存储到缓冲队列当中(即一个应用还在运行的过程中),如果系统上同时有多个应用都需要解析这样的地址,底层ARP模块要确保不能产生多个这样的请求。
3 当ARP响应返回的时候
3.1 需要对ARP Cache进行更新
3.2 上层等待传输的分组得到地址解析结果后,从队列中移除
4 收到ARP请求后,进行响应
4.1 从请求报文抽取发送方信息(发送方的IP地址和物理地址),更新本地Cache
4.2 处理分组(响应/丢弃)

ARP的封装关系

1
2
封装在链路层 帧的数据区中
报文TYPE : 0806H

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
2
3
指连续传输的分组从一个站传输到另一个站,接受分组的延迟时间有变化
当传输延迟很大时,对某些应用(多媒体应用)造成很大影响
所以,需要避免这种抖动。

ARP造成的抖动:

1
cache表项中包含和cache表项中映射由于定时器超时失效;当失效时需要重新发起一次ARP请求需要额外的时间解析。

解决方法:early revalidation(早期再检验)

  • 解决思路:
    减少分组传输中的抖动:延迟时间的变化值
  • 方案:
    另外设置一个定时器(每个表项都设置一个):
    重新验证定时器,超时间隔比原先计时器小一些,如果响应还存在,则重新复位计时器

RARP | RARP -> BOOTP -> DHCP

1
2
3
4
5
6
7
8
9
已知物理地址,求对应的IP地址(是一个反向的地址映射)

针对无硬盘系统:
本地的局域网安装一个RARP服务器,包含一个地址对的数据库,有管理员人工配置绑定表

以太网: ARP 0x0806
RARP 0x8035

应用场景:虚拟机从一个IP迁移到另一个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
2
3
4
5
6
1 IP地址是邻居发现协议(NDP)中的一项功能
2 在传输的时候封装在 ICMPv6中
3 一般在系统启动过程中执行NDP协议
4 一个节点需要周期性的连续的检测邻居的状态
5 使用多播
6 NDP使用solicited-node(被恳求节点)多播地址

参考资料:

  • INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER