千鋒教育2023版Java面試寶典Java面試200題(含美團(tuán)、字節(jié)、阿里大廠真

Tcp協(xié)議位于傳輸層,作用是提供可靠的字節(jié)流服務(wù),為了準(zhǔn)確無誤的將數(shù)據(jù)送達(dá)目的地,Tcp協(xié)議采用三次握手策略。
三次握手原理:
第一次握手:客戶端發(fā)送一個帶有SYN(synchronize)標(biāo)志的數(shù)據(jù)包給服務(wù)端
第二次握手:服務(wù)端接收成功后,回傳一個帶有SYN/ACK標(biāo)志的數(shù)據(jù)包傳遞確認(rèn)信息,表示我收到了
第三次握手:客戶端再回傳一個帶有ACK標(biāo)志的數(shù)據(jù)包,表示我知道了,握手結(jié)束。
其中:SYN標(biāo)志位置1,表示建立TCP連接;ACK標(biāo)志表示驗證字段。
詳細(xì)說明:
1.客戶端發(fā)送建立TCP連接的請求報文,其中報文中包含seq序列號,是由發(fā)送端隨機(jī)生成的,將報文中的SYN字段置為1,表示需要建立TCP連接(SYN=1,seq=x,x為隨機(jī)生成數(shù)值)
2.服務(wù)端回復(fù)客戶端發(fā)送的TCP連接請求報文,其中包含seq序列號,是由回復(fù)端隨機(jī)生成的,并且將SYN置為1,而且會產(chǎn)生ACK字段,ACK字段數(shù)值是在客戶端發(fā)送過來的序列號seq的基礎(chǔ)上加1進(jìn)行回復(fù),以便客戶端接收到信息后,知曉自己的TCP建立請求已經(jīng)得到驗證(SYN=1.ack=x=1,seq=y,y是隨機(jī)生成數(shù)值),這里的ack加1可以理解為是確認(rèn)和誰建立連接
3.客戶端收到服務(wù)端發(fā)送的TCP建立驗證請求后,會使自己的序列號加1表示,并且再次回復(fù)ACK驗證請求,在服務(wù)端發(fā)過來的seq上加1進(jìn)行回復(fù)(SYN=1,ack=y+1,seq=x+1)