【資料圖】
TCP 三次握手是一道經(jīng)典的面試題,它是指 TCP 在傳遞數(shù)據(jù)之前,需要進行 3 次交互才能正式建立起連接,并進行數(shù)據(jù)傳遞。TCP 之所以需要 3 次握手是因為 TCP 雙方都是全雙工的。所謂全雙工指的是,TCP 任何一端既是發(fā)送數(shù)據(jù)方,又是接收數(shù)據(jù)方,因此這就要求 TCP 通訊雙方既要保證自己的發(fā)送能力,又要保證自己的接收能力才行。這就好像打電話時,通訊雙方都要保證自己能話筒(傳遞聲音)和耳機(接收聲音)都是正常的才行,這樣才能進行有效的交流,通常打電話時,都是這樣開頭的:
我:喂,能聽到我說話嗎?對方:能聽到你說話,你能聽到我說話嗎?我:能聽到你說話,那我們就來聊正事吧。TCP 三次握手也是相同的道理,3 次握手證明的能力詳情如下:
TCP 三次握手流程TCP 三次握手流程如下:
客戶端發(fā)送 SYN 給服務(wù)器端,表示希望建立連接;服務(wù)器端接收到消息之后,回應(yīng)一個 SYN 和 ACK(確認應(yīng)答)給客戶端;客戶端收到服務(wù)器端的 SYN 報文之后,回應(yīng)一個 ACK 報文。具體執(zhí)行流程如下圖所示:
總結(jié)TCP 之所以需要 3 次握手,是因為 TCP 通訊雙方都是全雙工的,所以要經(jīng)過 3 次交互才能確認雙方的發(fā)送能力和接收能力,并且 TCP 握手必須是 3 次,如果是 2 次握手,不能證明服務(wù)器端的發(fā)送能力和客戶端的接收能力;也不能是 4 次握手,因為 3 次已經(jīng)能證明的事情,再交互握手 1 次完全沒有必要。
參考 & 鳴謝《碼出高效:Java開發(fā)手冊》
《Offer 來了》
標簽:
- 天天快資訊丨面試突擊:為什么 TCP 需要三次握手?
- 專為創(chuàng)作而生 華碩ProArt 創(chuàng)16 2022正式在京東小魔方發(fā)售
- 天天新消息丨算力發(fā)展未來還需邁過幾道坎兒?
- 全球快資訊丨全屋WiFi覆蓋 mesh、ap面板、電力貓該怎么選?
- 聯(lián)想小新官宣:新款二合一筆記本小新Duet2022將發(fā)布
- 世界微頭條丨面試突擊:說一下 TCP/IP 協(xié)議?你了解每層的作用嗎?
- 環(huán)球要聞:看懂RTK定位,這一篇就夠啦!
- 焦點關(guān)注:HTTP/3 ,它來了,你學(xué)到了什么?
- 全新榮耀MagicBook14銳龍版即將發(fā)布 帶來10%的綜合性能提升
- 環(huán)球最資訊丨3GPP XR相關(guān)標準調(diào)研