Networking
UDP和TCP有什麼區別?
我的路由器有兩個協議(和一個“兩者”選項),我可以在設置埠轉發時選擇它們:UDP 和 TCP。這兩種協議有什麼區別?什麼時候在埠轉發中選擇另一種?
TCP由確認和重試支持,以確保您的數據到達目的地。UDP是無連接的並且“即發即棄”。UDP 主要用於流式應用程序,如果您失去了一些數據,則無需再次嘗試發送。
您使用哪一種取決於應用程序。例如,Web 伺服器使用 TCP。
你可以在這裡找到一個很好的總結:
TCP 和 UDP 都工作在傳輸層 TCP/IP 模型上,但用途卻大不相同。
最重要的區別是:
- 可靠性:
TCP:面向
連接 UDP:無連接
- Ordered:
TCP:保證消息接收的
順序 UDP:不保證順序
- 協議權重:
TCP:重量級,因為連接/排序成本
UDP:輕量級,成本很少
- 數據包:
TCP:流式傳輸,數據作為“流”讀取,沒有區別一個數據包在哪裡結束,另一個數據包從哪裡開始。每個讀取呼叫可能有多個數據包。
UDP:數據報,每次讀取呼叫一個數據包。
框架結構
當數據通過網路發送時,需要將其封裝成所謂的“幀”。根據所使用的協議和拓撲,有多種封裝方法。下圖顯示了 TCP 和 UDP 幀結構的不同之處。
這是 TCP 幀結構:
這個UDP幀結構,簡單多了:
使用 TCP 的典型協議是 HTTP、FTP 和 SMTP。使用 UDP 的協議範例有 DNS 和 DHCP。