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

TCP/IP詳解卷一06

端口號 unix系統 一份 diff 拷貝 重傳 廣播地址 三次 cmp

1.ICMP(Internet控制報文協議):用來傳送差錯報文以及其他需要註意的信息,ICMP報文通常被IP層或者更高層協議(TCP或者UDP)使用,一些ICMP報文把差錯報文返回給用戶進程。同時,ICMP報文是在IP數據報內部被傳送的。

2.ICMP報文的格式:(所有報文的前4個字節都是一樣的,但是剩下的其他字節則互不相同)

  類型字段(15個不同的值):以描述特定類型的ICMP報文。

  檢驗和字段(覆蓋整個ICMP報文),檢驗和是必須存在的?????(理解檢驗和算法,不會)

3.ICMP報文的類型(由類型字段和代碼字段共同決定):

  ICMP報文是查詢報文還是差錯報文。(當類型為17,代碼為0時表示地址掩碼請求;當地址為18,代碼為0,表示地址掩碼應答)

  那些情況不會導致ICMP差錯報文:(1)ICMP差錯報文(2)目的地址時廣播地址或者多播地址(3)作為鏈路層廣播的數據報(4)不是IP分片的第一片(5)源地址不是單個主機的數據報。

4.ICMP地址掩碼請求與應答:

  ICMP地址掩碼請求(用於無盤系統在引導過程中獲取自己的子網掩碼)

  BOOTP協議(無盤系統獲取子網掩碼)

  ICMP報文中的標識符和序列號字段由發送端任意選擇設定,這些值在應答中將被返回,這樣,發送端就可以把應答與請求進行匹配。(廣播的特性:發送主機也能通過某種內部環回機制收到一份廣播報文拷貝,必須包括發送主機在內)

  ICMP地址掩碼應答必須是收到請求接口的子網掩碼(這是因為多接口有不同的子網掩碼),地址掩碼來自環回接口。

5.ICMP時間戳請求與應答

  ICMP時間戳請求允許系統向另一個系統查詢當前的時間。(這種ICMP報文的好處是它提供了毫秒級的分辨率而rdate只能提供秒級的分辨率),但是,調用者必須通過其他方法獲知當時的日期(缺陷)。

  請求端填寫發起時間戳,然後發送報文。應答系統收到請求報文時填寫接收時間戳,在發送應答時填寫發送時間戳。

  ICMP報文中:發起時間戳(orig),接收時間戳(recv)以及發送時間戳(xmit),往返時間(rtt)(往返時間的值時收到應答時間值減去發送請求時的時間值),difference的值是接收時間戳值減去發起時間戳值。

  gateway(路由器)(當系統返回一個非標準時間戳值時,就用32bit時間戳中的高位來表示。)(不能計算發起時間戳和接收時間戳之間的時間差,單位不統一)

  NTP(網絡時間協議)

  獲取時間和日期的另一種方法:

    (1)以可讀的格式返回當前的時間和日期(telnet來驗證)

    (2)時間服務程序返回一個32bit的二進制數值,以秒為單位提供的日期和時間。

    (3)NTP(網絡時間協議)可以保證LAN或者WAN上的一組系統的時鐘誤差在毫秒級以內。

    (4)分布式時間服務(DTS)

    (5)Unix系統提供守護程序timed(8),來同步局域網上的系統時鐘。

6.ICMP端口不可達差錯(ICMP查詢報文-地址掩碼和時間戳查詢及應答)

  端口不可達報文(ICMP差錯報文):

  在UDP中,如果收到一份UDP數據報而目的端口與某個正在使用的進程不相符,那麽UDP返回一個ICMP不可達報文。

eg:技術分享

    在get命令後,一份UDP數據報就發送到主機svr4的8888端口。

    在UDP數據報送到主機之前,要先發送一份ARP請求來確定它的硬件地址。接著返回ARP應答,然後才發送UDP數據報。

    一個ICMP端口不可達差錯是立刻返回的。但是,TFTP似乎忽略了這個ICMP報文,然後繼續發送另一份UDP數據報。在客戶放棄之前重發了三次。

    註意:ICMP報文是在主機之間交換的,而不用目的端口號,而每個20字節的UDP數據報則是從一個特定端口(2924)發送到另一個特定端口(8888)。

技術分享

  ICMP的一個規則是:ICMP差錯報文必須包含生成該差錯報文的數據報IP收不,還必須至少跟該IP首部後面的8個字節。

    UDP首部中的內容是源端口號和目的端口號。在此時(由於將目的端口號發生了改變才會導致產生了ICMP端口不可達的差錯報文),接收ICMP的系統可以根據源端口號(2924)來將差錯報文與某個特定的用戶進程相關聯。

    TFTP客戶程序所采用不太好的超時重傳算法。(沒有TCP的超時重傳好用)

7.ICMP報文的4.4BSD處理

  在各個系統中,ICMP處理的方式是不相同的。

  類型17,代碼0,描述:地址掩碼請求,處理方法:內核產生應答(此時由內核進行處理)

  類型18,代碼0,描述:地址掩碼應答,處理方法:用戶進程(此時報文就被傳送到所有在內核中登記的用戶進程,以讀取接收到的ICMP報文;當不存在任何這樣的用戶進程,那麽報文就會被悄悄丟棄)

  

    

  

  

      

TCP/IP詳解卷一06