tft每日頭條

 > 圖文

 > tcp協議靠什麼實現可靠連接

tcp協議靠什麼實現可靠連接

圖文 更新时间:2024-08-23 18:25:57

覺得不錯,記得關注《地鐵超人筆記》!不一樣的平台,一樣的精彩!

微信公衆号/微博:地鐵超人筆記;抖音号:地鐵超人·說(MetroSuperman123);哔哩哔哩網站:地鐵超人筆記

TCP協議是面向連接端到端的可靠協議。它支持多種網絡應用程序,可以在多種硬件構成的網絡上運行。它的下層是IP協議,TCP可以根據IP協議提供的服務傳送大小不定的數據,IP協議負責對數據進行分段、重組,在多種網絡中傳送。TCP的上面就是應用程序,上層接口包括一系列類似于操作系統的中斷調用。

主機上不同的協議有不同的端口号,一對進程通過這個端口号進行通信。這個通信不包括計算機内的I/O操作,隻包括在網絡上進行的操作。網絡上的計算機被看作數據包傳送的源和目的節點。計算機中的不同進程可能同時進行通信,這時它們會用端口号進行區别,不會把發向A進程的數據由B進程接收

tcp協議靠什麼實現可靠連接(通信協議TCP的連接和控制)1

在實現TCP的主機上,TCP也可以調用一些操作系統的功能,TCP不直接和網絡打交道,控制網絡的任務由專門的設備驅動模塊完成。TCP隻是調用IP接口,IP向TCP提供所有TCP需要的服務。

TCP是用一個序号來保證順序的。響應包内也包括一個序列号,表示準備好接收這個序号的包。在TCP傳送一個數據包時,它同時把這個數據包放入重發隊列中,并啟動計數器,如果收到了關于這個包的确認信息,将此包從重發隊列中删除,如果計時超時則需要重新發送此包

為了保證TCP連接唯一,一個連接由連接兩端的套接字标識,本地的套接字可能和不同的外部套接字通信,這種通信是全雙工的。當兩個機器中的兩個TCP建立連接後,它們應當能夠同時向對方發送報文段。這就表示,在任何數據傳送之前,每一方都必須對通信進行初始化,并得到對方的認可。雙方(下面以主機A和主機B為例)在傳送數據前,應當完成四個動作。

1. 主機A發送報文段,宣布它願意建立連接,報文段包括關于從A到B的通信量的初始化信息。

2. 主機B發送報文段确認(證實)A的請求。

3. 主機B發送包括關于從B到A的通信量的初始化信息的報文段。

4. 主機A發送報文段确認(證實)B的請求。

上述步驟(2)和(3)由于是同時發生,可以合并為一個步驟,所以連接的建立也稱作三向握手

在這個過程中,客戶應用程序願意與一個服務器的應用程序使用傳輸層協議中的TCP協議建立連接。三向握手過程從服務器開始,服務器程序告訴TCP已經準備好接收連接,這叫做被動打開請求,但它自己不能完成這個連接,處于監聽狀态。客戶程序發出請求叫做主動打開請求,它告訴TCP它需要連接到特定的服務器。

tcp協議靠什麼實現可靠連接(通信協議TCP的連接和控制)2

1. 客戶發送第一個報文段:SYN。這個報文段包括源端口号和目的端口号,以及初始序号。目的端口号清楚地定義了這個客戶打算連接的服務器;初始序号用來對從客戶發送到服務器的數據字節進行編号。

2. 服務器發送第二個報文段:SYN和ACK。此報文段有兩個目的:一是使用ACK标志和确認号字段确認收到第一個報文段,确認号是客戶初始序号加1,同時定義客戶端的窗口值;二是對服務器的報文段進行初始化。

3. 客戶發送第三個報文:ACK。它使用ACK标志和确認号字段确認收到第二個報文段。确認号是服務器的初始序号加1,同時定義服務器窗口值。在第三個報文段可以發送數據。還有一種特殊情況,就是兩個進程都主動打開。在這種情況下,兩個TCP都向對方發送SYN ACK報文段,然後在雙方之間建立一條連接。

參加數據交換的任何一方都可以關閉連接,但連接的關閉是單方向的,連接可以在一個方向關閉,而在另一個方向依然打開。因此,要在兩個方向都關閉連接需要完成四個動作

1. 主機A發送報文段,宣布它願意終止連接。

2. 主機B發送報文段确認(證實)A的請求。之後,一個方向的連接就關閉了。但主機B還可以向A發送數據。

3. 主機B發送報文段,宣布它願意終止連接。

4. 主機A發送報文段确認(證實)B的請求。

在這裡,步驟(2)和(3)不可以合并,連接終止就稱為四向握手。

四向握手的過程從客戶開始。客戶程序告訴TCP,它已經發完數據,願意終止連接,這是主動關閉請求。之後,客戶TCP就關閉了客戶到服務器方向的通信。而另一個方向的通信依然是打開的。當服務器程序發完服務器到客戶方向的通信時,就可以請求TCP關閉服務器到客戶方向的連接,這是被動關閉請求

tcp協議靠什麼實現可靠連接(通信協議TCP的連接和控制)3

1. 客戶TCP發送第一個報文段:FIN。

2. 服務器TCP發送第二個報文段:ACK。該報文段用于确認從客戶發來的FIN報文段,報文段中的确認号是FIN報文段中的序号加1。

3. 服務器TCP可以繼續向客戶發送數據,當數據都發送完時,它就發送第三個報文段:FIN。

4. 客戶TCP發送第四個報文段:ACK。該報文段用于證實TCP服務器收到了FIN報文段。

如果當前的連接被破壞,TCP可以在以下三種情況後請求複位:

1. 在某一端的TCP請求與并不存在的端口進行連接。在另一端的TCP就可以發送報文段,把RST位置1,以取消這個請求。

2. 由于出現了異常情況,某一端的TCP可能願意把連接異常終止。它就可以發送RST報文來關閉這一請求。

3. 某一端的TCP可能發現在另一端的TCP已經空閑了很長時間。它就可以發送RST報文段來撤銷這個連接。

TCP的操作必須在兩個優先級相同的端口間進行。TCP使用的優先和安全參數在IP協議中定義。如果不符合則發送RST。在一些情況下,應用程序打算把它鍵入的字符發送給對方的應用程序,并希望立即收到響應。數據的延遲傳輸和延遲交付對應用程序來說是不可接受的。這時,發送端的應用程序就可以請求推送操作。發送端TCP設置推送位PSH以告訴接收端TCP,這個報文所包括的數據必須盡快地交付接收應用程序,而不要等待更多數據的到來。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved