ARP是在以太网上面运用的一种IP地址到硬件地址映射的协议
1 ARP流程
列如 ftp bsdi 假定bsdi在以太网上
DNS解析器解析主机名字>>FTP发送请求端请求TCP用得到的IP地址建立链接>>TCP发送一个链接请求分段到远端的主机,利用上诉的IP地址发送一份IP数据报>>因为是以太网,发送端主机将32bitIP地址变化为48bit的以太网地址(这就是ARP的功能)>>发送一份ARP请求,以太网上有次地址的发送ARP应答>> 发起端再收到ARP应答时IP数据就可以发送了
注意!!点对点链路不使用ARP机制
2:ARP报文格式
以太网目的地址(6个字节)|以太网源地址(6个字节)|帧类型(0x0806代表ARP,2个字节)|硬件类型(以太网地址MAC地址)|协议类型(IP地址)|硬件地址长度(长度以字节为单位,ARP中代表MAC地址,数值为6,6个字节为48bit)| 协议地址长度(IP地址长度 数值为4,32bit)|op(操作字段,当arp得到一个值的时候就应该更改op字段为2)|发送段以太网地址(6个字节)|发送端IP地址
(4个字节)|目的以太网地址(6个字节)|目的IP地址(4个字节)
蓝色部分为以太网首部
绿色部分为ARP请求或者应答链路层协议以及常用命令介绍netstat1.1.2小节
3:代理ARP
当一个局域网的某台主机想要发送一份数据包,此时就应该经过某台服务器,这台服务器接口的
MAC就是代理ARP的地址,因为此MAC地址欺骗了主机将信息发送到了路由器上(根据链路层硬件地址)
在gemini上执行arp -a
可以看到net(140.252.1.183) at 0:80:ad:3:6a:80
sun(140.252.1.29) at 0:80:ad:3:6a:80
这证明了点对点链路之间不存在链路层中的以太网或者802.1数据报(只有这两种需要mac地址)
4:免费ARP,是在引导的时候查看有没有和自己相同mac地址的接口,如果有则进行日至报错
5:RARP逆地址解析协议
主要运用在无盘操作系统的引导上。知道了一个MAC地址,但是没有IP地址,请求网络上的主机给自己一个IP地址
tcpdump -e host name//命令详解//对链路层的抓包
14:26:31(是时间).092078(ID号码) 58:44:98:f8:a0:0c (oui Unknown) (MAC地址,oui是未知设备)> (表示发送方向)
0c:8b:fd:34:db:86 (oui Unknown), ethertype IPv4 (0x0800)(链路层数据报的种类), length 54(数据报长度是54): 112.83.122.49.http
> SmilieLion.34570: Flags [.], ack 1079(希望smile发送的下一个ack值), win 434(窗口大小是434), length 0(代表数据,减掉了各种包头,差值54)
tcpdump -e[n]//加入n就不将ip地址改为主机名
14:09:18.493852 0c:8b:fd:34:db:86 (oui Unknown) > 58:44:98:f8:a0:0c (oui Unknown), ethertype ARP (0x0806),
length 42: Reply SmilieLion is-at 0c:8b:fd:34:db:86 (oui Unknown), length 28(与上诉协议对照查看)
5:arp -a 查询自己缓存中的ARP地址