這篇部落格講的很清楚。
下面我簡單說明一下:三次連線握手,首先client傳送請求報文,然後伺服器返回,客戶端在傳送請求。
為什麼要三次握手,兩次握手不就夠了嗎?:三次握手是為了確保安全,client向server傳送請求,server返回了以後,server不知道client有沒有收到返回,所以無法確定client是否能收的到我的響應,倘若不能收到,server還有發的必要嗎?對吧,所以,客戶端在發一次請求,證明我收到了你的請求,我們兩個的通訊沒有問題,可以開始通訊啦~個人覺得這相當於每個人都傳送接收一次試試看能不能互相收到,很簡單的道理。
為什麼要四次握手:首先需要知道一點,無論是客戶端還是伺服器,都可以取消連線,過程如下(假設為client取消):
client:我要取消連線,你長的太醜...(傳送給server訊息)
server:我收到了你的資訊,不要我拉倒,但是取消之前還是要相互確認一下的。(隨即傳送給client乙個回覆)
server:哎呀,他之前請求的東西還沒發完呢,等發完了告訴他吧...(過了一會,訊息全部傳送完畢),好啦,現在訊息傳送完啦,我也不欠你的啦,88~然後傳送一條訊息,
告訴client訊息傳送完畢
client:雖然他是個醜逼,但是還是挺負責的,我也負責吧,隨即傳送了一條訊息告訴server,我收到了你發的訊息
至此,通訊完畢。
tcp協議是不是乙個很負責任的協議呢?一旦你以負責的角度去思考,tcp就很容易理解啦。
另外:tcp報文是屬於ip報文資料的一部分。
ip報文分為ip報頭和資料
而資料又包括tcp的報頭和資料
所以,才叫做tcp/ip協議嘛!
對了,忘了說一點,建立連線的時候標誌有syn,ack
取消連線的時候標誌有fin,ack,ack為1則表示傳送沒有問題
TCP建立連線三次握手和釋放連線四次握手
尊重 在談及tcp建立連線和釋放連線過程,先來簡單認識一下 tcp報文段首部格式 的的幾個名詞 這裡只是簡單說明,具體請檢視相關教程 序列號seq 佔4個位元組,用來標記資料段的 順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個...
TCP建立連線三次握手和釋放連線四次握手
尊重 在談及tcp建立連線和釋放連線過程,先來簡單認識一下tcp報文段首部格式 的的幾個名詞 這裡只是簡單說明,具體請檢視相關教程 序列號seq 佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個報文...
TCP建立連線三次握手和釋放連線四次握手
尊重在談及tcp建立連線和釋放連線過程,先來簡單認識一下tcp報文段首部格式的的幾個名詞 這裡只是簡單說明,具體請檢視相關教程 序列號seq 佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個報文段指...