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