目錄
IP協議首部格式
地址解析協議 ARP
逆向地址解析協議 RARP
網際控制報文協議 ICMP
網際組管理協議IGMP
IP 數據報首部
IP數據報首部格式:
最高位在左邊,記為0 bit;最低位在右邊,記為31 bit
版本:
占 4 位,指 IP 協議的版本目前的 IP 協議版本號為 4 (即 IPv4)
首部長度:
占4位,可表示的最大數值是15個單位(一個單位為 4 字節)因此IP 的首部長度的最大值是 60 字節
區分服務:
占8位,用來獲得更好的服務,在舊標准中叫做服務類型,但實際上一直未被使用過.1998 年這個字段改名為區分服務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的情況下都不使用這個字段
總長度:
占16位,指首部和數據之和的長度,單位為字節,因此數據報的最大長度為 65535 字節.總長度必須不超過最大傳送單元 MTU
標識:
占16位,它是一個計數器,用來產生數據報的標識
標志(flag):
占3位,目前只有前兩位有意義
-
MF
- 標志字段的最低位是 MF (More Fragment)
- MF=1 表示后面“還有分片”。MF=0 表示最后一個分片
-
DF
- 標志字段中間的一位是 DF (Don't Fragment)
- 只有當 DF=0 時才允許分片
片偏移:
占12位,指較長的分組在分片后某片在原分組中的相對位置.片偏移以 8 個字節為偏移單位
生存時間:
占8位,記為TTL (Time To Live) 數據報在網絡中可通過的路由器數的最大值,TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字 RFC 指定,當前值為 64.發送 ICMP 回顯應答時經常把 TTL 設為最大值 255
協議:
占8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據部分上交給哪個處理過程, 1表示為 ICMP 協議, 2表示為 IGMP 協議, 6表示為 TCP 協議, 17表示為 UDP 協議
首部檢驗和:
占16位,只檢驗數據報的首部不檢驗數據部分.這里不采用 CRC 檢驗碼而采用簡單的計算方法
源地址和目的地址:
都各占 4 字節,分別記錄源地址和目的地址
地址解析協議 ARP
說明:
ARP 每一個主機都設有一個ARP高速緩存(ARP cache),里面有所在的局域網上的各主機和路由器的IP地址到硬件地址的映射表
作用:
通過IP地址得知其物理地址
步驟:
注意:
- 網絡上其他主機並不響應 ARP 詢問,只有接收端主機接收到這個幀時,才向發送端主機做出這樣的回應
- ARP 是解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射問題.若所要找的主機和源主機不在同一個局域網上,那么就要通過ARP找到一個位於本局域網上的某個路由器的硬件地址,然后把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡.剩下的工作就由下一個網絡來做
- 從IP地址到硬件地址的解析是自動進行的,主機的用戶對這種地址解析過程是不知道的.
- 主機或路由器要和本網絡上另一個已知 IP 地址的主機或路由器進行通信,ARP 協議會自動地將該IP地址解析為鏈路層所需要的硬件地址
四種典型情況:
- 發送方是主機,要把 IP 數據報發送到本網絡上的另一個主機.這時用 ARP 找到目的主機的硬件地址
- 發送方是主機要 IP 數據報發送到其他網絡的主機.這時 ARP 找到本網絡上某個路由器硬件地址.剩下工作由這個路由器完成
- 發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機.這時用 ARP 找到目的主機的硬件地址
- 發送方是路由器,要把 IP 數據報轉發到另一個網絡上的一個主機.這時用 ARP 找到本網絡上的一個路由器的硬件地址.剩下的工作由這個路由器來完成
報頭格式:
說明:
- 硬件類型字段表示硬件地址的類型.它的值為1即表示以太網地址
- 協議類型字段表示要映射的協議地址類型.它的值為 0x0800 即表示 IP 地址
- 硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位.對於以太網上 IP 地址的 ARP 請求或應答來說,它們的值分別為 6 和 4
- 操作字段指出四種操作類型,它們是 ARP 請求(值為1)、ARP 應答(值為 2 )、RARP 請求(值為 3 )和 RARP 應答(值為 4 )
- 接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址( IP 地址)、目的端的硬件地址和目的端的協議地址.
參考鏈接:
http://blog.csdn.net/tigerjb/article/details/7351992
逆地址解析協議 RARP
定義:
逆地址解析協議 RARP 使只知道自己硬件地址的主機能夠知道其IP地址
用途:
這種主機往往是無盤工作站.因此 RARP 協議目前已很少使用
RARP 與 RAP:
網際控制報文協議 ICMP
目的:
為了提高 IP 數據報交付成功的機會
注意:
- 允許主機和路由器報告差錯情況和提供有關異常情況的報告
- ICMP不是高層協議,而是IP層的協議
- ICMP報文作為IP層數據報的數據,加上數據報的首部,組成 IP 數據報發送出去
- ICMP報文的前4個字節是統一的格式,共有三個字段:即類型,代碼和檢驗和.接着的4個字節的內容與ICMP的類型有關
種類:
- ICMP 差錯報告報文:
- 終點不可達
- 源點抑制(Source quench)
- 時間超過
- 參數問題
- 改變路由(重定向)(Redirect)
- ICMP 詢問報文:
- 回送請求和回答報文
- 時間戳請求和回答報文
報文格式:
ICMP地址掩碼請求和應答報文
ICMP時間戳請求和應答報文
ICMP不可達報文
ICMP回顯請求和回顯應答報文格式
ICMP超時報文
ICMP重定向報文
ICMP路由器請求報文格式
ICMP路由器通告報文格式
ICMP 源站抑制差錯報文格式
ICMP 類型:
不應發送ICMP差錯報告報文的情況:
- 對第一個分片的數據報片的所有后續數據報片都不發送ICMP 差錯報告報文
- 多播地址的數據報都不發送ICMP差錯報告報文
- 特殊地址(如127.0.0.0 或 0.0.0.0)的數據報不發送 ICMP差錯報告報文
網際組管理協議IGMP
報文格式:
作用:
它是TCP/IP 協議族中負責IP 組播成員管理的協議,用來在IP 主機和與其直接相鄰的組播路由器之間建立、維護組播組成員關系
功能:
當一台主機加入到一個新的組時,它發送一個IGMP消息到組地址以宣告它的成員身份,多播路由器和交換機就可以從中學習到組的成員.利用從IGMP中獲取到的信息,路由器和交換機在每個接口上維護一個多播組成員的列表
兩個階段:
- 加入:
- 當主機加入新的多播組時,向多播組的多播地址發送IGMP 報文,聲明自己要成為該組的成員.本地的多播路由器收到 IGMP 報文后,將組成員關系轉發給因特網上的其他多播路由器
- 詢問:
- 周期性地探詢本地局域網上的主機,以便知道這些主機是否還繼續是組的成員
- 注意:
- 因為組成員關系是動態的,因此本地多播路由器要只要對某個組有一個主機響應,那么多播路由器就認為這個組是活躍的
- 但一個組在經過幾次的探詢后仍然沒有一個主機響應,則不再將該組的成員關系轉發給其他的多播路由器
數據包:
IGMP 使用 IP 數據報傳遞其報文(即 IGMP 報文加上 IP 首部構成 IP 數據報),但它也向 IP 提供服務
具體措施:
- 在主機和多播路由器之間的所有通信都是使用 IP 多播
- 多播路由器在探詢組成員關系時,只需要對所有的組發送一個請求信息的詢問報文,而不需要對每一個組發送一個詢問報文。默認的詢問速率是每 125 秒發送一次
- 當同一個網絡上連接有幾個多播路由器時,它們能夠迅速和有效地選擇其中的一個來探詢主機的成員關系
- 在 IGMP 的詢問報文中有一個數值 N,它指明一個最長響應時間(默認值為 10秒)。當收到詢問時,主機在 0 到 N 之間隨機選擇發送響應所需經過的時延。對應於最小時延的響應最先發送
- 同一個組內的每一個主機都要監聽響應,只要有本組的其他主機先發送了響應,自己就可以不再發送響應了