TCP 三次握手與四次握手

TCP 連結中進行連結需要進行三次握手,斷開連接時需要四次握手。

TCP Three-way Handshake

  • Client 端發出請求連結的 SYN 同步信號
  • Server 端授予連結,發送 SYN 同步信號,並且回覆 ACK 報文
  • Client 端回覆 ACK 報文,確認連結
              TCP Three-way Handshake

           ACK = Y + 1 Seq = Z
  +-----------------------------------------+
  |                                         v
+--------+  SYN = 1 Seq = X               +--------+
| Client | -----------------------------> | Server |
+--------+                                +--------+
  ^        SYN = 1 ACK = X + 1 Seq = Y      |
  +-----------------------------------------+

半連結狀態 Half-open Connect

在 TCP 三次握手中,Server 端發送 SYN 信號後、接收 Client 端確認連結報文前,TCP 連結處於半連結(Half-open Connect)狀態,此時服務器處於 Syn_RECV 狀態,當收到 Client 端發出的 ACK 報文後,服務器進入 ESTABLISHED 狀態。

SYN 攻擊

在 TCP 半連結狀態時,攻擊 Client 端,在短時間內偽造大量不存在的IP地址,向 Server 端不端發送 SYN 同步請求,Server 端回覆 ACK 報文以及 SYN 信號授予連結,但由於目標 IP 地址不存在,沒有確認連結的回覆,Server 端需要不端發送信號直至 Timeout,偽造的 IP 地址發送的 SYN 請求信號長時間佔用未連結隊列,正常的 SYN 請求信號被丟棄,這種服務器攻擊被稱為 SYN 攻擊

SYN 攻擊屬於一種典型的 DDoS 攻擊,如果服務器連結列表上出現大量的半連結狀態隨機 IP 地址,則很有可能受到了 SYN 攻擊。

對於 SYN 攻擊可採用修改 TCP 協議來進行防範,包括 SynAttackProtect 保護機制,SYN cookies 技術,增加最大半連結以及縮短超時時間等。

TCP Four-way Handshake

  • Client 端發送 Fin 信號以及 ACK 報文要求斷開連接
  • Server 端收到信號並發送 ACK 報文回執,進行停止連結準備
  • Server 端完成準備,發送 Fin 信號以及 ACK 報文後斷開連接
  • Client 端發送 ACK 報文,無回覆,Timeout 斷開連接。

                             TCP Four-way Handshake

                                       ACK = Y Seq = X
                              +-------------------------------------+
                              |                                     v
                            +--------+  Fin = 1 ACK = Z Seq = X   +--------+
  +-----------------------> | Client | -------------------------> | Server | -+
  |                         +--------+                            +--------+  |
  |                           ^        ACK = X + 1 Seq = Z          |         |
  | Fin = 1 ACK = X Seq = Y   +-------------------------------------+         |
  |                                                                           |
  |                                                                           |
  +---------------------------------------------------------------------------+

在 TCP 四次握手中,無論是 Client 端還是 Server 端,都可以率先請求斷開連接。

results matching ""

    No results matching ""