傳輸層定義了主機應用程序之間端到端的連通性。傳輸層中最為常見的兩個協議分別是傳輸控制協議TCP ( Transmission Control Protocol)和用戶數據包協議UDP(User Datagram Protocol)。
一、TCP (Transmission Control Protocol)
TCP位于TCP/IP模型的傳輸層,它是一種面向連接的端到端協議。TCP作為傳輸控制協議可以為主機提供可靠的數據傳輸。
TCP端口號
端口號用來區分不同的網絡服務。
TCP允許一個主機同時運行多個應用進程。每臺主機可以擁有多個應用端口,每對端口號、 源和目標IP地址的組合唯一地標識了一個會話。
端口分為知名端口和動態端口。
有些網絡服務會使用固定的端口,這類端口稱為知名端口,端口號范圍為0-1023。如FTP、HTTP、Telnet, SNMP服務均使用知名端口。
動態端口號范圍從1024到65535,這些端口號一般不固定分配給某個服務。
TCP報文頭部
源端口: 數據發送方的端口號。
目的端口: 數據接受方的端口號。
序列號:本數據報文中的的第一個字節的序列號。
確認號:希望收到的下一個數據報文中的第一個字節的序號。
URG:值為1時表示次報文段中有需要緊急處理。
ACK:值為1時確認號有效,值為0時確認號無效。
PSH:值為1時有 DATA數據傳輸。
RST:值為1時表示TCP連接存在嚴重的錯誤,需要重新進行連接。
SYN:值為1表示這是一個連接請求或連接接受報文。
FIN: 值為1表示要發送的數據報已經發送完畢,需要斷開連接。
窗口字段:TCP連接的一端根據緩存空間的大小來確定自己接受窗口的大小,限制發送放的窗口上限。
檢驗和:用來檢驗首部和數據兩部分的正確性。
緊急指針字段:本報文緊急數據的最后一個字節的序號。
二、UDP (User Datagram Protocol)
UDP是一種面向無連接的傳輸層協議,傳輸可靠性沒有保證。
當應用程序對傳輸的可靠性要求不高,但是對傳輸速度和延退要求較高時,可以用UDP協議來替代TCP協議在傳輸層控制數據的轉發。UDP將數據從源端發送到目的端時,無需事先建立連接。UDP采用了簡單、易操作的機制在應用程序間傳輸數據,沒有使用TCP中的確認技術或滑動窗口機制,因此UDP不能保證數據傳輸的可靠性,也無法避免接收到重復數據的情況。
UDP報文頭部
UDP頭部僅占8字節,傳輸數據時沒有確認機制。
UDP適合于實時數據傳輸,如語音和視頻通信。相比于TCP,UDP的傳輸 效率更高、開稍更小,但是無法保障數據傳輸的可靠性。
源端口: 數據發送方的端口號。
目的端口: 數據接受方的端口號。
UDP長度:UDP報文的字節長度(包括首部和數據)。
UDP校驗和: 檢驗UDP首部和數據部分的正確性。