三次握手(three-way handshake)其實就是指建立乙個tcp連線時,需要客戶端和伺服器總共傳送3個包。進行三次握手的主要作用就是為了確認雙方的接收能力和傳送能力是否正常、指定自己的初始化序列號為後面的可靠性傳送做準備。實質上其實就是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號,交換tcp視窗大小資訊。
剛開始客戶端處於 closed 的狀態,服務端處於 listen 狀態。
進行三次握手:
第一次握手:客戶端給服務端發乙個 syn 報文,並指明客戶端的初始化序列號 isn。此時客戶端處於 syn_sent 狀態。
首部的同步位syn=1,初始序號seq=x,syn=1的報文段不能攜帶資料,但要消耗掉乙個序號。
第二次握手:伺服器收到客戶端的 syn 報文之後,會以自己的 syn 報文作為應答,並且也是指定了自己的初始化序列號 isn(s)。同時會把客戶端的 isn + 1 作為ack 的值,表示自己已經收到了客戶端的 syn,此時伺服器處於 syn_rcvd 的狀態。
在確認報文段中syn=1,ack=1,確認號ack=x+1,初始序號seq=y。
第三次握手:客戶端收到 syn 報文之後,會傳送乙個 ack 報文,當然,也是一樣把伺服器的 isn + 1 作為 ack 的值,表示已經收到了服務端的 syn 報文,此時客戶端處於 established 狀態。伺服器收到 ack 報文之後,也處於 established 狀態,此時,雙方已建立起了連線。
確認報文段ack=1,確認號ack=y+1,序號seq=x+1(初始為seq=x,第二個報文段所以要+1),
ack報文段可以攜帶資料,不攜帶資料則不消耗序號。
【注】:乙個位元組乙個序號
如果兩次握手會造成兩個連線
看第三次如何解決:
如果傳送方已經確認第三次握手了,那麼延遲的那次握手就會忽略掉
計算機網路(四),TCP三次握手
1.三次握手詳情 2.為什麼需要三次握手才能建立連線 3.首次握手的隱患 syn超時的問題 4.建立連線之後,client出現故障 1 一開始,客戶端和伺服器端都處於關閉狀態 closed 然後開啟服務,服務端這個時候處於監聽狀態 listen 2 客戶端傳送乙個連線請求報文,裡面syn等於1,se...
計算機網路之tcp三次握手
客戶端與伺服器之間資料的傳送和返回的過程當中需要建立乙個叫tcp connection的東西 由於tcp不存在連線的概念,只存在請求和響應,請求和響應都是資料報,它們之間都是經過由tcp建立的乙個從客戶端發起,伺服器接收的類似連線的通道,這個連線可以一直保持,http請求是在這個連線的基礎上傳送的 ...
計算機網路 三次握手
假設a為客戶端,b為服務端。首先b處於listen 監聽 狀態,等待客戶的連線請求。a向b傳送連線請求報文,syn 1,ack 0 選擇乙個初始的序號x b收到連線請求,如果同意建立連線,則向a傳送連線確認報文,syn 1,ack 1 確認號為1,同時也選擇乙個初始的序號y。a收到b的連線確認序號後...