前言:TCP/IP 協議也算是 Java 面試中高頻的面試點了,圍繞 TCP/IP 協議,可總結為以下三大要點
- 1.三次握手;
- 2.超時重試;
- 3.滑動窗口
三次握手
上面的圖片來自 《圖解 TCP/IP》一書。三次握手的目的主要是為了提升網絡通訊的成功率。如圖所示:
- 第一次握手:客戶端會發送 SYN 包給服務端,以詢求服務端是否能夠正常通訊
- 第二次握手:服務端在接受到客戶端發來的包後,向客戶端發送 SYN/ACK 數據包,用來告訴客戶端,我這邊是 OK 的,你能夠向我發起連接
- 第三次握手:客戶端收到服務端回傳的 SYN/ACK 包後,再次向服務端發送標註有 ACK 的數據包,用來告訴服務端,我這邊也收到了你的回信,我們開始通信吧
超時重試
當發送者向接受者發送數據包後,如果過了一段時間(超時時間)還是沒有收到回信,則視為本次包丟失,需要重新補發。
Note: 如果一次性發送了三個包,只要最後一個包確認接收到了,則認為前兩個包也接收到了。
滑動窗口
何為滑動窗口?
我們可以理解為是發送方式的協議,假設說發送端一次發送包的大小為 3,發送端可以邊發邊接受,這樣就可以顯著提高通信的效率。
這裡說的大小為 3,就是滑動窗口的大小。
閱讀更多 Java技術說 的文章