【T07】不要低估tcp的效能

Andy Niu發表於2017-02-11
1、tcp在ip的基礎上增加了校驗和、可靠性和流量控制的功能,而udp只增加了校驗和的功能,看起來udp應該會比tcp快很多,
    但事實不是這樣,有時候tcp比udp的效能還要好。
2、思考,在什麼情況下udp的效能要好於tcp,以及為什麼?
3、這兩種協議的cpu開銷主要是進行資料拷貝和校驗,二者區別不大。
4、tcp為了提供可靠的傳輸,會傳送ack包進行確認,但是這個工作量不大。首先,ack往往會作為捎帶資訊附屬在包含資料的報文段中,
    其次,tcp沒有必要對每個段都進行ack,可以間隔一段時間對多個段一起進行ack。
5、相對於ucp,tcp在建立連線三次握手,拆除連線四次握手,如果連線維持的時間比較長,進行大量的互動,
    連線的建立和拆除被分攤下來,對整個的效能影響很小。
    如果應用程式只是進行簡短的請求應答回話,udp的效能好。
    如果應用程式持續時間比較長,並且進行大量的資料傳輸,tcp的效能會好於udp
6、客戶端和服務端都是本地,tcp的效能要遠遠好於udp,這個奇怪的現象是因為BSD的tcp協議庫實現,
    無論是不是環路udp的MTU是1500,對於環路的tcp的MTU可以達到1萬5千多。注意:對於環路,資料包並不經過網路,
    而是直接放入接收佇列。

相關文章