1. 程式人生 > >TCP/IP詳解卷一03

TCP/IP詳解卷一03

nbsp 計算 可靠 目的 cti 錯誤 同時 路由選擇 重傳

1.IP協議:不可靠(unreliable):不能保證IP數據報能成功到達目的地

     無連接(connectionless):IP並不維護任何關於後續數據報的狀態信息,每個數據報的處理是相互獨立的。IP數據報可以不按照順序接收。

2.命令:ifconfig和netstat

3.IP首部(20個字節):

    4位版本(IPv4)---4位首部長度(32bit的數目)---8位服務類型(TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用)---總長度字段(整個IP數據報的長度,以字節為單位)---16位標識(標識字段唯一地標識主機發送的每一份數據報,通常每發送一份報文值就會加1 )----3位標誌字段(        )---13位片偏移字段(         )----8位生存時間(TTL,生存時間字段設置數據報可以經過的最多路由器數,TTL的初始值由源主機設置(32或64),一旦經過一個處理它的路由器,它的值就會減一,當該字段的值為0時,就會被丟棄,並發送ICMP報文通知源主機)---8位協議字段(根據它可以識別是哪個協議向IP傳送協議) ----16位首部檢驗和字段(根據IP首部計算的檢驗和碼。它不對首部後面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼)---32位源IP地址----32位目的IP地址-----任選項

    註意:計算數據報的IP檢驗和:1。 檢驗和字段置為0。2。對首部中每個16bit進行二進制反碼求和,將結果存在檢驗和字段中。當收到一份IP數據報後,同樣對首部中每個16bit進行二進制反碼的求和。由於接收方在計算過程中包含了發送方存在的首部中的檢驗和,因此,如果首部在傳輸過程中沒有任何差錯,那麼接收方計算的結果應該全為1,如果不全為1(即檢驗和錯誤),那麼IP就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報並進行重傳。

4.IP路由選擇

  在一般的體制中,IP可以從TCP、UDP、ICMP和IGMP接收數據報並進行發送,或者從一個網絡接口接收數據報(待轉發的數據報)並進行發送。IP層在內存中有一個路由表。

  工作過程:當收到一份數據報並進行發送時,對該表搜索一次。當數據報來自某個網絡接口時,IP會首先檢查目的IP地址是否為本機的IP地址之一或者IP廣播地址。如果確實是這樣,數據報就被送到由IP首部協議字段所指定的協議模塊進行處理。如果數據報的目的不是這些地址,那麼,(1)如果IP層被設置為路由表的功能,那麼就對數據報進行轉發;否則,就會數據報被丟棄。

  路由表中的每一項包含的信息:

    (1)目的IP地址

    (2)下一站或者下一跳的路由器(next-hop router)

    (3)標誌(1。指明目的IP地址是網絡地址還是主機地址2。指明下一站路由器是否是真正的路由器的IP地址)

    (4)為數據報的傳輸指定一個網絡接口

IP路由選擇是逐跳地(hope-by-hope )進行的。需要完成以下功能:

    (1)搜索路由表,尋找能與目的IP地址完全匹配的表目

    (2)搜索路由表,尋找能與目的網絡號相匹配的表目

    (3)搜索路由表,尋找標為‘“默認(default)”的表目

  (4)如果以上操作都沒有被執行,就會返回一個“主機不可達”或者“網絡不可達”的錯誤。

  IP路由選擇的另一個基本特性:為一個網絡指定一個路由器,而不必為每一個主機指定一個路由器,從而極大地縮小了路由表的規模。

  IP路由選擇的關鍵點:

    (1)大多數主機和路由器可以用默認路由來處理任何目的,除非它在本地局域網上

    (2)數據報中的目的IP地址始終不發生任何變化,所有的路由選擇決策都是基於這個目的IP地址

    (3)每個鏈路層可能具備不同的數據幀首部,而且鏈路層的目的地址始終指向下一站的鏈路層地址。

5.子網尋址:將主機號再分成一個子網號和一個主機號,可以縮小Interest路由表的規模。

6.子網掩碼:

    6.1給定IP地址和子網掩碼以後,主機就可以確定IP數據報的目的是:(1)本子網上的主機(2)本網絡中其他子網中的主機(3)其他網絡上的主機

    6.2在給定兩個IP地址和子網掩碼後,IP路由選擇功能一直進行這樣的比較

7.特殊情況的IP地址

技術分享

 0:所有比特位全為0;-1表示所有比特位都為1;netid,subnetid和hostid分別表示不全為0或者全1的對應字段。子網號欄為空表示該地址並沒有進行子網劃分。

8.ifconfig命令

    ifconfig -a

    ifconfig (interface)

9.netstat命令

    netstat -i(打印出接口信息)

    netstat -n(打印出ip地址,不是主機名稱)

    netstat -in(每個接口的MTU,輸入分組數,輸入錯誤,輸出分組數,輸出錯誤,沖突以及當前輸出隊列長度) 

  

    

  

  

TCP/IP詳解卷一03