鏈路層:ARP和RARP命令arp -a/tcpdump -en


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









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM