緒論:傳輸層定義了主機應用程序之間端到端的連通信。傳輸層中最爲常見的兩個協議分別是傳輸控制協議(TCP:Transmission Controller Protocol)和用戶數據包協議(UDP:User Datagram Protocol)。
傳輸層是基於端口的協議。因爲PC是多進程的,IP在互聯網上標識了主機,端口則標識了主機進程。
一般情況下,源端口是隨機產生的,知名目標端口是固定的(0-1023),動態端口範圍1024-65535
FTP:文件傳輸協議 基於TCP協議 20端口用於數據傳輸 21端口用於控制信令傳輸
TFTP(Trivial File Transfer Protocol)簡單文件傳輸協議 基於UDP協議 默認端口69
HTTP:超文本傳輸協議 TCP協議80端口
Telnet:遠程終端協議 基於TCP協議 默認端口23
SNMP:標準的SNMP協議採用的默認端口是161 162
SSH:安全外殼協議 華爲稱作(stelnet) 默認端口爲22
SMTP:TCP端口25
POP3:郵局協議 C/S架構 基於TCP協議 110端口
IMAP4:互聯網消息存取協議 默認端口143
DHCP:動態主機配置協議 服務器67 客戶端68
DNS:域名系統 默認端口53
Windows默認遠程接口:3389
1、UDP
UDP是一種面向無連接的傳輸層協議,傳輸可靠性無法保證。是基於數據報的協議(發多少傳多少)。
當應用程序對傳輸的可靠性要求不高(對丟包不敏感)、但是對傳輸速率和延遲要求較高時採用UDP。
可以支持多播可廣播
UDP報頭:
S.port:16位,源主機應用程序端口號
D.port:16位,目的主機應用程序端口號
Length:UDP頭部和數據的字節長度。因爲UDP頭部是8字節,所以該字段最小值爲8位
Checksum:字段可選,校驗整個數據報(頭部+數據)
利用UDP傳輸數據:
當A、B雙方用UDP協議傳輸數據包時,這些數據包是以有序的方式傳輸到網絡中的,每個數據包獨立地在網絡中被髮送,所以不同的數據包可能會通過不同的網絡路徑到達主機B。這樣的情況下,先發送的數據包不一定先到達主機B。因爲UDP數據包沒有序號,主機B將無法通過UDP協議將數據包按照原來的順序重新組合,所以此時需要應用程序提供報文的到達確認、排序和流量控制等功能。通常情況下,UDP採用實時傳輸機制和時間戳來傳輸語音和視頻數據。
UDP總結:
UDP不提供重傳機制,佔用資源小(頭部只有8B),處理效率高。
一些時延敏感額流量,如語音、視頻等,同時使用UDP作爲傳輸協議。(延遲的變量叫做抖動)
2、TCP
面向連接、可靠字節流服務。只支持單播,有滑動窗口機制。
TCP頭部:
S.port:源主機的應用程序使用的端口 16位
D.port:目的主機的應用程序使用的端口 16位
Seq.num:32位序列號 Fin和Syn佔用序列號
Ack.num:32位確認號 用於標識接收端確認收到的數據段,確認收到+1
Header length:4位頭部信息 表示頭部信息是20-60字節
Window:16位窗口大小,表示接收方期望通過單次確認而收到的數據的大小
Check sum:16位校驗和,校驗整個TCP報文(頭部和數據) 65535B
TCP建立連接過程(3次握手):因爲第2和3報文時間很短,間隔可以忽略,所以此處合二爲一稱作SYN+ACK報文
因爲TCP支持全雙工模式進行傳輸數據,這需要在同一時刻兩個方向都快可以進行數據傳輸。因此在進行數據傳輸前通過三次握手建立連接,因爲要建立雙向傳輸,所以需要進行兩次收發(如圖),因爲第2,3次間隔時間可以忽略不記,所以最後形成三次握手。
TCP數據傳輸:
目的設備接收到源設備發送的數據段時,會向源端發送確認報文,源設備收到確認報文後,繼續發送報文。
TCP流量控制:
**TCP採用滑動窗口技術通過動態改變窗口的大小來實現端到端設備之間的數據傳輸進行流量控制。
此處引入了MSS概念(最大報文段長度 Maximum Segment Size):用來約束每個TCP連接報文段最大數據長度。
主要是爲了避免在數據鏈路層進行分段。因爲MTU最大爲1500。IP報頭爲20B(一般),TCP報頭爲20B(一般)。因此MSS一般爲1460B。如圖中雙方互相協商的MSS是1024B。
Windows是窗口大小,通過協商接收方的窗口大小,來進行驗證,使得發送方發送的數據填滿接收方窗口大小的內存時再進行驗證,提高效率。
TCP中斷連接(4次揮手) :同理需要結束雙工。因爲第2個報文,或許會存在B對A的數據未發送完的情況,因此2,3不能合併。