ARP:
在链路层封装的首部存在目的硬件地址,但是我们只知道IP地址,,而以太网驱动程序需要知道目的端的硬件地址才能发送数据,而ARP协议可以得到IP地址与目的硬件地址的映射。
ARP协议的工作流程:
键入命令ftp 主机名的过程:
- 通过解析器(DNS系统)得到主机名对应的IP地址
- FTP客户端请求TCP建立IP连接
- 经TCP发送连接请求到远端主机(以后会提到)
- 经过IP层封装
- 图中的目的端与原主机在同一个子网下,如果不在一个子网下则要通过IP选路来确定下一站路由地址,并让其转发数据报。
(此时ARP得到的目的硬件地址是路由器的硬件地址)- 在该子网下广播ARP请求。
- 同一个子网下的主机都会收到该请求,并接收,与自己的IP地址比较,如果是发送给自己的则在向原主机发送一份ARP应答,里面包含自己的硬件地址,是单播的。如果和自己IP地址不同则丢弃。
- 源主机收到ARP应答,知道了目的硬件地址
- 链路层封装IP数据报,进行发送
注意:在点对点链路中因为没有类型字段所有是没有ARP协议的
ARP高速缓存:
我们通过ARP协议得到的硬件地址和IP地址的映射保存在ARP高速缓存中,生存时间为20分钟
我们可以通过ARP –a得到
ARP分组格式:
- 硬件类型:代表硬件地址的类型,1为以太网
- 协议类型:指出是ARP请求 ARP应答RARP请求 RARP应答中的哪一个 因为在以太网首部中的帧类型只能判断是ARP还是RARP,无法判断是请求还是应答
- 硬件地址长度和协议地址长度分别代表后面的以太网地址长度和IP地址长度。
ARPA举例:
我用telnet远程登录到另一台主机,并用wireshark抓包。
Windows下用到的接口
另一台主机
先arp -a看是否有缓存
接着我们telnet 192.168.1.104远程登录
登录成功. 我们看wireshark
通过以上截图 我们可以清楚的看到整个arp的过程,和书上的一模一样。
这是在同一个子网下的,不在同一个子网,则根据路由选路 硬件地址为到目的主机的相应路由器的硬件地址
免费ARP
主机通过广播免费arp来告诉其他收到此arp请求主机 更新该主机的mac地址,以防当该主机换网卡的时候导致硬件地址变更 却收不到其他主机发来的信息。(对方主机可能存在arp缓存)
RARP:逆地址解析协议
逆地址解析协议用做无盘机获取ip地址。由于路由器无法转发rarp协议,所有在每个子网下必须存在一个rarp服务器,来相应rarp请求。因此还有另一种BOOTP协议也可以用做相同的功能,留作后面介绍