TCP的建立連線和關閉連線

2021-06-25 18:27:39 字數 1255 閱讀 8407

tcp(transmissioncontrol protocol傳輸控制協議 )是一種面向連線(連線導向)的、可靠的、基於ip的傳輸層協議。

1、tcp建立資料連線

tcp是網際網路中的傳輸層協議,使用三次握手協議建立連線。當客戶端向伺服器發出syn連線請求後,等待對方應答syn+ack,最終伺服器方的syn執行ack確認。這種建立的連線可以防止產生錯誤的連線,tcp使用的流量控制協議時可變大小的滑動視窗協議。

tcp的三次握手如下:

、客戶端傳送syn(假設序列號seq=x)報文交給伺服器端,進入syn_send狀態。

、伺服器端收到syn報文,回應乙個syn(假設序列號為seq=y),ack(ack=x+1)報文,進入syn_recv狀態。

、客戶端接收到伺服器端的syn報文,回應乙個ack(ack=y+1)報文,進入established狀態。

tcp的三次握手完成,客戶端和伺服器端成功建立連線,可以進行資料的傳輸。

2、tcp關閉資料連線(四次揮手)

tcp的連線是全雙工的(可以同時傳送和接收)連線,因此在關閉連線時候,必須關閉傳送和接收兩個方向的連線。收到乙個fin之意味著這乙個方向上沒有資料流動,另一方仍然傳送資料。一方主動關閉為主動方,一方被動關閉為被動方。

tcp的四次揮手過程如下:

主動方a傳送乙個fin,序列號seq=u,用來關閉主動方到被動方b的資料連線。

被動方b收到這個fin,它發回乙個ack,(確認序列號ack=u+1)。

被動方b關閉與主動方a的連線,傳送乙個fin給主動方a,序列號為seq=w。

主動方發回ack報文確認,確認序號設定為收到序號加1.

3、那麼為什麼tcp在建立連線採用三次握手,而在關閉連線時採用四次揮手呢?

這是因為服務端的listen狀態下的socket當收到syn報文

的建連請求後,它可以把ack和syn(ack起應答作用,而syn起同步作用)放在乙個報文裡來傳送。但關閉連線時,當收到對方的fin報文

通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未必會馬上會關閉socket,也即你可能還需要傳送一些資料給對方之後,再傳送fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的ack報文和fin報文多數情況下都是分開傳送的。

TCP建立和關閉連線

一 建立連線 1 請求端 通常稱為客戶 傳送乙個 s y n段指明客戶打算連線的伺服器的埠,以及初 始序號 i s n,在這個例子中為1 4 1 5 5 3 1 5 2 1 這個s y n段為報文段1。2 伺服器發回包含伺服器的初始序號的s y n報文段 報文段2 作為應答。同時,將確認 序號設定為...

TCP連線建立與關閉

tcp transmission control protocol 傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議.tcp是傳輸層協議,使用三次握手建立連線,當主動方發出 syn 連線請求時,接收方接受請求後,發出 syn ack 作為響應,接收到響應後,對響應的 syn 執行...

TCP連線的建立與關閉

五層網路模型分為 物理層 資料鏈路層 網路層 傳輸層 應用層。其中,傳輸層有兩種主要協議 面向連線的tcp transmission control protocol 傳輸控制協議 無連線的udp user datagram protocol 使用者資料報協議 tcp是面向連線的傳輸層協議,提供點對...