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