2015-09-20 91 views
0

TCP握手需要ACK消息。但是,我讀過一些文章,解釋了實際數據傳輸時ACK消息的另一個外觀;發送方需要等待來自接收方的ACK消息指示要發送的後續字節。那是對的嗎?有人可以解釋我們爲什麼稱它爲ACK消息嗎?瞭解TCP握手後ACK消息的作用

+0

是的,這是正確的。 ACK用於確認。 – EJP

+0

TCP保證傳遞消息,因此ACK與UDP相反。 – Marco

+0

@Marco TCP擁有字節,而不是消息,它保證字節完整地傳遞,並且按順序,並且一次或根本不傳輸。天堂或地球上的任何力量都無法保證交付。 – EJP

回答

-1

TCP是無連接網絡IP上的面向連接的協議。因此,爲了有一個連接的概念,每一端都必須確認從另一端收到的數據。這是通過ACK消息(或確認消息)來實現的。爲了TCP正常工作,每個傳輸的字節都需要被確認(只有這樣它才能成爲面向連接的協議)。但是,請注意,這並不意味着每個發送的數據包都需要使用確認消息進行回覆。需要的是'最終'發送的所有數據都被確認。回覆每個發送的數據包將嚴重影響吞吐量,因此發件人通常可以繼續發送消息,以確保某些數據量不被確認。這被稱爲TCP窗口。除了這個簡單的解釋和TCP的大部分複雜性之外,還有更多的內容來自 - 試圖保持一個窗口的吞吐量(以字節/秒爲最大)。網上可能有很多資源。爲了更好地理解IP網絡和TCP,我強烈建議閱讀「TCP/IP Illustrated - Volume 1」。

+0

謝謝爲您的回覆 –

+0

這裏錯誤太多。面向連接的協議由啓動和終止握手定義,而不是由協議中的ACK出現。基於NACK的協議存在。並非每個字節都在TCP中明確確認。 – EJP

+0

啓動和終止是「顯式連接建立」。你的意思是說 - 啓動/終止握手就足夠了,並且不需要針對面向連接的協議的中間ACK?另外 - 我並不是說基於NACK的協議不能存在,這是TCP的一個非常特殊的情況,所以基於ACK的機制就足夠了。請仔細閱讀 - 我已經說過 - '最終'每個發送的字節都需要被確認,那麼錯誤在哪裏呢? – gabhijit