三次握手面试题java_java面试题三次握手和四次挥手-嗨客网
題目
對(duì) tcp 了解嗎?講講它的三次握手和四次揮手?為什么需要三次握手,為什么需要四次揮手。
答案
三次握手
第一次握手:客戶端向服務(wù)器發(fā)送連接請(qǐng)求,這個(gè)時(shí)候報(bào)文首部中的同步為 SYN = 1,同時(shí)生成一個(gè)隨機(jī)序列號(hào) seq = x。
第二次握手:TCP 的服務(wù)器如果同意連接,就發(fā)出確認(rèn)報(bào)文。確認(rèn)報(bào)文是 ACK = 1,SYN = 1,并帶有一個(gè)確認(rèn)號(hào) ack = x +1,同時(shí)自己也生成一個(gè)序列號(hào) seq = y。
第三次握手:TCP 客戶端進(jìn)程收到確認(rèn)后,向服務(wù)器給出確認(rèn),確認(rèn)報(bào)文是 ACK = 1,ack = y + 1。
四次揮手
第一次揮手:客戶端發(fā)送結(jié)束請(qǐng)求給服務(wù)端,報(bào)文有 FIN = 1,其序列號(hào)為 seq = u。
第二次揮手:服務(wù)端收到客戶端發(fā)起的結(jié)束請(qǐng)求后返回 ACK = 1 , ack = u +1 ,并且自己生成一個(gè)序列號(hào) seq = v。
第三次揮手:服務(wù)端向客戶端發(fā)送關(guān)閉報(bào)文,FIN = 1,ack = u + 1, seq = w。
第四次揮手:客戶端收到服務(wù)端請(qǐng)求之后發(fā)送 ACK 確認(rèn), ACK = 1,ack = w + 1,自己生成一個(gè)序列號(hào) seq = u + 1。
為什么需要三次握手
在網(wǎng)絡(luò)連接中會(huì)存在這樣的情況,當(dāng)?shù)谝淮伟l(fā)起握手請(qǐng)求的時(shí)候,由于網(wǎng)絡(luò)原因,在某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)滯留了,這個(gè)連接請(qǐng)求就認(rèn)為失效了,然后請(qǐng)求到服務(wù)端,服務(wù)端收到請(qǐng)求后會(huì)給客戶端回應(yīng)。如果沒有三次握手,那么服務(wù)端就會(huì)一直連著,會(huì)浪費(fèi)資源。
為什么需要四次揮手
當(dāng)客戶端發(fā)起關(guān)閉請(qǐng)求的時(shí)候,只表示沒有新的數(shù)據(jù)發(fā)送給服務(wù)端了,但是不能表示當(dāng)前的請(qǐng)求中所有的數(shù)據(jù)全部發(fā)送了。當(dāng)服務(wù)端收到請(qǐng)求之后不會(huì)立刻關(guān)閉連接,會(huì)等一段時(shí)間,當(dāng)自己這邊的數(shù)據(jù)處理完之后,會(huì)給客戶端發(fā)送關(guān)閉請(qǐng)求,告訴客戶端,可以關(guān)閉了。
總結(jié)
以上是生活随笔為你收集整理的三次握手面试题java_java面试题三次握手和四次挥手-嗨客网的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php debug_print_back
- 下一篇: linux multipath.log,