transmission control protocol
傳輸控制協議,屬於傳輸層通訊協議,基於tcp的應用層協議有http,smtp,ftp等
注意:tcp 並不能保證資料一定會被對方接收到,因為這是不可能的。tcp 能夠做到的是,如果有可能,就把資料遞送到接收方,否則就(通過放棄重傳並且中斷連線這一手段)通知使用者。因此準確說 tcp 也不是 100% 可靠的協議,它所能提供的是資料的可靠遞送或故障的可靠通知。
三次握手指的是建立乙個tcp連線需要客戶端和伺服器一共傳送3個包。三次握手的目的是連線伺服器指定埠,建立 tcp 連線,並同步連線雙方的序列號和確認號,交換 tcp 視窗大小資訊。在 socket 程式設計中,客戶端執行 connect() 時。將觸發三次握手。通過抓包可以看到具體,紅框表示三次握手,黃框表示四次揮手。可以看到傳送的標記為和序列號和確認號。
首先,客戶端和服務端都是處於關閉的狀態,直到客戶端主動開啟連線,服務端會被動開啟連線,服務端現在處於
listen
狀態。syn,ack,seq到底是什麼東西
syn,ack 是tcp的標記位,tcp的標記位一共有6種。
1. 第一次握手(syn=1,seq=x)
客戶端a傳送乙個位碼 syn = 1,然後會隨機產生乙個序列號 seq = 1234567的資料報到伺服器,這個時候伺服器收到syn=1知道了客戶端a要求建立連線。客戶端a此時處於
syn_send
狀態2. 第二次握手(syn = 1, ack = 1,seq = y, ack = x + 1)
伺服器收到請求連線資訊之後要確認聯機資訊,向主機a傳送ack number =(主機a的seq + 1 ),syn = 1,ack = 1,隨機產生乙個序列號 seq = 7654321。 伺服器此時處於
syn_rcvd
狀態。3. 第三次握手(ack = 1 ,ack = y + 1)
主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(伺服器seq+1),ack=1,然後主機a進入
established
狀態。伺服器收到後確認seq值與ack=1則連線建立成功。伺服器也進入established
狀態。q1:為什麼tcp建立連線要進行三次握手
防止伺服器端因接收了早已失效的連線請求報文,從而一直等待客戶端請求,最終導致形成死鎖、浪費資源
通訊結束之後,雙方都需要釋放連線,需要四次揮手1. 第一次揮手(fin = 1,seq = u)
客戶端想要關閉連線,會傳送乙個標記位fin = 1的包,表明已經沒有資料可以傳送了,但是仍可以接收資料。
此時客戶端處於
fin_wait_1
狀態2. 第二次揮手(ack = 1 , ack = u+1)
服務端收到了客戶端的fin包,然後傳送乙個ack = 1 的確認包,表明自己接收到了客戶端的關閉連線的請求,但是還沒準備好關閉。服務端傳送完畢之後,進入
close_wait
狀態。客戶端收到這個包的時候進入fin_wait_2
狀態。3. 第三次揮手(fin = 1,seq = w)
當服務端準備好關閉連線的時候,向客戶端傳送fin=1,表明自己準備好關閉連線了。傳送完畢之後服務端進入
lask_ack
狀態,等待客戶端的最後乙個確認ack。4. 第四次揮手(ack = 1,ack = w+1)
客戶端接收到了服務端的的關閉請求之後,傳送最後乙個ack=1確認包,然後進入到
time_wait
狀態,等待可能出現的ack包。伺服器收到最後乙個ack之後,確認關閉連線,進入close
狀態。客戶端在等待了某個固定時間之後,沒有收到服務端的ack,就認為服務端已經正常關閉連線了,於是也將自己的連線關閉了,進入
close
狀態。udp 是乙個簡單的傳輸層協議。本篇文章主要介紹了tcp建立連線的三次握手和釋放連線的四次揮手。參考:計算機網路:這是乙份全面 & 詳細 的tcp協議攻略
tcp三次握手中syn,ack,seq三者的關係
tcp三次握手和四次握手
建立tcp需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示 先來看看如何建立連線的。首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了...
TCP三次握手和四次握手
ip 網路層 不穩定性。硬體聯絡緊密 傳輸層 1.完全不彌補 udp 無連線不可靠報文傳輸 2.完全彌補 tcp 面向連線的可靠資料報傳遞 tcp傳送資料就包含了tcp三次握手建立連線和關閉連線的四次握手 建立連線用syn傳送,用ack應答 所謂三次握手就是客戶端與伺服器之間的三次應答。伺服器是一直...
TCP協議 TCP三次握手四次揮手
tcp連線管理機制 在正常情況下,tcp要經過三次握手建立連線,四次揮手斷開連線 完整過程 三次握手建立連線 服務端狀態變化 客戶端狀態轉化 為什麼是三次握手,兩次為什麼不可以 如果只有兩次握手,那麼可能會導致客戶端傳送給服務端的失效請求被服務端接收,從而導致錯誤。失效的請求 客戶端向服務端傳送連線...