乙個tcp連線的建立是通過三次握手來實現的
假如伺服器b和客戶機a通訊。當a要和b通訊時,首先a先向b傳送乙個syn標記的包,seq=x為這個包的序列號(x一般為1),以此為這個包進行乙個標識,a告訴b請求建立連線。
注意:乙個syn包就是僅syn標記設為1的tcp包,只有當b受都a發來的syn包,才可以建立連線。
(a)接著,b收到後會發乙個對syn包確認包(syn/ack)回去,表示對第乙個syn包的確認,所以在ack=x+1
即是表示確認在接收到包後對標識進行處理(+1)以表示是伺服器(b)接收到的,並傳送seq=y標識的syn請求建立連線。(伺服器只要接收到建立連線的請求,就會直接傳送ack的確認資訊,以提高響應效率)
注意:syn/ack包是僅syn和ack標記為1的包
3.(a)——>[ack]——>(b)
a收到syn/ack包,a發乙個確認包(ack=y+1),通知b連線已建立。至此,三次握手完成,乙個tcp連線完成。
資料傳輸
4.(a)
a傳送資料請求用seq=x+1標識,並帶上確認號ack=y+1
(a)——>[ack]——>(b)
b接收到a的請求,並返回確認號ack=x+2
四次揮手
6.(a)——>[fin/ack]——>(b)
a傳送fin,表示「請求釋放連線」,標識序號為swq=x+2,並傳送ack=y+1的確認報文
7.(a)
(a)b返回ack=x+3的確認報文,並經過了closed-wait階段,做好了釋放連線的準備,
並再次向a傳送了fin,以及確認報文ack=y+2,至此b(服務端)結束了closed-wait階段,
進入了last-ack階段,並且停止在服務端到客戶端方向傳送資料,但是伺服器端仍舊能夠接受
從客戶端傳輸過來的資料
8.(a)——>[ack]——>(b)
客戶端傳送ack=y+2確認報文,進入time-wait階段
與「三次揮手」一樣,在客戶端與服務端傳輸的tcp報文中,雙方的確認號ack和seq的值,都是
在彼此的ack和seq值得基礎上進行計算的,這樣做保證了tcp報文傳輸的連貫性,一旦出現某
一方發出的tcp報文丟失,便無法繼續」揮手了」,以此確保了」四次揮手」的順利完成
tcp協議三次握手 四次揮手
起初,伺服器和客戶端都為closed狀態。在通訊開始前,雙方都得建立各自的傳輸控制塊 tcb 伺服器建立完tcb後遍進入listen狀態,此時準備接收客戶端發來的連線請求。第一次握手 客戶端向服務端傳送連線請求報文段。該報文段的頭部中syn 1,ack 0,seq x。請求傳送後,客戶端便進入syn...
TCP協議三次握手四次揮手
1.什麼是tcp協議 tcp協議是作用在傳輸層的傳輸控制協議 tcp 提供一種面向連線的 可靠的位元組流服務 在乙個 tcp 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於 tcp tcp 使用校驗和,確認和重傳機制來保證可靠傳輸 tcp 給資料分節進行排序,並使用累積確認保證資料的順序不變和非重...
TCP協議三次握手四次揮手
tcp有哪些過程?a.建立連線 b.資料傳輸 c.終止連線 tcp三次握手和四次揮手的過程?syn,ack是什麼?syn 請求建立連線 含有同步序列號的標誌位的資料,tcp建立連線時,將這個 位 置1 ack 針對syn的確認應答 fin是什麼?fin 傳送端完成傳送任務 位 當tcp完成資料傳輸需...