阿摩線上測驗 登入

申論題資訊

試卷:108年 - 108 專技高考_資訊技師:網路原理與應用#80687
科目:技師◆網路原理與應用
年份:108年
排序:0

題組內容

五、

申論題內容

⑴假設用 two-way 握手(handshake)協定,而不是用 three-way 握手協定,來建立連線的話(換句話說,也就是建立連線時省掉第三個訊息),那麼可能會引起死結(deadlock)嗎?如果可能的話,請舉例並詳細說明。如果不可能的話,也請詳細解釋原因。(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

三次握手協定的設計是為了確保連接的雙方都準備好並且確信對方也準備好,從而避免死結和其他問題。兩次握手協定缺少這個確認步驟,容易導致通信不確定性和死結問題。因此,使用三次握手協定是必要的,它可以確保連接的可靠性和穩定性。

在計算機網絡中,TCP使用三次握手(three-way handshake)協定來建立連接,以確保連接的可靠性和避免潛在的問題。如果改為使用兩次握手(two-way handshake)協定,則可能會引發死結(deadlock)問題。以下是原因及具體例子:

原因

兩次握手協定無法確保雙方都確實準備好進行通信,因為缺少確認的步驟。三次握手中的第三次確認消息(ACK)是至關重要的,它確認了客戶端已經收到伺服器的應答(SYN-ACK),並且伺服器知道客戶端已準備好通信。

可能引發的死結問題

如果使用兩次握手,可能出現以下情況,導致死結:

  1. 丟失的應答消息
    • 假設客戶端A向伺服器B發送連接請求(SYN)。
    • 伺服器B收到請求後,發送應答(SYN-ACK)。
    • 如果此應答消息在傳輸過程中丟失,客戶端A將永遠不會知道伺服器B已經收到它的請求並準備好通信。
    • 由於缺少第三個消息,客戶端A不會重發連接請求,伺服器B也不會重發應答,最終兩者都處於等待狀態,形成死結。

具體例子

讓我們詳細說明這個過程:

  1. 客戶端A向伺服器B發送SYN

    • A -> B: SYN (我要與你建立連接)
  2. 伺服器B收到SYN並回應SYN-ACK

    • B -> A: SYN-ACK (我收到你的請求,並準備好通信)
  3. SYN-ACK在傳輸過程中丟失

    • 由於網絡問題,這個SYN-ACK消息未能成功到達客戶端A。
  4. 客戶端A等待伺服器B的回應

    • 客戶端A沒有收到SYN-ACK,因此認為伺服器B未準備好,繼續等待。
  5. 伺服器B等待客戶端A的確認

    • 伺服器B認為它已成功回應了SYN-ACK,並等待客戶端A的確認(在三次握手中,這是第三個消息ACK)。

由於兩次握手缺少這第三個確認步驟,客戶端A和伺服器B都處於等待狀態,導致死結。