網絡基礎-TCP協議格式及其與UDP的對比

TCP協議段格式

這裏寫圖片描述
下面對上面的各個字段進行解釋:

  • 源/目的端口號:表示數據是從哪個進程來,到那個進程去;
  • 序列號:指發送數據的位置,每發送一次,就累加一次該數據字節數的大小;
  • 確認應答號:是指下一次應該收到的數據的序列號;
  • 首部長度:該字段可以看作TCP傳輸的數據部分應該從TCP包的哪個位開始計算。
  • 保留位:該字段主要是爲了以後擴展時使用,其長度爲4位.一般設置爲0,但即使收到的包在該字段不爲0,此包也不會被丟棄。
  • 標誌控制位:
    • CWR:用於IP首部的ECN字段。
    • ECE: 置爲1會通知通信對方,從對方到這邊的網絡有堵塞。在收到數據包的IP首部中ECN爲1時將TCP首部中的ECE設置爲1.
    • URG:該位爲1時,表示包中有需要緊急處理的數據。
    • ACK:該位爲1時,確認應答的字段變爲有效
    • PSH:該位爲1時,表示需要立刻將將收到的數據傳給上層;爲0先緩存
    • RST:該位爲1時,表示TCP連接中出現異常必須強制斷開連接
    • SYN:該位爲1時,表示希望建立連接
    • FIN:該位爲1時,表示今後不再有數據傳送,希望斷開連接
  • 窗口大小:用於通知能夠接收的數據大小;如果窗口爲0,可以發送一個窗口探測,必須是1字節,用於瞭解最新窗口大小。
  • 檢驗和:TCP的檢驗和與UDP相似,區別在於TCP的檢驗和無法關閉
  • 緊急指針:只有在URG爲1時纔有效,表示本報文段中緊急數據的指針
  • 選項:選項字段用於提高TCP的傳輸性能

使用檢驗和的目的

數據鏈路層可以檢查出由於噪聲干擾出現的位錯誤。那麼爲什麼在傳輸層需要檢驗和?
TCP與UDP的檢驗和更像是一種進行路由器內存故障或程序漏洞導致的數據是否被破環的檢查。
路由器的程序中也可能會存在漏洞,或程序異常宕掉的可能。在網絡中的數據傳輸往往會經過很多路由器。一旦在途中的某一個路由器發生故障,經過此路由器的數據極有可能被破壞。
在這種情況下,TCP與UDP如果能夠提高檢驗和計算,也可以判斷協議首部和數據是否會被破壞。

TCP與UDP

現在知道了TCP與UDP各自的特點之後,可能會有一個疑問。TCP提供可靠傳輸。那麼還要UDP幹什麼?
實際上,在UDP和TCP的選擇上是根據實際應用場景決定的。
TCP用於在傳輸層實現可靠傳輸的情況。由於它是面向有連接並具備順序控制重發控制等機制的,所以它可以爲應用提供可靠傳輸
UDP主要用於對高速傳輸和實時性有較高要求的通信或廣播通信。
拿IP電話來說,比起可靠傳輸更重要的是實時的通訊。如果使用TCP,數據在傳輸途中如果由於丟失而觸發重發機制,就無法流暢的傳輸人的聲音了,會導致無法正常交流。
而採用UDP,不會進行重發處理,不會出現聲音大幅度延遲的問題,即使有部分數據丟失,也只會影響一小部分的通話。
再比如網絡視頻,採用UDP而不是TCP,丟失幾幀影響並不大,但是對速度的流暢性要求很高。
下圖爲各自適用的應用:
這裏寫圖片描述
下面再次總結一下TCP與UDP的特點:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章