把這三個協議放到一起學習是因為這三個協議處於同一層,
arp協議用來找到目標主機的
ethernet
網絡卡mac
位址,ip
則承載要傳送的訊息。資料鏈路層可以從
arp得到資料的傳送資訊,而從
ip得到要傳輸的資料資訊。
1.ip協議
ip協議是
tcp/ip
協議的核心,所有的
tcp,
udp,
imcp
,igcp
的資料都以
ip資料格式傳輸。要注意的是,
ip不是可靠的協議,這是說,
ip協議沒有提供一種資料未傳達以後的處理機制
--這被認為是上層協議
--tcp
或udp
要做的事情。所以這也就出現了
tcp是乙個可靠的協議,而
udp就沒有那麼可靠的區別。這是後話,暫且不提
1.1.ip
協議頭
如圖所示
挨個解釋它是教科書的活計,我感興趣的只是那八位的
ttl欄位,還記得這個欄位是做什麼的麼
?這個字段規定該資料報在穿過多少個路由之後才會被拋棄
(這裡就體現出來
ip協議包的不可靠性,它不保證資料被送達
),某個
ip資料報每穿過乙個路由器,該資料報的
ttl數值就會減少
1,當該資料報的
ttl成為零,它就會被自動拋棄。這個欄位的最大值也就是
255,也就是說乙個協議包也就在路由器裡面穿行
255次就會被拋棄了,根據系統的不同,這個數字也不一樣,一般是
32或者是64,
tracerouter
這個工具就是用這個原理工作的,
tranceroute的-m
選項要求最大值是
255,也就是因為這個
ttl在
ip協議裡面只有
8bit。
現在的ip
版本號是
4,所以也稱作
ipv4
。現在還有
ipv6
,而且運用也越來越廣泛了。
1.2.ip
路由選擇
當乙個ip資料報準備好了的時候,
ip資料報
(或者說是路由器
)是如何將資料報送到目的地的呢
?它是怎麼選擇乙個合適的路徑來"送貨
"的呢?
最特殊的情況是目的主機和主機直連,那麼主機根本不用尋找路由,直接把資料傳遞過去就可以了。至於是怎麼直接傳遞的,這就要靠
arp協議了,後面會講到。
稍微一般一點的情況是,主機通過若干個路由器
(router)
和目的主機連線。那麼路由器就要通過
ip包的資訊來為
ip包尋找到乙個合適的目標來進行傳遞,比如合適的主機,或者合適的路由。路由器或者主機將會用如下的方式來處理某乙個
ip資料報 如果
ip資料報的
ttl(
生命週期
)以到,則該
ip資料報就被拋棄。
搜尋路由表,優先搜尋匹配主機,如果能找到和
ip位址完全一致的目標主機,則將該包發向目標主機
搜尋路由表,如果匹配主機失敗,則匹配同子網的路由器,這需要
「子網掩碼
(1.3.)」
的協助。如果找到路由器,則將該包發向路由器。
搜尋路由表,如果匹配同子網路由器失敗,則匹配同網號
(第一章有講解
)路由器,如果找到路由器,則將該包發向路由器。
搜尋陸游表,如果以上都失敗了,就搜尋預設路由,如果預設路由存在,則發包
如果都失敗了,就丟掉這個包。
這再一次證明了,
ip包是不可靠的。因為它不保證送達。
1.3.
子網定址 ip
位址的定義是網路號
+主機號。但是現在所有的主機都要求子網編址,也就是說,把主機號在細分成子網號
+主機號。最終乙個
ip位址就成為
網路號碼
+子網號
+主機號。例如乙個
b210.30.109.134
。一般情況下,這個
ip位址的紅色部分就是網路號,而藍色部分就是子網號,綠色部分就是主機號。至於有多少位代表子網號這個問題上,這沒有乙個硬性的規定,取而代之的則是子網掩碼,校園網相信大多數人都用過,在校園網的設定裡面有乙個
255.255.255.0
的東西,這就是子網掩碼。子網掩碼是由
32bit
的二進位制數字序列
,形式為是一連串的
1和一連串的
0,例如:
255.255.255.0(
二進位制就是
11111111.11111111.11111111.00000000)
對於剛才的那個
b類位址,因為
210.30
是網路號,那麼後面的
109.134
就是子網號和主機號的組合,又因為子網掩碼只有後八
bit為
0,所以主機號就是
ip位址的後八個
bit,就是
134,而剩下的就是子網號碼
--109。
2. arp協議
還記得資料鏈路層的乙太網的協議中,每乙個資料報都有乙個
mac位址頭麼
?我們知道每一塊乙太網卡都有乙個
mac位址,這個位址是唯一的,那麼
ip包是如何知道這個
mac位址的
?這就是
arp協議的工作。
arp(
位址解析
)協議是一種解析協議,本來主機是完全不知道這個
ip對應的是哪個主機的哪個介面,當主機要傳送乙個
ip包的時候,會首先查一下自己的
arp快取記憶體
(就是乙個
ip-mac
位址對應表快取
),如果查詢的
ip-mac
值對不存在,那麼主機就向網路傳送乙個
arp協議廣播包,這個廣播包裡面就有待查詢的
ip位址,而直接收到這份廣播的包的所有主機都會查詢自己的
ip位址,如果收到廣播包的某乙個主機發現自己符合條件,那麼就準備好乙個包含自己的
mac位址的
arp包傳送給傳送
arp廣播的主機,而廣播主機拿到
arp包後會更新自己的
arp快取
(就是存放
ip-mac
對應表的地方
)。傳送廣播的主機就會用新的
arp快取資料準備好資料鏈路層的的資料報傳送工作。
乙個典型的
arp快取資訊如下,在任意乙個系統裡面用
「arp -a」命令:
inte***ce: 192.168.11.3 --- 0x2
internet address physical address type
192.168.11.1 00-0d-0b-43-a0-2e dynamic
192.168.11.2 00-01-4a-03-5b-ed dynamic
都會得到這樣的結果。
這樣的快取記憶體是有時限的,一般是
20分鐘
(伯克利系統的衍生系統)。
TCP IP詳解之IP協議ARP協議和RARP協議
tcp ip 詳解之ip 協議arp 協議和rarp協議 把這三個協議放到一起學習是因為這三個協議處於同一層,arp協議用來找到目標主機的 ethernet 網絡卡mac 位址,ip 則承載要傳送的訊息。資料鏈路層可以從 arp得到資料的傳送資訊,而從 ip得到要傳輸的資料資訊。1.ip協議 ip協...
TCP IP協議 ARP詳解
本文主要講述了arp的作用 arp分組格式 arp快取記憶體 免費arp和 arp。應用接受使用者提交的資料,觸發tcp建立連線,tcp的第乙個syn報文通過connect函式到達ip層,ip層通過查詢路由表 如果目的ip和自己在同乙個網段 當ip層的arp快取記憶體表中存在目的ip對應的mac位址...
TCP IP詳解之 ARP協議 和 RARP協議
arp功能 從邏輯internet位址 ip位址 到對應的物理硬體位址 乙太網位址 之間的轉換 arp工作原理 1 首先每個主機都會在自己的arp緩衝區中建立乙個arp列表,以表示ip和mac間的對應關係 2 當源主機要發資料時,先檢查arp列表中是否有對應ip位址的目的主機的mac位址。若有則直接...