
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地址