天天看點

速讀原著-TCP/IP(TCP經受時延的确認)第19章 TCP的互動資料流

第19章 TCP的互動資料流

19.3 經受時延的确認

在圖1 9 - 2中有一些與本節将要論及的時間有關的細微之處。圖 1 9 - 3表示了圖1 9 - 2中資料交換的時間系列(在該時間系列中,去掉了所有的視窗通告,并增加了一個記号來表明正在傳輸何種資料)。

把從b s d i發送到s r v 4的7個A C K标記為經受時延的A C K。通常T C P在接收到資料時并不立即發送A C K;相反,它推遲發送,以便将 A C K與需要沿該方向發送的資料一起發送(有時稱這種現象為資料捎帶 A C K)。絕大多數實作采用的時延為 200 ms,也就是說,T C P将以最大200 ms的時延等待是否有資料一起發送。

如果觀察b s d i接收到資料和發送A C K之間的時間差,就會發現它們似乎是随機的: 1 2 3 . 5、6 5 . 6、1 0 9 . 0、1 3 2 . 2、4 2 . 0、1 4 0 . 3和195.8 ms。相反,觀察到發送A C K的實際時間(從0開始)為:1 3 9 . 9、5 3 9 . 3、9 4 0 . 1、1 3 3 9 . 9、1 7 3 9 . 9、1 9 4 0 . 1和2140.1 ms(在圖1 9 - 3中用星号标出)。

這些時間之間的差則是 200 ms的整數倍,這裡所發生的情況是因為 T C P使用了一個200 ms的定時器,該定時器以相對于核心引導的 200 ms固定時間溢出。由于将要确認的資料是随機到達的(在時刻 16.4, 474.3, 831.1等),T C P在核心的200 ms定時器的下一次溢出時得到通知。這有可能是将來1~200 ms中的任何一刻。

速讀原著-TCP/IP(TCP經受時延的确認)第19章 TCP的互動資料流

如果觀察s v r 4為産生所收到的每個字元的回顯所使用的時間,則這些時間分别為 1 6 . 5、1 6 . 3、1 6 . 5、1 6 . 4和17.3 ms。由于這個時間小于200 ms,是以我們在另一端從來沒有觀察到一個經受時延的A C K。在經受時延的定時器溢出前總是有資料需要發送(如果有一個約為 16 ms等待時間越過了核心的 200 ms時鐘滴答的邊界,則仍可以看到一個經受時延的 A C K。在本例中我們一個也沒有看到)。

在圖1 8 - 7中,當為檢測逾時而使用500 ms的T C P定時器時,我們會看到同樣的情況。這兩個200 ms和500 ms的定時器都在相對于核心引導的時間處溢出。不論 T C P何時設定一個定時器,該定時器都可能在将來 1~200 ms和1~500 ms的任一處溢出。Host Requirements RFC聲明T C P需要實作一個經受時延的A C K,但時延必須小于500 ms。