TCP/IP协议详解卷一:Chapter4 Chapter5 笔记
- Chapter 4 ARP:地址解析协议
-
- 4.4节 ARP的分组格式
- 4.5节 ARP举例
- Chapter 5 RARP:逆地址解析协议
-
- 5.3节 RARP举例
Chapter 4 ARP:地址解析协议
地址解析协议 = Address Resolution Protocol = ARP
ARP为IP地址到对应的硬件地址之间提供动态映射。这个过程是自动完成的,一般应用程序用户和系统管理员不必关心。
硬件地址
硬件地址 = 物理地址(Physical Address) = MAC地址(Media Access Control Address) = 局域网地址(LAN Address) = 以太网地址(Ethernet Address);
硬件地址长度为6个字节,即48bit。通常表示为12个16进制数,每两个数之间用冒号隔开。例如08 : 00 : 20 : 0A : 8C : 6D。
ARP高速缓存
每个主机上都有一个ARP高速缓存,存放了最近Internet地址到硬件地址之间的映射记录。
高速缓存中的每一项的生存时间大概为20分钟。可以用 arp -a 命令查看高速缓存中的所有内容。
4.4节 ARP的分组格式
用于以太网的ARP请求或应答分组格式 = 14字节以太网首部 + 28字节ARP请求/应答
以太网首部 = 6字节以太网目的地址 + 6字节以太网源地址 + 2字节帧类型
其中:
目的地址为全1的是广播地址;
ARP请求/应答的帧类型是0x0806。
ARP请求/应答 = 2字节硬件类型 + 2字节协议类型 + 1字节硬件地址长度 + 1字节协议地址长度 + 2字节op + 6字节发送端以太网地址 + 4字节发送端IP地址 + 6字节目的以太网地址 + 4字节目的IP地址
其中:
硬件类型:以太网地址用值1表示;
协议类型:IP地址用值0x0800表示;
硬件地址长度 = 6个字节,协议地址长度 = 4个字节;
操作字段op:ARP请求 = 1,ARP应答 = 2,RARP请求 = 3,RARP应答 = 4;
发送端(或目的)以太网地址(硬件地址);
发送端(或目的)IP地址(协议地址)。
4.5节 ARP举例
tcpdump命令
第一行是一个ARP请求,其中:
09:11:22.642008 对应输出的时间戳;
0:0:c0:6f:2d:40 对应源端主机的硬件地址;
ff:ff:ff:ff:ff:ff 对应目的端主机的硬件地址(此处是一个以太网广播地址);
arp字段说明此数据帧是一个ARP请求或应答。其后的数字60指的是以太网数据帧的长度;
arp who-has svr4 表示作为ARP请求的这个数据帧中的目的IP地址是主机svr4的地址;
tell bsdi 表示发送端的IP地址是主机bsdi的地址。
第二行是一个ARP应答,其中arp repl 之后打印出了响应者的主机名(svr4)和硬件地址。此时svr4通常已经将ARP请求端(bsdi)的硬件地址和IP地址存入其ARP高速缓存。
第三行是一个请求建立连接的TCP段,目的主机是svr4。
第四行是svr4发送第一段TCP报文。
Chapter 5 RARP:逆地址解析协议
逆地址解析协议 = Reverse Address Resolution Protocol = RARP
RARP被那些没有磁盘驱动器的系统使用(一般是无盘工作站或者X终端),需要系统管理员进行手动设置。
无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(以广播方式传送),请求某个主机通过RARP应答(以单播方式传送)响应该无盘系统的IP地址。
RARP的分组格式与ARP基本一致。主语差别在于RARP请求/应答的帧类型代码为0x8035,RARP请求的操作代码op = 3,应答的操作代码op = 4。
5.3节 RARP举例
在主机bsdi上运行RARP程序和tcpdump命令得到的输出:
第一行目的端硬件地址为ff:ff:ff:ff:ff:ff 代表RARP请求以广播方式传送;
第二行的RARP应答以单播方式传送,其中at sun字段表示该RARP应答包含主机sun的IP地址;
第三行表示主机sun发送一个TFTP读请求给文件8CFC0D21.SUN4C。其中十六进制 8C:FC:0D:21 = 140.252.13.33 是主机sun的IP地址,SUN4C = 系统类型。