TCP的資料傳輸小結

2021-07-25 23:00:17 字數 1609 閱讀 8426

通常每乙個互動按鍵都會產生乙個資料分組,也就是說,每次從客戶傳到伺服器的是乙個位元組的按鍵(而不是每次一行)

通常tcp在接受到資料時並不立即傳送ack;相反,它推遲傳送,以便將ack與需要沿該方向傳送的資料一起傳送。絕大多數實現採用的時延為200ms,也就是說,tcp將以最大200ms的時延等待是否有資料一起傳送

tcp使用了乙個200ms的定時器,該定時器以相對於核心引導的200ms固定時間溢位。由於將要確認的資料是隨機到達的,tcp在核心的200ms定時器的下一次溢位時得到通知。

該演算法要求乙個tcp連線上最多只能有乙個未被確認的未完成的分組,在該分組的確認到來之前,不能傳送其他的小分組。相反,tcp收集這些小分組,並在確認到來時以乙個分組的方式發出去。該演算法的優越之處在於它是自適應的:確認到達的越快,資料也就發的越快。

通常使用隔乙個報文段確認的策略。即當乙個報文段被處理時,連線被標記為產生乙個經受時延的確認。如果時延定時器溢位前,下乙個報文段被處理完,那麼(兩個報文段的)確認立刻被傳送。

使用tcp的滑動視窗協議時,接收方不必確認每乙個收到的分組。在tcp中,ack是累積的——它們表示接收方已經正確收到了一直到確認序號減1的所有位元組。

如圖:提供的視窗即接收方通告的視窗,當傳送方收到乙個確認時,視窗的左邊沿向右移動,視窗的右邊沿是否向右移動取決於ack中通告的視窗大小,視窗大小是相對於左邊沿的。另外,視窗的左邊沿不可能向左移動,因為那樣意味著收到了乙個重複的ack,視窗的右邊沿不可能向左移動。

傳送方使用該標誌通知接收方將所收到的資料全部提交給接收程序。這裡的資料報括與push一起傳送的資料以及接收方tcp已經為接收程序收到的其他資料。

如果待傳送的資料將清空傳送快取,則大多數的源於伯克利的實現能夠自動設定push標誌。這意味著我們能夠觀察到每個應用資料寫的資料均被設定了push標誌,因為資料在寫的時候就立即被傳送。

如果在傳送方和接收方之間存在多個路由器和速率較慢的鏈路時,採用傳送方一開始便向網路傳送多個報文段就有可能出現一些問題。一些中間的路由器必須快取分組,並有可能耗盡儲存器的空間。

慢啟動演算法通過觀察到新的分組進入網路的速率應該與另一端返回的確認的速率相同而工作。

慢啟動為傳送方的tcp增加了另乙個視窗:擁塞視窗,當與另乙個網路的主機建立tcp連線時,擁塞視窗初始化為1個報文段。每收到乙個ack,擁塞視窗就增加乙個報文段。傳送方取擁塞視窗和通告視窗中的最小值作為傳送上限。擁塞視窗是傳送方使用的流量控制,而通告視窗是接收方使用的流量控制。擁塞視窗是一種指數增加的關係。

可以計算通道的容量為:

capacity(bit) = bandwidth(b/s) x round-trip time(s)

一般稱為頻寬時延乘積。這個值依賴於網路速率和兩端的rtt。接收方的通告視窗必須不少於這個數目,因為通告視窗限制了傳送方能夠傳送的段的數目。

tcp提供了「緊急方式」, 它使一端可以告訴另一端有些具有某種方式的「緊急資料」已經被放置在普通資料流中。另一端被通知這個緊急資料已經被放置在普通資料流中,由接收方決定如何處理。

可以通過設定tcp首部中的兩個欄位來發出這種從一端到另一端的緊急資料已經被放置在資料流中的通知。urg位元被置1,並且乙個16bit的緊急指標被置為乙個正的偏移量,該偏移量必須與tcp首部的序號相加,以便得出緊急資料的最後乙個位元組的序號。

即使接收視窗為0,也能傳送緊急資料。

TCP套接字的資料傳輸

傳送資料 函式send用來在tcp套接字上傳送資料 include include 函式原型 ssize t send int sockfd,const void msg,size t len,int flags 函式send只能對處於連線狀態的套接字使用,引數sockfd為已經建立好連線的套接字描...

TCP中的可靠資料傳輸

前面我們講到了可靠資料傳輸的實現,而tcp就是一種可靠資料傳輸,因此我們有必要了解一下tcp中的可靠資料傳輸跟前面的回退n步和選擇重傳有什麼區別 首先,我們明確乙個概念,累積確認 累計確認跟前面的ack不太一樣,在tcp報文段中有乙個確認號字段,該欄位表示接收方希望接收到的下乙個報文段的序號,而tc...

C SFTP資料傳輸

我們有些客戶公司的資料比較重要,為了安全集團公司內部都使用的是區域網,但是有時候又不得不予外界網際網路做資料互動,所以有些不重要的系統是放在外界網際網路的,這樣以來內部系統和外部系統的資料互動就成為了問題,這樣以來就使用到了sftp伺服器來作為資料傳輸的中介。下面不說了,直接上c 此處使用了第三方動...