JavaSE(二十二)——TCP协议的三次握手
生活随笔
收集整理的這篇文章主要介紹了
JavaSE(二十二)——TCP协议的三次握手
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. TCP協議
- 2. TCP的三次握手
- 3. 為什么一定是三次握手?
1. TCP協議
TCP協議:傳輸控制協議,是可靠連接,類似于打電話,只有等待對方接通的時候才可以交流,也就是確認了對方可以傳信息,才會發送信息。
UDP協議:用戶數據報協議,是不可靠的,就像發短信,發出去就完事了,對方是否接收到就與自己無關。
2. TCP的三次握手
初始狀態:客戶端處于 closed(關閉)狀態,服務器處于 listen(監聽) 狀態。
第一次握手:客戶端發送請求報文將 SYN = 1同步序列號和初始化序列號seq = x發送給服務端,發送完之后客戶端處于SYN_Send狀態。
第二次握手:服務端受到 SYN 請求報文之后,如果同意連接,會以自己的同步序列號SYN(服務端) = 1、初始化序列號 seq = y和確認序列號(期望下次收到的數據包)ack = x+ 1 以及確認號ACK = 1報文作為應答,服務器為SYN_Receive狀態。
第三次握手: 客戶端接收到服務端的 SYN + ACK之后,知道可以下次可以發送了下一序列的數據包了,然后發送同步序列號 ack = y + 1和數據包的序列號 seq = x + 1以及確認號ACK = 1確認包作為應答,客戶端轉為established狀態。
3. 為什么一定是三次握手?
- 三次握手的本質原因是因為通訊所處的通訊鏈路和信道是不可靠的,但是我們的通訊和數據傳輸需要的是可靠的信息流動,就像我們打電話一樣,不能我說了一句話那邊只聽到半句或者聽不到,我在等對方回答,對方卻在等待我的問題,這就進入了死鎖的狀態會很尷尬。
- 通訊雙方為了解決這種不可靠,無論消息中包含什么信息,在數學歸納法來講,三次通訊是理論上的最小值,所以才有了三次握手。
- 簡單講,三次握手不是TCP的問題,也不是TCP所需要的必須條件,而是為了滿足在不可靠的鏈路信道上進行可靠地消息傳輸這個問題需求所導致的。
- 鏈路信道不可靠,而需要數據傳輸可靠,三次達到了,也就解決了信道不可靠的問題。后面不管你交互任何信息就和進行可靠的信息傳輸需求就沒關系了。因為你信道可靠了無論你發送什么消息,什么時候發送,只要連接在,對方都一定能收的到。
總結
以上是生活随笔為你收集整理的JavaSE(二十二)——TCP协议的三次握手的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(二十一)——栈和队列、栈和
- 下一篇: JavaSE(二十三)——JVM