IP首部
IP協議是TCP/IP協議族中最核心的協議,所有的TCP、UDP、ICMP、IGMP數據都是以IP數據報格式傳輸的。
IP提供不可靠、無連接的服務。
不可靠:不能保證IP數據報能成功到達目的地。可靠性由上層(如TCP)提供。
無連接:IP並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。IP數據報可以不按發送順序接收。
IP數據報格式:
IP數據報用bit endian字節序傳輸。
(1)4位版本:表示版本號
(2)4位首部長度:首部占32bit字的數目。最大為15*32/8=60字節。普通IP數據報該字段值是5,也就是首部為5*32/8=20字節。
(3)TOS:3bit優先權字段(已忽略),4bitTOS子字段,標識最小時延(Telnet,Rlogin),最大吞吐量(FTP),最高可靠性 (SNMP),最小費用(NNTP,用戶網絡新聞)。4bit中只能置其中1bit.4bit均為0表明一般服務。
(4)16bit總長度字段:整個IP數據報的長度,單位是字節。最長可以是65535字節,但大多數鏈路層會對它進行分片。
(5)16位標識:唯一標識主機發送的每一分數據報,每發一份值加1,因為IP是無連接的,所以這個值在數據報重組時應該要被用到。
(6)TTL:設置了數據報可以經過最多的路由器數。每經過一個路由器就減1,到0就丟棄。
(7)先將檢驗和字段置0,對首部中美16bit進行二進制反碼求和,結果存在檢驗和字段中。當接收到一份數據報時,同樣對首部中沒16個bit反碼求和,若計算結果全1則檢驗正確。否則丟棄該數據包。ICMP,IGMP,UDP和TCP采用相同的檢驗和算法。
IP路由選擇
概念上,IP理由選擇是簡單的,若源主機和目的主機直接相連或者在一個共享網絡上,就直接將IP數據報送到目的主機,否則發往默認的路由器,由路由器轉發。
大多數用戶系統都可以配置成路由器。
IP層在內存中有一個路由表,當收到數據報並要對它進行發送時,要對表進行搜索。當數據報來自某個網絡接口時,IP會檢查目的地址是否為本機地址之一或者 是廣播地址,若是,則數據報被送到由IP首部協議字段規定的協議模塊中處理。若不是,則若主機IP層被設置為路由器功能,轉發數據報,否則丟棄。
IP路由表每一項都具有:目的IP地址,下一站路由地址,標志,為數據報傳輸指定的網絡接口
IP路由器完成功能(按序):
1. 搜尋路由表,找與目的地址完全匹配的表目。
2. 搜尋路由表,找與目的網絡號匹配的表木目。
3. 搜尋路由表 尋找默認表目。
若上面的步驟都沒有成功則返回“主機不可達”或“網絡不可達的錯誤”。
為一個網絡指定一個路由器而不需要為每個主機指定一個路由器,這樣可以縮小路由表的規模。
數據報中的目的IP地址始終不會發生變化,每個鏈路層可能具有不同的數據幀首部,而且鏈路層的目的地址始終指下一站的鏈路層地址。