千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  應(yīng)聘面試  >  物聯(lián)網(wǎng)面試題  > 請簡單描述一下三次握手過程?什么時(shí)候觸發(fā)三次握手

請簡單描述一下三次握手過程?什么時(shí)候觸發(fā)三次握手

來源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2022-10-24 17:10:00 1666602600

  三次握手(Three-way Handshake)其實(shí)就是指建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)器總共發(fā)送3個(gè)包。

  進(jìn)行三次握手的主要作用就是為了確認(rèn)雙方的接收能力和發(fā)送能力是否正常、指定自己的初始化序列號為后面的可靠性傳送做準(zhǔn)備。

  實(shí)質(zhì)上其實(shí)就是連接服務(wù)器指定端口,建立TCP連接,并同步連接雙方的序列號和確認(rèn)號,交換TCP窗口大小信息。

  剛開始客戶端處于 Closed 的狀態(tài),服務(wù)端處于 Listen 狀態(tài)。

描述一下三次握手過程

  進(jìn)行三次握手:

  第一次握手:客戶端給服務(wù)端發(fā)一個(gè) SYN 報(bào)文,并指明客戶端的初始化序列號 ISN©。此時(shí)客戶端處于 SYN_SEND 狀態(tài)。首部的同步位SYN=1,初始序號seq=x,SYN=1的報(bào)文段不能攜帶數(shù)據(jù),但要消耗掉一個(gè)序號。

  第二次握手:服務(wù)器收到客戶端的 SYN 報(bào)文之后,會以自己的 SYN 報(bào)文作為應(yīng)答,并且也是指定了自己的初始化序列號 ISN(s)。同時(shí)會把客戶端的 ISN + 1 作為ACK 的值,表示自己已經(jīng)收到了客戶端的 SYN,此時(shí)服務(wù)器處于 SYN_REVD 的狀態(tài)。在確認(rèn)報(bào)文段中SYN=1,ACK=1,確認(rèn)號ack=x+1,初始序號seq=y。

  第三次握手:客戶端收到 SYN 報(bào)文之后,會發(fā)送一個(gè) ACK 報(bào)文,當(dāng)然,也是一樣把服務(wù)器的 ISN + 1 作為 ACK 的值,表示已經(jīng)收到了服務(wù)端的 SYN 報(bào)文,此時(shí)客戶端處于 ESTABLISHED 狀態(tài)。

  服務(wù)器收到 ACK 報(bào)文之后,也處于 ESTABLISHED 狀態(tài),此時(shí),雙方已建立起了連接。

  確認(rèn)報(bào)文段ACK=1,確認(rèn)號ack=y+1,序號seq=x+1(初始為seq=x,第二個(gè)報(bào)文段所以要+1),ACK報(bào)文段可以攜帶數(shù)據(jù),不攜帶數(shù)據(jù)則不消耗序號。發(fā)送第一個(gè)SYN的一端將執(zhí)行主動打開(active open),接收這個(gè)SYN并發(fā)回下一個(gè)SYN的另一端執(zhí)行被動打開(passive open)。

  在socket編程中,客戶端執(zhí)行connect()時(shí),將觸發(fā)三次握手。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
物聯(lián)網(wǎng)公司面試題:保障物聯(lián)網(wǎng)安全的措施有哪些?

題目:請談?wù)勀鷮ξ锫?lián)網(wǎng)安全的理解,以及在物聯(lián)網(wǎng)系統(tǒng)中保障安全性的措施?;卮穑何锫?lián)網(wǎng)安全是指在物聯(lián)網(wǎng)系統(tǒng)中保護(hù)設(shè)備、數(shù)據(jù)和通信免受未經(jīng)授...詳情>>

2023-07-26 11:59:27
物聯(lián)網(wǎng)中的邊緣計(jì)算是什么?請解釋其優(yōu)勢和應(yīng)用場景

答案:邊緣計(jì)算是一種將計(jì)算和數(shù)據(jù)處理能力移動到物聯(lián)網(wǎng)設(shè)備附近的計(jì)算模型。在邊緣計(jì)算中,數(shù)據(jù)的處理和分析發(fā)生在接近數(shù)據(jù)源的設(shè)備或邊緣節(jié)點(diǎn)...詳情>>

2023-07-18 14:15:00
可以介紹一下js的內(nèi)部Date對象功能嗎

提供了操作時(shí)間和日期的方法擁有一系列屬性和方法,可以用來獲取系統(tǒng)當(dāng)前時(shí)間或者設(shè)置 Date 對象中的時(shí)間 通過 getTime()方法可返回距 1970 年 ...詳情>>

2023-01-21 15:51:32
為什么需要三次握手,兩次不行嗎?

弄清這個(gè)問題,我們需要先弄明白三次握手的目的是什么,能不能只用兩次握手來達(dá)到同樣的目的。 第一次握手:客戶端發(fā)送網(wǎng)絡(luò)包,服務(wù)端收到了。...詳情>>

2022-10-25 16:55:00
什么是半連接隊(duì)列?

服務(wù)器第一次收到客戶端的 SYN 之后,就會處于 SYN_RCVD 狀態(tài),此時(shí)雙方還沒有完全建立其連接,服務(wù)器會把此種狀態(tài)下請求連接放在一個(gè)隊(duì)列里,...詳情>>

2022-10-25 16:55:00
快速通道