【笔记】tcp/ip illustrated <4 ARP>

一、参考

二、名词解释

ARP:address resolution protocol 地址解析协议
RARP: reverse address resolution protocol 反向地址解析协议

三、内容

1. 概要

IP地址仅仅在TCP/IP协议栈中被使用,如果一个数据链路层是以太网或者令牌环,则它们有自己的寻址结构(48位)
网络中可能存在多种网络层协议同时运行
当以太网数据帧从某个主机发送到局域网中的另一台主机,48位的网络地址决定了接收数据帧的网络接口,设备驱动程序不会寻找IP数据包中的目标IP地址

由图:
(1)FTP客户端,调用gethostbyname函数,将主机名称转换为IP地址(32位),在DNS中称为转化函数,此转换过程需要使用DNS协议或者在小型网络中,直接查找/etc/hosts静态文件
(2)FTP客户端建立TCP连接,目标IP地址为(1)中获取的IP地址
(3)FTP客户端发送连接请求数据,通过IP协议,发送IP数据包
(4)如果目标主机和源主机在同一个本地网络中(以太网、令牌环、点到点连接),IP数据包可以直接发送到目标主机;如果目标主机位于远端网络中,IP路由获取下一跳路由地址,将IP数据包发送到下一跳,最终,IP数据包都会发送到本地网络中
(5)目标主机位于局域网中,需要将逻辑IP地址转为物理硬件地址(ARP过程),ARP也用于广播(多个主机和路由连接到一个网络中)
(6)ARP协议,广播ARP请求(实际为一个以太网帧)到网络中的每个主机,ARP请求中包含目标主机的IP地址,请求目的是接收请求的每个主机,判断自己IP地址是否是以太网帧中包含的目标IP地址,如果是,则返回硬件地址
(7)目标主机的ARP层,接收到广播,确认发送者请求自身硬件地址,目标主机返回ARP响应,其中包含IP地址和对应的硬件地址
(8)接收ARP响应
(9)发送IP数据包到目标主机

2. ARP缓存

ARP转换最有效的方式是在每个主机上保存转换缓存,缓存中包含IP地址和硬件地址之间的映射,每一条缓存记录有效期为20分钟(从记录创建开始计时)
arp -a 查看所有arp缓存记录

以太网地址为48位,展示成6个16进制数字,中间使用冒号分隔

3. ARP包结构

以太网头部开始的两个字段为以太网源目地址,如果目的地址全部都是1,表示为广播地址,电缆上以太网接口都可以接收到数据帧
frame type字段,值0x0806标识是ARP(请求或者是响应)

hard type字段,指定硬件地址类型,值1标识以太网类型地址
prot type字段,指定将要映射的协议地址的类型,IP地址值为0x0800

hard_size, prot_size指定硬件和协议地址占用的字节数量
(例如:ARP请求或者ARP响应,对于以太网地址和IP地址,hard_size, prot_size = 6, 4)
op字段指定该数据是ARP请求(值为1),ARP响应(值为2),RARP请求(值为3),RARP响应(值为4)
最后四个字段,分别是发送者硬件地址,发送者协议地址,接收者硬件地址,接收者协议地址,发送者硬件地址在以太网头部和ARP请求中都有记录

对于一个ARP请求,除了接收者硬件地址,其他字段都有值,当系统接收到ARP请求后,将填充硬件地址,然后转换接收者和发送者,将op字段值变为2,然后发送ARP响应

4. ARP缓存超时

伯克利实现的ARP缓存,对完整的ARP记录20分钟,不完整的ARP记录3分钟,多数伯克利实现,当重新使用记录中ARP时候,超时时间会被重新计时

5. 代理ARP

代理ARP允许路由器在一个网络中,接收另一个网络主机发送的ARP请求
使用代理ARP,ARP请求中的目的主机为路由器地址,但实际上目标主机是路由器后面的主机,路由器充当了目标主机的代理,作为数据包的中转

由上图:

(1)在子网140.252.1某个主机(例如:gemini)有一个IP数据包,发送到sun主机(主机IP: 140.252.1.29)
(2)gemini判断网络ID和子网ID,广播ARP请求到相同网络ID、子网ID的以太网中
(3)netb路由器,发现ARP请求中的IP地址属于其拨号主机之一,响应ARP请求,返回网络接口(子网140.252.1)的硬件地址
注意:每个拨号主机不需要使用唯一的IP地址来连接到路由器中,所有拨号主机使用140.252.1.183作为SLIP链接的目标地址

ARP代理,也称为 promiscuous ARP or the ARP hack
ARP代理可以隐藏两个物理网络,在两者之间起到路由作用

你可能感兴趣的:(network,arp)