學習使用Wireshark的讀書筆記
地址解析協(xié)議
網(wǎng)絡(luò)上的通信會使用到邏輯地址(IP地址)和物理地址(MAC地址)尖坤。邏輯地址可以使得不同網(wǎng)絡(luò)以及沒有直接相連的設(shè)備之間能夠進行通信屁魏。物理地址則用來在單一網(wǎng)段中交換機直接連接的設(shè)備之間進行通信。在大多數(shù)情況下泵三,正常通信需要這兩種地址協(xié)同工作。
我們假設(shè)這樣一個場景:你需要和你網(wǎng)絡(luò)中的一個設(shè)備進行通信草描,這個設(shè)備可能是某種服務(wù)器懂算,或者只是你想與之共享文件的另一個工作站。你所用來創(chuàng)建這個通信的應(yīng)用已經(jīng)得到這個遠程主機的IP地址(通過DNS服務(wù))株憾,也意味著系統(tǒng)已經(jīng)擁有用來構(gòu)建它想要在第3層到第7層中傳遞的數(shù)據(jù)包所需要的信息蝙寨。這時它所需要的唯一信息就是第2層包含目標主機MAC地址的數(shù)據(jù)鏈路層數(shù)據(jù)。
之所以需要MAC地址嗤瞎,是因為網(wǎng)絡(luò)中用于連接各個設(shè)備的交換機使用了內(nèi)容尋址寄存器(CAM)墙歪。這個表列出了它在每一個端口所有連接設(shè)備的MAC地址。當交換機收到一個指向特定MAC地址的流量贝奇,它會使用這個表虹菲,來確定應(yīng)該使用哪一個端口發(fā)送流量。如果目標的MAC地址是未知的掉瞳,這個傳輸設(shè)備會首先在它的緩存中查找這個地址届惋,如果沒有找到髓帽,那么這個地址就需要在網(wǎng)絡(luò)上額外的通信來解析了。
TCP/IP網(wǎng)絡(luò)(基于IPv4)中用來將IP地址解析為MAC地址的過程稱為地址解析協(xié)議(Address Resolution Protocol脑豹,ARP),它的解析過程只使用兩種數(shù)據(jù)包:一個ARP請求與一個ARP響應(yīng)衡查。
ARP頭
讓我們做個小實驗瘩欺,在局域網(wǎng)內(nèi)ping一個主機IP,假設(shè)是第一次ping拌牲,本機的ARP表并未緩存俱饿,可以通過arp -a
命令查看。
本機IP192.168.3.7塌忽,ping局域網(wǎng)內(nèi)192.168.3.5的主機拍埠,執(zhí)行以下命令:
ping 192.168.3.5
開始抓包分析。
ARP請求
上圖是一個ARP請求數(shù)據(jù)包土居,通過Wireshark的Packet Details面板中枣购,檢查以太網(wǎng)頭,來確定這個數(shù)據(jù)包是否是一個真的廣播數(shù)據(jù)包擦耀。這個數(shù)據(jù)包的目的地址是ff:ff:ff:ff:ff:ff:ff棉圈。這是一個以太網(wǎng)的廣播地址,所有發(fā)送到這個地址的數(shù)據(jù)包都會被廣播到當前網(wǎng)段中的所有設(shè)備眷蜓。這個數(shù)據(jù)包中以太網(wǎng)頭的源地址就是我的MAC地址分瘾。
在這個給定的結(jié)構(gòu)中,我們可以確定這的確是一個在以太網(wǎng)上使用IP的ARP請求吁系,從數(shù)據(jù)包的操作碼(opcode)為1可以得知德召。這個ARP的頭列出了發(fā)送方的IP(本機的IP 192.168.3.7)和MAC地址,以及接收方的IP地址192.168.3.5汽纤。我們想要得到的目標MAC地址上岗,還是未知的,所以這里的目的MAC地址填寫為00:00:00:00:00:00冒版。
ARP響應(yīng)
這是一個回應(yīng)ARP請求的響應(yīng)液茎,opcode現(xiàn)在是2表示這是一個響應(yīng)而不是請求。
發(fā)送方和接收方的地址發(fā)生了轉(zhuǎn)換辞嗡,重要的是現(xiàn)在數(shù)據(jù)包中所有的信息都是可用的捆等,也就是說我們現(xiàn)在有了192.168.3.5主機的MAC地址。
ARP緩存列表
執(zhí)行以下命令
arp -a
可以得知192.168.3.5及其對應(yīng)的MAC地址已經(jīng)被緩存续室。
無償?shù)腁RP
大多數(shù)情況下栋烤,一個設(shè)備的IP地址是可以改變的。當這樣的改變發(fā)生后挺狰,網(wǎng)絡(luò)主機中緩存的IP和MAC地址映射就不再有效了明郭。為了防止造成通信錯誤买窟,無償?shù)腁RP請求會被發(fā)送到網(wǎng)絡(luò)中,強制所有收到它的設(shè)備去用新的IP和MAC地址映射更新緩存薯定。
檢查上述數(shù)據(jù)包始绍,你會看見這個數(shù)據(jù)包是以廣播的形式發(fā)送,以便網(wǎng)絡(luò)上的所有主機都能收到它话侄。這個ARP頭的特點就是發(fā)送方的IP地址和目標IP地址是相同的亏推。當這個數(shù)據(jù)包被網(wǎng)絡(luò)中的其他主機接收到之后,它會讓這些主機更新映射表年堆,由于這個ARP數(shù)據(jù)包時未經(jīng)請求的吞杭,卻導致客戶端更新ARP緩存,所以會稱之為無償变丧。
我是咕咕雞芽狗,一個還在不停學習的全棧工程師。
熱愛生活痒蓬,喜歡跑步童擎,家庭是我不斷向前進步的動力。