注:rto是由rtt計算得出的。
參考:
tcp中rtt的測量和rto的計算
tcp-ip詳解: rtt和rto的計算方法
tcp會將資料拆分成段進行傳輸,而將資料段依次傳輸效率是極低的,需要對資料進行批量傳送,因此tcp必須解決可靠傳輸和包亂序的問題。
tcp使用滑動視窗做流量控制與亂序重排。tcp的滑動視窗主要有兩個作用:
保證tcp的可靠性;
保證tcp的流控特性。
tcp報頭中的window
字段,用於接收方通知傳送方,自己還有多少緩衝區可以接收資料,因而傳送方可以根據接收方的處理能力來傳送資料,不會接收方處理不過來。
傳送端:
lastbyteacked
指向已經被接收端確認接收的最後乙個位元組序號;
lastbytesent
表明已經向接收端發出,但是還沒有接收到ack
回應;
lastbytewritten
指向上層應用向本地tcp緩衝區寫入的最後乙個位元組序號。
接收端:
lastbyteread
指向上層應用已經從本地tcp緩衝區讀完的最後乙個位元組序號;
nextbyteexpected
指向收到的最大sequence的最後乙個位元組序號,還沒有向傳送端傳送ack
回應;
lastbytercvd
指向已經接收到並且已經向傳送端傳送ack
回應的最後乙個位元組序號。
tcp傳送方的tcp快取區有四類:
其中第二類和第三類緩衝區被稱為傳送視窗。
當收到接受方對於原滑動視窗位元組的確認時,滑動視窗就會向後滑動。如上圖所示:
tcp接受方的tcp快取區有三類:
其中第二類被稱為接收視窗。
TCP滑動視窗
目前建立在tcp協議上的網路協議特別多,有telnet,ssh,有ftp,有http等等。這些協議又可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種...
TCP滑動視窗
假設a和b之間新建立了一條tcp連線。裝置a需要傳送一長串資料流,但裝置b無法一次全部接收,所以它限制裝置a每次傳送分段指定數量的位元組數,直到分段中已傳送的位元組數得到確認。之後,裝置a可以繼續傳送更多位元組。每乙個裝置都對傳送,接收及確認資料進行追蹤。tcpbuffer中資料可以分為以下四類 1...
TCP滑動視窗
tcp滑動視窗是用來控制流量的,避免擁塞的發生。滑動視窗又包括接收端滑動視窗和傳送端滑動視窗,下面我們簡單分析一下。上圖顯示的是接收緩衝區,其中接收視窗也在其中。接收視窗的大小是8,即4 12,此時由a可知,接收端下乙個預計接收序列號4,當接收端接收到4 7之後,滑動視窗就會右移,此時接收端預計接收...