【TCP-IP详解卷一:协议】ch4 ARP:地址解析协议

1. ARP简介

为IP地址到对应的硬件地址之间提供动态映射(该过程自动完成)。

2. ARP操作过程举例

在这里插入图片描述

注意:

  1. 如果目的主机是在以太网中的话,发送端必须将32位的IP地址转换成48位的以太网地址。因为网络接口有一个48位的硬件地址用于标识不同的以太网或令牌环网络接口,在硬件层次上进行的数据帧交换必须有正确的接口地址,而TCP/IP有自己的32位的IP地址,只知道主机的IP地址无法让内核发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据。
  2. 点对点链路不使用ARP,设置这些链路时必须告知内核链路每一端的IP地址。

3. ARP高速缓存

存放最近Internet地址到硬件地址之间的映射记录,每一项的生存时间一般为20min,ARP高速缓存是ARP能够高效运行的关键。
可以使用arp(8)命令来检查。
在这里插入图片描述

4. ARP分组格式

在这里插入图片描述

  1. 硬件类型字段值为1表示硬件地址的类型为以太网地址
  2. 协议类型字段值为0x0800(与包含IP数据报的以太网数据帧中的类型字段的值相同)表示要映射的协议地址类型为IP地址
  3. 硬件地址长度字段和协议地址长度字段均以字节为单位,对于以太网上IP地址的ARP请求或应答来说,两者的值分别为6和4
  4. 操作字段值为1表示ARP请求,值为2表示ARP应答,值为3表示RARP请求,值为4表示RARP应答
  5. 一个ARP请求,除了目的端硬件地址外的所有字段都有填充值,系统收到以本机为目的端的ARP请求报文后将硬件地址填入,然后用两个目的端地址分别替换两个发送端地址,并将操作字段置2,最后送回。

5. ARP举例

5.1 一般例子

在这里插入图片描述

5.2 对不存在主机的ARP请求

在这里插入图片描述

tcpdump命令的输出如下:
在这里插入图片描述注意:

  1. tcpdump命令输出的超时限制为29.5s,但从date命令检查到的时间可以发现,Telnet客户端的连接请求大约过了75s才放弃,实际上,大多数BSD实现将完成TCP连接请求的时间限制设置为75s
  2. 在线路上始终看不到TCP的报文段,能看到的是ARP请求,直到ARP应答返回时,TCP报文段才能被发送,因为此时才可能知道硬件地址(MAC地址)。因此如果用过滤模式运行tcpdump命令的话,只查看TCP数据,将没有任何输出。
5.3 ARP高速缓存超时设置

从BSD系统演变而来的系统一般将ARP高速缓存中的完整表项的超时值设为20min,将不完整表项的超时值设为3min,每次都是在访问表项时重设超时值。

6. ARP代理

6.1 定义

若ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,该过程就称作ARP代理或委托ARP。
也就是说,将连接两个网络的路由器看作目的主机的代理,使得发送端误以为路由器就是目的主机。
ARP代理的其他用途:通过两个物理网络之间的路由器互相隐藏物理网络,故ARP代理也称作混合ARP或ARP hack

6.2 举例

在这里插入图片描述执行ARP命令查看在同一子网上的netb和sun的硬件地址:
在这里插入图片描述注意:

  1. 拨号SLIP链路两端共用一个IP地址,路由器netb不需要知道拨号SLIP链路每一端的IP地址,它通过分组到达的串行线路接口来确定发送分组的拨号主机。
  2. ARP代理可以将数据报传送到路由器sun上,但要使得子网140.252.13上的其他主机能够收到数据报,我们需要对选路进行特殊处理,即,在网络140.252的某个地方制定选路表中的表项,令所有数据报的目的端是子网140.252.13或是子网上的某个主机,这样都指向了路由器netb,而netb知道如何将数据报传向目的端,即通过sun

7. 免费ARP

7.1 定义

主机发送ARP查找自己的IP地址,一般在系统引导期间进行接口配置时发生。

7.2 举例

在这里插入图片描述

7.3 作用
  1. 主机可以用它来确定是否有另一个主机设置了相同的IP地址,该请求如果收到回答的话就会在终端日志上产生一个错误消息警告系统管理员。
  2. 若发送免费ARP的主机正好改变了硬件地址,就可以使其他主机的高速缓存中旧的硬件地址进行更新。(主机收到的ARP请求的IP地址如果已经在自己的高速缓存中的话,就要用ARP请求中的发送端硬件地址对高速缓存中的内容进行更新)

8. arp命令

在这里插入图片描述

9. 小结

  1. ARP的一般操作
  2. 用arp命令对ARP高速缓存进行检查和操作
  3. ARP的特殊功能:委托ARP和免费ARP
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值