TCP/IP协议 卷1 ARP

ARP

地址解析协议
因为物理硬件地址是48位(网卡,网线等链路层的设备传输的地址都是采用硬件地址6*8bit)
而IP是32bit地址
这样就需要将IP地址转换成硬件能够识别的地址(48bit)

##RARP
逆地址解析协议
相反,将48位链路层地址转换成IP地址的协议
RARP一般用于无盘工作站

在这里插入图片描述

例子:

ftp bsdi

步骤:

  1. ftp客户端调用域名转换函数(gethostbyname)将bsdi转换成IP地址。使用域名解析系统(DNS)或本机中的hosts文件
  2. FTP请求TCP用得到的IP地址建立连接(到了传输层)
  3. TCP发送分段数据到远端的FTP主机
  4. 如果目的主机在本地则直接发回目的主机。如果在远程网络上,则通过IP路由确认下一站的IP地址做转发。这时候链路层会使用ARP将IP地址转换成物理硬件地址
  5. ARP发送一份ARP数据帧至以太网上的每个主机(广播)
    在这里插入图片描述
  6. 目的主机的ARP层收到了该广播数据报,识别出他寻找的IP地址之后。于是就像这份ARP地址发一份应答。应答中包含了IP地址及其对应的硬件地址
  7. 源主机收到应答之后这条线就算是建立起来了。就可以进行数据报传送了

ARP的功能就是将32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射

点对点链路不实用ARP。因为在设置这些链路时必须告知系统内核链路的每一端的IP地址

ARP高速缓存

用来存放映射记录。存放时间一般是20分钟。从记录创建开始时计算
使用arp -a 看本机所有网卡上的记录
在这里插入图片描述
48bit地址用’-'号间隔
ARP高速缓存可以设置超时设置

ARP数据报的格式

在这里插入图片描述
以太网目的地地址全为1表示是广播地址
帧类型: 表示后面的数据类型,ARP请求或应答的类型是0x0806(还有RARP)
硬件类型表示硬件地址的类型,如果值为1则表示是以太网(还会有别的?)
协议类型表示要映射的协议地址 如果值是0x0800表示是IP协议地址
硬件地址长度协议地址长度:字节为单位 对于ARP请求来说是6和4。
op: 操作字段 指出4中操作类型(序号就是值):
1. ARP请求
2. ARP应答
3. RARP请求
4. RARP应答
后面4个就是按字面理解就完事了
在链路层的以太网数据帧中已经有了发送端的硬件地址
以太网数据帧分组格式传送门
这样在接受到一个ARP请求之后还需要将数据报的请求地址写到目的地址,op改成2发出去就完事了
以太网的数据帧要求长度是60字节。但是ARP的数据报时42接(28字节ARP数据和14字节的以太网帧头)。不够的部分填充

ARP代理

ARP请求是从一台主机发往另一台主机。这中间就会经过路由器之类的网络设备,而这些网络设备就能够应答这些请求,这个过程就是ARP代理。这样可以欺骗请求主机以为路由器就是目的主机,路由器就起到了中转转发的作用。
在这里插入图片描述

免费ARP

指主机发送ARP查找自己的IP,一般在引导期间进行的
在这里插入图片描述
通过广播的方式自己给自己发送请求。
作用:

  1. 检查网络上是否有与自己IP地址一样的主机。有的话就产生错误日志
  2. 如果主机更换了网卡。也刚好可以让网络中的其他主机更新ARP高速缓存中的地址
发布了239 篇原创文章 · 获赞 31 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/soulwyb/article/details/102913898