一、TCP和UDP
TCP
TCP 是面向連接的、可靠的流協(xié)議。流就是指不間斷的數(shù)據(jù)結構,當應用程序采用 TCP 發(fā)送消息時,雖然可以保證發(fā)送的順序,但還是猶如沒有任何間隔的數(shù)據(jù)流發(fā)送給接收端。TCP是面向面向字節(jié)流,雖然應用程序和TCP的交互是一次一個數(shù)據(jù)塊(大小不等),但TCP把應用程序看成是一連串的無結構的字節(jié)流。TCP有一個緩沖,當應用程序傳送的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。
TCP 為提供可靠性傳輸,實行“順序控制”或“重發(fā)控制”機制。此外還具備“流控制(流量控制)”、“擁塞控制”、提高網(wǎng)絡利用率等眾多功能。
TCP有以下特點:
TCP充分地實現(xiàn)了數(shù)據(jù)傳輸時各種控制功能,可以進行丟包時的重發(fā)控制,還可以對次序亂掉的分包進行順序控制。而這些在 UDP 中都沒有。此外,TCP 作為一種面向有連接的協(xié)議,只有在確認通信對端存在時才會發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費。根據(jù) TCP 的這些機制,在 IP 這種無連接的網(wǎng)絡上也能夠實現(xiàn)高可靠性的通信(?主要通過檢驗和、序列號、確認應答、重發(fā)控制、連接管理以及窗口控制等機制實現(xiàn))。UDP
UDP 是面向報文的,所謂面向報文,是指面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發(fā)送,即一次發(fā)送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片,降低效率。若太短,會是IP太小。
UDP 是不具有可靠性的數(shù)據(jù)報協(xié)議,細微的處理它會交給上層的應用去完成。在 UDP 的情況下,雖然可以確保發(fā)送消息的大小,卻不能保證消息一定會到達。因此,應用有時會根據(jù)自己的需要進行重發(fā)處理。
UDP有以下特點:
UDP 不提供復雜的控制機制,利用 IP 提供面向無連接的通信服務。傳輸途中出現(xiàn)丟包,UDP 也不負責重發(fā)。當包的到達順序出現(xiàn)亂序時,UDP沒有糾正的功能。并且它是將應用程序發(fā)來的數(shù)據(jù)在收到的那一刻,立即按照原樣發(fā)送到網(wǎng)絡上的一種機制。即使是出現(xiàn)網(wǎng)絡擁堵的情況,UDP 也無法進行流量控制等避免網(wǎng)絡擁塞行為。如果需要以上的細節(jié)控制,不得不交由采用 UDP 的應用程序去處理。UDP 常用于以下幾個方面:1.包總量較少的通信(DNS、SNMP等);2.視頻、音頻等多媒體通信(即時通信);3.限定于 LAN 等特定網(wǎng)絡中的應用通信;4.廣播通信(廣播、多播)。總結
TCP 和 UDP 的優(yōu)缺點無法簡單地、絕對地去做比較:TCP 用于在傳輸層有必要實現(xiàn)可靠傳輸?shù)那闆r;而在一方面,UDP 主要用于那些對高速傳輸和實時性有較高要求的通信或廣播通信。TCP 和 UDP 應該根據(jù)應用的目的按需使用。
延伸閱讀:
二、UDP首部格式
不像TCP報文那么復雜的首部內容。UDP的首部只有首部字段只有 8 個字節(jié),由四個字段組成,每個字段的長度是 2 個字節(jié)。
源端口;目的端口;長度:UDP 用戶數(shù)據(jù)報的長度,在只有首部的情況,其最小值是8。校驗和:檢測 UDP 用戶數(shù)據(jù)報在傳輸中是否有錯,有錯就丟棄。