三次握手,四次揮手

2022-04-16 03:49:01 字數 1170 閱讀 9170

tcp是一種面向連線的單播協議,在傳送資料前,通訊雙方必須在彼此間建立一條連線。所謂的「連線」,其實是客戶端和伺服器的記憶體裡儲存的乙份關於對方的資訊,如ip位址、埠號等。

tcp可以看成是一種位元組流,它會處理ip層或以下的層的丟包、重複以及錯誤問題。在連線的建立過程中,雙方需要交換一些連線的引數。這些引數可以放在tcp頭部。

tcp提供了一種可靠、面向連線、位元組流、傳輸層的服務,採用三次握手建立乙個連線。採用4次揮手來關閉乙個連線。

第一次握手:客戶端傳送網路包,服務端收到了。這樣服務端就能得出結論:客戶端的傳送能力、服務端的接收能力是正常的。

第二次握手:服務端發包,客戶端收到了。這樣客戶端就能得出結論:服務端的接收、傳送能力,客戶端的接收、傳送能力是正常的。 從客戶端的視角來看,我接到了服務端傳送過來的響應資料報,說明服務端接收到了我在第一次握手時傳送的網路包,並且成功傳送了響應資料報,這就說明,服務端的接收、傳送能力正常。而另一方面,我收到了服務端的響應資料報,說明我第一次傳送的網路包成功到達服務端,這樣,我自己的傳送和接收能力也是正常的。

第三次握手:客戶端發包,服務端收到了。這樣服務端就能得出結論:客戶端的接收、傳送能力,服務端的傳送、接收能力是正常的。 第

一、二次握手後,服務端並不知道客戶端的接收能力以及自己的傳送能力是否正常。而在第三次握手時,服務端收到了客戶端對第二次握手作的回應。從服務端的角度,我在第二次握手時的響應資料傳送出去了,客戶端接收到了。所以,我的傳送能力是正常的。而客戶端的接收能力也是正常的。

經歷了上面的三次握手過程,客戶端和服務端都確認了自己的接收、傳送能力是正常的。之後就可以正常通訊了。

每次都是接收到資料報的一方可以得到一些結論,傳送的一方其實沒有任何頭緒。我雖然有發包的動作,但是我怎麼知道我有沒有發出去,而對方有沒有接收到呢?

tcp連線是雙向傳輸的對等的模式,就是說雙方都可以同時向對方傳送或接收資料。當有一方要關閉連線時,會傳送指令告知對方,我要關閉連線了。這時對方會回乙個ack,此時乙個方向的連線關閉。但是另乙個方向仍然可以繼續傳輸資料,等到傳送完了所有的資料後,會傳送乙個fin段來關閉此方向上的連線。接收方傳送ack確認關閉連線。注意,接收到fin報文的一方只能回覆乙個ack, 它是無法馬上返回對方乙個fin報文段的,因為結束資料傳輸的「指令」是上層應用層給出的,我只是乙個「搬運工」,我無法了解「上層的意志」

三次握手 四次揮手

1.tcp連線的建立 1 首先是伺服器初始化的過程,從 closed 關閉 狀態開始通過順序呼叫 socket bind listen 和accept 原語建立 socket 套接字,進入 listen 監聽 狀態,等待客戶端的 tcp傳輸連線請求。2 客戶端最開始也是從 closed 狀態開始呼叫...

三次握手,四次揮手

三次握手 three times handshake three way handshake 所謂的 三次握手 即對每次傳送的 資料量是怎樣跟蹤進行協商使 資料段的傳送和接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送 接收完畢後何時撤消聯絡,並建立虛連線。為了提供可靠的傳送,tcp在傳送...

三次握手 四次揮手

在tcp ip 協議中,tcp 協議提供可靠的連線服務,採用三次握手建立乙個連線,如圖1所示。1 第一次握手 建立連線時,客戶端a 傳送syn 包 syn j 到伺服器b 並進入syn send 狀態,等待伺服器b 確認。2 第二次握手 伺服器b 收到syn 包,必須確認客戶a 的syn ack j...