運輸層協議TCP和UDP


運輸層協議TCP和UDP

一、用戶數據報協議 UDP

1.1.UDP 概述

  • UDP 只在 IP 的數據報服務之上增加了很少一點的功能,即端口的功能和差錯檢測的功能。
  • 雖然 UDP 用戶數據報只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優點。

1.2.UDP的主要特點

  • UDP 是無連接的,即發送數據之前不需要建立連接。

  • UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。

  • UDP 是面向報文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。

  • UDP 支持一對一、一對多、多對一和多對多的交互通信。

  • UDP 的首部開銷小,只有 8 個字節。

  • **UDP 是面向報文的 **

image-20200128153638409

1.3.UDP 首部的格式

image-20200128153704391

  • 可以看到UDP的首部沒有“編號”字段,因為UDP協議只需要傳輸一個數據包,所以不需要編號。

image-20200128154559409

  • 用戶數據報 UDP 有兩個字段:數據字段首部字段。首部字段有 8 個字節,由 4 個字段組成,每個字段都是兩個字節。

image-20200128154618848

  • 在計算檢驗和時,臨時把“偽首部”和 UDP 用戶數據報連接在一起。偽首部僅僅是為了計算檢驗和。

1.4.計算 UDP 檢驗和的例子

image-20200128154844670

明確需要計算“校驗和”來檢驗UDP報文的准確性即可。


二、傳輸控制協議TCP

在網絡中傳輸數據,有的數據比較小,一個數據包就可以傳完,這時使用UDP協議;有的數據比如電影500M比較大,這就要求把數據分段傳輸,分成的每個段就是一個數據包,依次傳輸和接收。傳輸的過程中有可能丟包,這就導致某些數據包缺失接收端無法打開整個文件,但是網絡層不負責保證可靠傳輸,這就要依靠傳輸層的TCP協議來實現可靠傳輸

再者,TCP協議還要有一個流量控制的功能,簡單點說,服務器功能強大發數據很快,接收端無法及時處理就會給服務器發信息,告訴服務器減緩發送數據的速度。

還必須要有避免網絡擁塞的功能。

2.1.TCP概述

  • TCP 是面向連接的運輸層協議。即傳輸數據前需先建立連接確保網絡通暢。

  • 每一條 TCP 連接只能有兩個端點(endpoint),每一條 TCP 連接只能是點對點的(一對一,一個發一個收)。

  • TCP 提供可靠交付的服務。

  • TCP 提供全雙工通信,A與B通信,A發數據給B,B要給A發送返饋信息,表示數據是否收到。

  • 面向字節流

2.2.TCP面向字節流的概念

image-20200128191303068

應當注意:

  • TCP 連接是一條虛連接而不是一條真正的物理連接。
  • TCP 對應用進程一次把多長的報文發送到TCP 的緩存中是不關心的。
  • TCP 根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP 發送的報文長度是應用進程給出的)。
  • TCP 可把太長的數據塊划分短一些再傳送。TCP 也可等待積累有足夠多的字節后再構成報文段發送出去。

2.3.TCP 的連接

  • TCP 把連接作為最基本的抽象。
  • 每一條 TCP 連接有兩個端點。
  • TCP 連接的端點不是主機,不是主機的IP 地址,不是應用進程,也不是運輸層的協議端口。TCP 連接的端點叫做套接字(socket)或插口
  • 端口號拼接到(contatenated with) IP 地址即構成了套接字。即端點=IP地址+端口號。

image-20200128192333233

  • 每一條 TCP 連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。即:

image-20200128192403388

socket 多種不同的意思

  • 應用編程接口 API 稱為 socket API, 簡稱為 socket。
  • socket API 中使用的一個函數名也叫作 socket。
  • 調用 socket 函數的端點稱為 socket。
  • 調用 socket 函數時其返回值稱為 socket 描述符,可簡稱為 socket。
  • 在操作系統內核中連網協議的 Berkeley 實現,稱為 socket 實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM