傳輸控制協議(transmission control protocol,簡稱tcp)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,應用層向tcp層傳送用於網間傳輸的用8位位元組表示的資料流,tcp將資料流做分隔處理後透傳給ip層,然後由ip層將資料傳輸給目標端tcp層。
tcp為保證不發生丟包,會對所有的包進行編號,接收端依據編號按序接收,全部資料報接收完成後按序號進行合併,這裡可能會發生粘包、拆包的問題(暫不介紹)。接收端在每次接收到資料報的時候都會返回給傳送端乙個確認資訊(ack),若傳送端在一定時間內未接收到ack資訊,則主觀認為資料傳送失敗或資料丟失,會重新傳送丟失序號的包。
tcp在傳送資料之前,需要先建立連線,客戶端主動,tcp使用三次握手的方式建立連線,三次握手的意思就是客戶端和服務端進行三次通訊,三次握手的目的是為了確認通訊雙方的傳送和接收能力是否正常。主要過程:
第二次握手:服務端:客戶端,我準備好了,你可以把資料發過來了
第三次握手:客戶端:服務端,我知道了,敵人還有三秒到達戰場
為什麼使用三次握手,兩次是否可以?tcp傳送完資料之後,需要將連線斷開,當然斷開連線的也需要客戶端主動發起,因為資料是否傳送完畢只有傳送者知道。斷開連線需要通過四次揮手(也可以叫四次握手)來保證合理性。*** 之所以進行三次握手,是保證客戶端和服務端均可以進行一次傳送、接收和傳送接收反饋,目的是讓客戶端和服務端各自確認自己的傳送和接收能力都正常**
第二次揮手:服務端:我收到了,我同意你的請求,但我要看下我是否還有資料尚在傳送,你等會
第三次揮手:服務端:我的資料也都發完了,可以斷開了
第四次揮手:客戶端:我知道了,斷開
看乙個官方描述:
tcp 四次揮手 TCP的三次握手和四次揮手
三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...
TCP三次握手和四次揮手
一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...
TCP三次握手和四次揮手
三次握手 四次揮手 需四次揮手原因 由於tcp的半關閉特性,tcp連線時雙全工 即資料在兩個方向上能同時傳遞 因此,每個方向必須單獨的進行關閉。這個原則就是 當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向上的連線。當一端收到乙個fin後,它必須通知應用層另一端已經終止了那個方向的資料傳...