TCP與UDP協議
在OSI模型中,TCP和UDP都適用於第四層,即IP層之上的傳輸層。TCP和UDP都支持兩種不同的數據傳輸方式,TCP是面向連接的,UDP是無連接的。
在數據包的傳輸過程中,存在兩個主要的約束:一個是可靠性,另一個是延遲。可靠性保證了數據包的傳遞,延遲是數據包的及時傳遞。兩者不能同時達到峰值,但可以進行優化。
為了啟動兩個節點之間的數據通信,發送方應該知道接收方的IP以及端口號。IP地址用於路由數據包,端口號用於將數據包移交給正確的人。在一個真實世界的例子中進一步解釋這個場景,想象一個複雜的多購物環境,有人指示你去30號店(理髮廳),金色廣場,公園大道21號,要到達這個地方,你只需要知道21號公園大道,但要從saloon獲得服務,你需要知道商店的編號是30。你可以假設21號作為IP地址,30號商店作為端口號。
與在數據通信和應用程序服務模型中一樣,TCP應用程序監聽端口號來接受TCP連接。與UDP應用程序一樣,還監聽端口號來提供UDP服務。
TCP協議:
定義見RFC 793
TCP是面向連接的端到端可靠協議,支持有保證的數據傳輸。從建立連接本身來說,TCP保證了可靠性。TCP的一些主要特性包括三路握手(SYN、SYN-ACK、ACK)、錯誤檢測、慢啟動、流量控制和擁塞控制。
TCP是一種可靠的傳輸機制,因此即使在擁塞情況下也必須進行數據包傳輸,它也將被使用。TCP應用程序和端口號的典型示例是FTP數據(20)、FTP控制(21)、SSH(222)、Telnet(23)、Mail(25)、DNS(53)、HTTP(80)、POP3(110)、SNMP(161)和HTTPS(443)。這些都是眾所周知的TCP應用程序。
UDP協議:
RFC 768中定義
UDP(用戶數據報協議)是一種簡單的傳輸協議,提供不可靠的服務。這並不意味著UDP不會傳送數據,但是沒有監控擁塞控制或丟包等機制,因為它簡單,避免了網絡接口的開銷處理。實時應用程序大多使用UDP,因為丟棄數據包比延遲數據包更好。典型的例子是IP語音媒體流。
小結:
(1) TCP是面向連接且可靠的,而UDP是連接較少且不可靠的。
(2) TCP需要在網絡接口級別進行更多處理,而在UDP中則不然。
(3) TCP採用了三路握手、擁塞控制、流量控制等機制來保證傳輸的可靠性。