1、客戶端傳送請求報文到伺服器表示客戶端想要和服務端建立連線
2、服務端接收到客戶端的請求,返回客戶端報文詢問客戶端是否準備好
3、客戶端再次響應服務端乙個ack,表示我已經準備好。主機收到後檢查ack number是否正確,若正確,則連線建立成功。
三次握手的具體步驟:
建立乙個tcp連線時,需要客戶端和伺服器端總共傳送3個包。
三次握手的目的是連接伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號,交換tcp視窗大小資訊。在socket程式設計中,客戶端執行connect()時將觸發三次握手。
第一次握手(syn=1,seq=x):
客戶端傳送乙個tcp的syn標誌位置1的包,指明客戶端打算連線的伺服器的埠,以及初始序號x,儲存在包頭的序列號(sequence number)欄位裡。
第二次握手(syn=1,ack=1,seq=y,acknum=x+1):
伺服器發回確認包(ack)應答。即syn標誌位和ack標誌位均為1。伺服器端選擇自己的isn序列號,放在seq域裡,同時將確認序號(acknowledgement number)設置為客戶的isn加1,即x+1。傳送完畢後,服務器端進入syn_rcvd狀態。
第三次握手(ack=1,acknum=y+1):
客戶端再次傳送確認包(ack),syn標誌位為0,ack標誌位為1,並且把伺服器發來ack的序號欄位+1,放在確定欄位中傳送給對方,並且在資料段放寫isn的+1。
傳送完畢後,客戶端進入established狀態,當伺服器端收到這個包時,也進入established狀態,tcp握手結束,tcp連線建立完成。
為了防止伺服器端開啟一些無用的連線增加伺服器開銷以及防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。
釋放乙個tcp連線,需要客戶端和伺服器總共傳送4個
包。客戶端和伺服器端均可主動發起揮手動作。在socket程式設計中,任何一方執行close()操作即可產生揮手操作。
第一次揮手(fin=1,seq=x):
假設客戶端想要關閉連線,客戶端發送乙個fin標誌位置為1的包,表示自已經沒有資料可以傳送了,但是仍然可以接收資料。 傳送完畢之後,客戶端進入fin_wait_1狀態。
第二次揮手(ack=1,acknum=x+1):
伺服器端確認客戶端的fin包,傳送乙個確認包,表明自己接收到了客戶端關閉連線的請求,但還沒有準備好關閉連線。 傳送完畢後,伺服器端進入close_wait狀態,客戶端接收到這個確認包之後進入fin_wait_2狀態,等待伺服器端關閉連線。
第三次揮手(fin=1,seq=y):
伺服器端準備好關閉連線時,向客戶端傳送結束連線請求,fin置為1。 傳送完畢後,伺服器端進入last_ack狀態,等待來自客戶端的最後乙個ack。
第四次揮手(ack=1,acknum=y+1):
客戶端接收到來自伺服器的端的關閉請求,傳送乙個確認包,並進入time_wait狀態,等待可能出現的要重傳的ack包。伺服器端接收到這個確認包之後,關閉連線,進入closed狀態。
客戶端等待了某個固定時間(兩個最大段生命週期,2msl,2maximum segment lifetime)之後,沒有收到伺服器端的ack,認為伺服器端已經正常關閉連線,於是自己也關閉連線,進入closed狀態。
確認和重傳:接收方收到報文就會確認,傳送方傳送一段時間後沒有收到確認就會重傳。
資料校驗:tcp報文頭有檢驗和,用於校驗報文是否損壞。
資料合理分片和排序:tcp會按最大傳輸單元(mtu)合理分片,接收方會快取未按序到達的資料,重新排序後交給應用。
流量控制:當接收方來不及處理傳送方的資料,能通過滑動視窗,提示傳送方降低傳送的速率,防止包丟失。
擁塞控制:當網路擁塞時,通過擁塞視窗,減少資料的傳送,防止包丟失。
待續.......
http三次握手 HTTP三次握手,四次揮手。
三次握手 首先解析伺服器dns,找到ip,然後開始建立連線 1.第一次握手 建立連線,客戶端a傳送syn 1 隨機產生seq client isn的資料報到伺服器b,等待伺服器確認。2.第二次握手 伺服器b收到請求後確認聯機 可以接受資料 發起第二次握手請求,ack a的seq 1 syn 1,隨機...
http三次握手,四次揮手
本文經過借鑑書籍資料 他人部落格總結出的知識點,歡迎提問 序列號seq 佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個報文段指派乙個序號 序列號seq就是這個報文段中的第乙個位元組的資料編號。確認...
HTTP三次握手四次揮手
一 瀏覽器渲染流程 tcp 建立連線 tcp三次握手 傳送http請求 伺服器處理並響應報文 瀏覽器解析並渲染頁面 斷開連線 tcp 結束連線 二 http之tcp三次握手與四次揮手詳解 三次握手 three way handshake 是指建立乙個 tcp 連線時,需要客戶端和伺服器總共傳送3個包...