ARP協議做了什麼事情?

2021-09-26 15:50:40 字數 1001 閱讀 8323

arp(address resolution protocol,位址解析協議)是將ip位址解析為乙太網mac位址(或稱實體地址)的協議。

在區域網中,當主機或其它網路裝置有資料要傳送給另乙個主機或裝置時,它必須知道對方的網路層位址(即ip位址)。但是僅僅有ip位址是不夠的,因為ip資料報文必須封裝成幀才能通過物理網路傳送,因此傳送站還必須有接收站的實體地址,所以需要乙個從ip位址到實體地址的對映。apr就是實現這個功能的協議。

假設主機a和b在同乙個網段,主機a要向主機b傳送資訊。具體的位址解析過程如下 

(1)主機a首先檢視自己的arp表,確定其中是否包含有主機b對應的arp表項。如果找到了對應的mac位址,則主機a直接利用arp表中的mac位址,對ip資料報進行幀封裝,並將資料報傳送給主機b。

(2)如果主機a在arp表中找不到對應的mac位址,則將快取該資料報文,然後以廣播方式傳送乙個arp請求報文。arp請求報文中的傳送端ip位址和傳送端mac位址為主機a的ip位址和mac位址,目標ip位址和目標mac位址為主機b的ip位址和全0的mac位址。由於arp請求報文以廣播方式傳送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機b)會對該請求進行處理。

(3)主機b比較自己的ip位址和arp請求報文中的目標ip位址,當兩者相同時進行如下處理:將arp請求報文中的傳送端(即主機a)的ip位址和mac位址存入自己的arp表中。之後以單播方式傳送arp響應報文給主機a,其中包含了自己的mac位址。

(4)主機a收到arp響應報文後,將主機b的mac位址加入到自己的arp表中以用於後續報文的**,同時將ip資料報進行封裝後傳送出去。

當主機a和主機b不在同一網段時:

主機a就會先向閘道器發出arp請求,arp請求報文中的目標ip位址為閘道器的ip位址。當主機a從收到的響應報文中獲得閘道器的mac位址後,將報文封裝並發給閘道器。如果閘道器沒有主機b的arp表項,閘道器會廣播arp請求,目標ip位址為主機b的ip位址,當閘道器從收到的響應報文中獲得主機b的mac位址後,就可以將報文發給主機b;如果閘道器已經有主機b的arp表項,閘道器直接把報文發給主機b

OkHttp 為我們做了什麼事情

1.提供了對http2和spdy的支援,共享同乙個主機的套接字連線。2.若http2和spdy不可用,提供連線池復用連線。3.預設gzip壓縮傳輸內容。4.快取響應。5.自動重連乙個主機的多個ip位址。引申問題,http2和spdy做了什麼 spdy是對http1.x的優化,http2是http1....

handler傳送訊息之後做了什麼事情。

首先來看handler發訊息的幾個方式 handler提供了好幾個傳送訊息的方式。post系列和sendmessage系列都是差不多的最終都會呼叫sendmessageattime 函式 這裡用post系枚舉例 handler.post runnable r 入參是乙個runnable。看看裡面做了...

7 30測試沒什麼事情,自學

python 識別符號 第乙個字元必須是下劃線或者是字母 大小寫 其他由字母 大小寫 下劃線 數字組成 注 1.python對大小寫非常敏感 myname 和myname是兩個不同的識別符號 2.不需要宣告或定義資料型別 注釋 單行 print hello,world 多行 i 5 print i ...