2012-03-04 20 views
0

我構建了一個爲TCP和UDP傳輸提供一些統計信息的程序。客戶端發送一個包含30KB數據的數據包,並連續發送100次到服務器。這種情況下的客戶端和服務器通過以太網連接。目前困擾我的是,在我的結果中,TCP比UDP完成速度快了近2倍。比以太網上的UDP更快的TCP?

我做了一些研究,我已經看到了涉及MTU和這樣的解釋,但我似乎無法將其都連接在我的腦海裏。有人可以解釋發生了什麼嗎?我的結果是否有意義?

+0

您可以使用某些網絡流量監控工具(如Ethereal或wireshark)監控傳輸,以瞭解到底發生了什麼。 – 2012-03-04 05:18:02

+0

你在UDP中使用連接的套接字嗎?還是你在調用sendto?另外,客戶端和服務器是否位於同一個LAN上? – mac 2012-03-05 16:10:21

回答

1

最有可能你看到了nagle算法的效果。 http://en.wikipedia.org/wiki/Nagle's_algorithm。

TCP將「等待」更多的數據的時間週期短,在一個單一的包,其中,UDP將發送每個單獨的數據報一起發送。

+0

我明白這一點,但爲什麼只有當我通過以太網連接時TCP速度更快,但一旦切換到無線網絡,UDP會變得更快 - 這正是我所期望的。 – 2012-03-04 05:19:47

+0

naggle算法在「填充」到MTU的數據包時起作用,但在這種情況下,數據包的大小爲30K,所以不應該有任何影響。關於無線性能,它可能是由於更多的重新傳輸減慢了TCP,而UDP根本不在意 – mac 2012-03-05 14:12:48