原話:通常tcp在接收到資料時並不立即傳送ack;相反,它推遲傳送,以便將 ack與需要沿該方向傳送的資料一起傳送(有時稱這種現象為資料捎帶 ack)。絕大多數實現採用的時延為 200 ms,也就是說, tcp將以最大200 ms 的時延等待是否有資料一起傳送。
tcp使用了乙個 200 ms的定時器,該定時器以相對於核心引導的 200 ms固定時間溢位。由於將要確認的資料是隨機到達的(在時刻 16.4, 474.3, 831.1等), tcp在核心的 200 ms定時器的下一次溢位時得到通知。這有可能是將來1~200 ms中的任何一刻。
意思是:tcp不可能這樣子幹活,比如乙個包接收到了,好,那從接收到這個包開始計時200ms,然後若期間有資料傳回去,則立刻攜帶ack一起傳送,如果到了200ms還沒有,那就只能傳送乙個不攜帶資料的ack了,也稱經受時延的ack。因為資料傳過來的時間是隨機的,如果為每乙個包都搞乙個計時器,那工作量就太大了。
所以,tcp會在核心搞乙個定時器,200ms的。資料報收到之後,如果下乙個定時器溢位(計算到200ms)的時候,還沒有什麼資料要跟著ack一起傳過去的話,那就只能單獨傳送乙個ack了(書上也稱其為乙個經受時延的ack,說實話,這個翻譯感覺一般)
原話:如果觀察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。在本例中我們乙個也沒有看到)。
那麼這個圖中svr4為啥沒經受時延的ack就好理解了,說明在接收到bsdi傳送的包,到svr4有資料傳送的這段時間中,svr4的200ms定時器沒有溢位,因為這段時間理論上小於16ms。要讓200ms的定時器恰好在這段時間觸發(剛好數到200ms),機率還是有點低的。
那要如何才能讓svr4傳送乙個確認時延的ack呢?就是svr4收到包,等著有資料捎帶ack一起傳到bsdi的時候,剛好!資料還沒來,定時器200ms來了!這時候就會單獨發給bsdi乙個ack,這個包裡沒有什麼資料,只有tcp首部帶乙個ack確認位。
解釋完畢,這本書有些翻譯看著還挺難懂。
TCP IP筆記 二 TCP IP簡介
上回,主要介紹了下協議和osi參考模型,並簡單了解下網路構成要素,這回該說說tcp ip了 網際網路進行通訊時,需要相應的網路協議,tcp ip原本就是為使用網際網路而開發定製的協議族。因此,網際網路的協議就是tcp ip,tcp ip就是網際網路的協議。知道了解tcp ip的重要性了吧,那就好好看...
TCP IP協議(零)TCP IP參考模型
2.傳輸過程 當兩台計算機通過tcp ip協議通訊的過程如下圖。乙太網驅動程式首先根據乙太網首部中的 上層協議 字段確定該資料幀的有效載荷 payload,指除去協議首部之外實際傳輸的資料 是ip arp還是rarp協議的資料報,然後交給相應的協議處理。假如是ip資料報,ip協議再根據ip首部中的 ...
TCP IP協議(一) TCP IP模型介紹
兩個裝置之間如何傳送資料?1.找到對方的ip。2.將資料傳送到對方指定的應用程式上,為了標識這些程式,給這些網路應用程式設定了數字標識,將這些數字標識叫做埠號,稱作邏輯埠。3.定義通訊規則,這些規則稱為協議,通用協議有tcp協議和udp協議。osi參考模型和tcp ip參考模型 tcp ip模型四層...