Java 面試之簡說 TCP

前言:TCP/IP 協議也算是 Java 面試中高頻的面試點了,圍繞 TCP/IP 協議,可總結為以下三大要點

  • 1.三次握手;
  • 2.超時重試;
  • 3.滑動窗口

三次握手

Java 面試之簡說 TCP/IP 協議三大要點

上面的圖片來自 《圖解 TCP/IP》一書。三次握手的目的主要是為了提升網絡通訊的成功率。如圖所示:

  • 第一次握手:客戶端會發送 SYN 包給服務端,以詢求服務端是否能夠正常通訊
  • 第二次握手:服務端在接受到客戶端發來的包後,向客戶端發送 SYN/ACK 數據包,用來告訴客戶端,我這邊是 OK 的,你能夠向我發起連接
  • 第三次握手:客戶端收到服務端回傳的 SYN/ACK 包後,再次向服務端發送標註有 ACK 的數據包,用來告訴服務端,我這邊也收到了你的回信,我們開始通信吧

超時重試

當發送者向接受者發送數據包後,如果過了一段時間(超時時間)還是沒有收到回信,則視為本次包丟失,需要重新補發。

Note: 如果一次性發送了三個包,只要最後一個包確認接收到了,則認為前兩個包也接收到了。

滑動窗口

何為滑動窗口?

我們可以理解為是發送方式的協議,假設說發送端一次發送包的大小為 3,發送端可以邊發邊接受,這樣就可以顯著提高通信的效率。

這裡說的大小為 3,就是滑動窗口的大小。


分享到:


相關文章: