網絡層實現數據包的選路和。
WAN(廣域網)通常使用眾多分級的路由器來連接分散的主機或LAN。因此通信的兩台主機一般都不是直接相連的,而是通過中間節點(路由器)連接的。網絡層的任務就是選擇這些中間節點,確定兩台主機間的通信路徑。同時,網絡層對上層協議隱藏了網絡拓撲連接的細節,使得在傳輸層和網絡層應用程序看來,通信雙方是直接相連的。
IP協議(因特網協議):根據數據包的目的IP地址來決定如何投遞他。如果數據包不能直接發送給目標主機,那么IP協議就為他尋找合適的下一跳路由器,並將數據包交付給該路由器轉發,多次重復這一過程,數據包最終到達目標主機,或者由於發送失敗而被丟棄。
IP為上層提供無狀態,不可靠,無連接的服務。
無狀態:IP通信雙方不同步傳輸數據的狀態信息,因此所有IP數據報的發送,傳輸和接收都是相互獨立的,沒有上下文的關系。
(缺點:無法處理亂序和重復的IP數據報。只能交給上層來處理)
(優點:簡單,高效,無需為保持通信的狀態而分配一些內核資源,也無需每次傳輸數據時都攜帶狀態信息)
無連接:IP雙方都不長久的維持對方的任何信息,這樣,上層協議每次發送數據的時候都必須明確指定對方的IP地址。
不可靠:IP協議不能保證IP數據報准確的到達接收端,只能承諾盡最大努力。很多情況都能導致IP數據報發送失敗。比如:某個中轉路由發現IP數據報在網絡上存活的時間 太長那么將他丟棄,並返回一個ICMP錯誤消息(超時錯誤)給發送端。因此,使用IP服務的上層協議需要自己實現數據確認,超時重傳等機制達到可靠傳輸的目的。
IPV4頭部:
4位版本號:IPV4 是4;
4為頭部長度:2^4-1=15*4=60字節。頭部20字節,可選部分40字節。
8位服務類型:3位優先權字段忽略,
1位保留字段;
4位TOS字段;最小延時,最大吞吐量,最高可靠性,最小費用。最多保留一位。
16位總長度:2^16-1.指整個IP數據報的總長度以字節為單位,因此IP數據報的最大長度為65535(2^16-1),由於MTU的限制,超過MTU的數據報將被分片。
16位標識:唯一的表示主機發送的每一個數據報,初始值由系統隨機生成,每發送一個數據報其值加1,該值在數據報分片時被復制到每個分片中,因此同一個數據報的所有分片都有相同的標識符。
3位標志:第一位保留;
第二位,禁止分片,如果設置了這個位IP模板將不對數據報進行分片,在這種情況下,如果IP數據報長度超過了MTU,IP模板將丟棄該數據報並返回一個ICMP差 錯報文。
第三位表示更多分片,除了數據報的最后一個分片外,其他分片都把他設置為1.
13位分片轉移:是分片相對原始IP數據報開始出的偏移,實際的偏移是該值左移3位,即乘8后得到的由於這個原因,除了最后一個分片外,每個IP數據報的數據部分的長度必須是8的倍數。
8位生存時間(TTL)是數據報到達目的地之前允許經過的路由器跳數,發送端一般設置為64,每經過一個路由器就減1,當TTL被減為0時,路由器將丟棄數據報,並向源端發送一個ICMP差錯報文,TTL可以防止數據報陷入路由循環。
8位協議:用來區分上層協議,ICMP 1,TCP 6,UDP 17;是1700的一個子集。
32位源/目的端IP地址
可選字段40字節:
記錄路由:告訴數據報途徑的所有路由器都將自己的IP地址填入IP數據報頭,可以跟蹤數據報的傳遞途徑。
時間戳:告訴路由器都將數據報被轉發的時間填入IP的選項部分,測量途徑路由器之間數據報的傳輸時間。
IP分片:ip頭部的三個字段給IP分片和重組提供了足夠的信息:數據報標識、標志和片偏移。一個IP數據報的每個分片都有自己的IP頭部,他們具有相同的標識符,但具有不同的偏移值,並且除了最后一個分片,其他分片都將設置MF標志,此外每個分片的的IP頭部總長度字段將被設置為該分片的長度。
以太網的MTU是1500字節。
考慮用IP數據報分裝一個長度為1481字節的ICMP報文(包括8字節的ICMP頭部,其數據部分為1473字節),則該數據在使用以太網傳輸時必須被分片。
IP路由:
IP轉發:
重定向:ICMP重定向報文。ICMP重定向報文的類型值是5,代碼段有四個可選值,用來區分不同的重定向分類。主機重定向,其代碼值為1,網絡重定向,代碼值為0.
ICMP重定向報文的數據部分含義很明確,他給接收方提供兩個信息:
1》 引起重定向的IP數據報的源端IP地址;
2》 應給使用的路由器的IP地址
ICMP協議(因特網控制報文協議),主要用於檢測網絡連接。
8位類型字段用於區分報文類型。
ICMP報文分為兩大類:
一類是差錯報文,主要用來回應網絡錯誤,比如目標不可到達(類型值為3)和重定向(類型值為5);
另一類是查詢報文,主要用來查詢網絡信息,比如ping程序就是使用ICMP報文查看目標是否可到達(類型值為8)。
8位代碼字段進一步細分不同的條件。比如重定向報文使用代碼值0表示對網絡重定向,代碼值1表示對主機重定向。
16位校驗和字段對整個報文(包括頭部和內容)進行循環冗余校驗,以檢驗報文是否在傳輸過程中是否損壞。