TCP UDP TCP與UDP基本區別 1. 基於連接與無連接 2. TCP要求系統資源較多,UDP較少; 3. UDP程式結構較簡單 4. 流模式(TCP)與數據報模式(UDP); 5. TCP保證數據正確性,UDP可能丟包 6. TCP保證數據順序,UDP不保證 UDP應用場景: 1. 面向數據 ...
TCP UDP
TCP與UDP基本區別
- 基於連接與無連接
- TCP要求系統資源較多,UDP較少;
- UDP程式結構較簡單
- 流模式(TCP)與數據報模式(UDP);
- TCP保證數據正確性,UDP可能丟包
- TCP保證數據順序,UDP不保證
UDP應用場景:
- 面向數據報方式
- 網路數據大多為短消息
- 擁有大量Client
- 對數據安全性無特殊要求
- 網路負擔非常重,但對響應速度要求高
具體編程時的區別
- socket()的參數不同
- UDP Server不需要調用listen和accept
- UDP收發數據用sendto/recvfrom函數
- TCP:地址信息在connect/accept時確定
- UDP:在sendto/recvfrom函數中每次均 需指定地址信息
- UDP:shutdown函數無效
TCP編程步驟:
TCP編程的伺服器端一般步驟是:
- 創建一個socket,用函數socket();
- 設置socket屬性,用函數setsockopt(); * 可選
- 綁定IP地址、埠等信息到socket上,用函數bind();
- 開啟監聽,用函數listen();
- 接收客戶端上來的連接,用函數accept();
- 收發數據,用函數send()和recv(),或者read()和write();
- 關閉網路連接;
- 關閉監聽;
TCP編程的客戶端一般步驟是:
- 創建一個socket,用函數socket();
- 設置socket屬性,用函數setsockopt();* 可選
- 綁定IP地址、埠等信息到socket上,用函數bind();* 可選
- 設置要連接的對方的IP地址和埠等屬性;
- 連接伺服器,用函數connect();
- 收發數據,用函數send()和recv(),或者read()和write();
- 關閉網路連接;
UDP編程步驟:
UDP服務端一般步驟是:
- 創建一個socket,用函數socket();
- 設置socket屬性,用函數setsockopt();* 可選
- 綁定IP地址、埠等信息到socket上,用函數bind();
- 迴圈接收數據,用函數recvfrom();
- 關閉網路連接;
UDP編程的客戶端一般步驟是:
- 創建一個socket,用函數socket();
- 設置socket屬性,用函數setsockopt();* 可選
- 綁定IP地址、埠等信息到socket上,用函數bind();* 可選
- 設置對方的IP地址和埠等屬性;
- 發送數據,用函數sendto();
- 關閉網路連接;
TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通信傳輸,而UDP則常被用於讓廣播和細節控制交給應用的通信傳輸。
UDP補充:
UDP不提供複雜的控制機制,利用IP提供面向無連接的通信服務。並且它是將應用程式發來的數據在收到的那一刻,立刻按照原樣發送到網路上的一種機制。即使是出現網路擁堵的情況下,UDP也無法進行流量控制等避免網路擁塞的行為。此外,傳輸途中如果出現了丟包,UDP也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用UDP應用程式去處理。換句話說,UDP將部分控制轉移到應用程式去處理,自己卻只提供作為傳輸層協議的最基本功能。UDP有點類似於用戶說什麼聽什麼的機制,但是需要用戶充分考慮好上層協議類型並製作相應的應用程式。
TCP補充:
TCP充分實現了數據傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的包進行順序控制。而這些在UDP中都沒有。此外,TCP作為一種面向有連接的協議,只有在確認通信端存在時才會發送數據,從而可以控制通信流量的浪費。TCP通過檢驗、序列號、確認應答、重發控制、連接管理以及視窗控制等機制實現可靠性傳輸。
TCP與UDP區別總結:
- TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
- TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重覆,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
- TCP面向位元組流,實際上是TCP把數據看成一連串無結構的位元組流;UDP是面向報文的
UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等) - 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
- TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
- TCP的邏輯通信通道是全雙工的可靠通道,UDP則是不可靠通道