《TCP/IP详解》学习笔记(三):IP协议、ARP协议
把這三個協議放到一起學習是因為這三個協議處于同一層,ARP 協議用來找到目標主機的 Ethernet 網卡 Mac 地址,IP 則承載要發 送的消息。數據鏈路層可以從 ARP 得到數據的傳送信息,而從 IP 得到要傳輸的數據信息。
?
IP 協議
IP 協議是 TCP/IP 協議的核心,所有的 TCP,UDP,IMCP,IGCP 的數據都以 IP 數據格式傳輸。要注意的是,IP 不是可靠的協議,這是 說,IP 協議沒有提供一種數據未傳達以后的處理機制--這被認為是上層協議--TCP 或 UDP 要做的事情。所以這也就出現了 TCP 是一個可靠的協議,而 UDP 就沒有那么可靠的區別。這是后話,暫且不提。
?
1IP 協議頭
如圖所示:
?
挨個解釋它是教科書的活,我感興趣的只是那八位的 TTL 字段,還記得這個字段是做什么的么?這個字段規定該數據包在穿過 多少個路由之后才會被拋棄 (這里就體現出來 IP 協議包的不可靠性,它不保證數據被送達),某個 ip 數據包每穿過一個路由器,該數 據包的 TTL 數值就會減少1,當該數據包的 TTL 成 為零,它就會被自動拋棄。這個字段的最大值也就是255,也就是說一個協議包也就 在路由器里面穿行255次就會被拋棄了,根據系統的不同,這個數字也不一 樣,一般是32或者是64,Tracerouter 這個工具就是用這個 原理工作的,tranceroute 的-m 選項要求最大值是255,也就是因為這個 TTL 在 IP 協議里面只有8bit。
現在的 ip 版本號是4,所以也稱作 IPv4。現在還有 IPv6,而且運用也越來越廣泛了。
?
2IP 路由選擇
當一個 IP 數據包準備好了的時候,IP 數據包(或者說是路由器)是如何將數據包送到目的地的呢?它是怎么選擇一個合適的路 徑來"送貨"的呢?
最特殊的情況是目的主機和主機直連,那么主機根本不用尋找路由,直接把數據傳遞過去就可以了。至于是怎么直接傳遞的,這 就要靠 ARP 協議了,后面會講到。稍微一般一點的情況是,主機通過若干個路由器(router)和目的主機連接。那么路由器就要通過 ip 包的信息來為 ip 包尋找到一 個合適的目標來進行傳遞,比如合適的主機,或者合適的路由。
路由器或者主機將會用如下的方式來處理某一個 IP 數據包:
- ?如果IP數據包的TTL(生命周期)已到,則該IP數據包就被拋棄。
- 搜索路由表,優先搜索匹配主機,如果能找到和IP地址完全一致的目標主機,則將該包發向目標主機
- 搜索路由表,如果匹配主機失敗,則匹配同子網的路由器,這需要“子網掩碼”的協助。如果找到路由器,則將該包發向路由器。
- 搜索路由表,如果匹配同子網路由器失敗,則匹配同網絡路由器,如果找到路由器,則將該包發向路由器。 搜索路由表,如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發包
- 如果都失敗了,就丟掉這個包。
這再一次證明了,ip 包是不可靠的。因為它不保證送達。
?
3子網尋址
IP 地址的定義是網絡號+主機號。但是現在所有的主機都要求子網尋址,也就是說,把主機號在細分成子網號+主機號。最終一個IP 地址就成為 網絡號碼+子網號+主機號。例如一個 B 類地址:210.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。
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”命令:
?
都會得到這樣的結果。這樣的高速緩存是有時限的,一般是20分鐘(伯克利系統的衍生系統)。
總結
以上是生活随笔為你收集整理的《TCP/IP详解》学习笔记(三):IP协议、ARP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kendns.exe是什么进程 ken
- 下一篇: 1.Intro to Deep Lear