1. 程式人生 > >路由交換03-----傳輸層協議

路由交換03-----傳輸層協議

選項 服務 事先 code 資源 重要 效率 不可靠 urg

傳輸層協議

傳輸層比較重要的兩個協議是TCPUDP協議。
1.TCP
TCP是一種可靠的、面向連接的全雙工傳輸層協議。
TCP的報文格式是這樣的:
技術分享圖片
源端口(2字節):源主機應用程序使用的端口號。源端口和IP地址用作標識報文的返回地址。
目的端口(2字節):目的主機應用程序使用的端口號。
序號(4字節):seq序號,標識發送方向接收方發送的數據段的序號。
確認序號(4字節):Ack序號,接收方應答的序號,為接受到的序號+1。
頭長度(4字節):表示i頭部占4字節的數目。
URG:是否為緊急指針,0為不是,1為是。
ACK:請求或者應答連接,用於確認序號有效。
PSH:最快速度傳輸數據。
RST:重建會話。

SYN:同步連接序號,用於建立連接。
FIN:結束連接,為0是請求結束連接,為1是結束連接。
窗口大小(2字節):接收方告訴發送方想接收到的每個數據段的大小,可用於流量控制。
校驗和(2字節):對頭部和數據進行校驗。
緊急指針:當URG為1時生效,表示這個數據是緊急數據,優先發送。
選項:用於記錄路由或者時間戳之類的可選任務。

TCP傳輸數據分為三個過程:建立連接、傳輸數據、關閉連接。
建立連接的過程是一個三次握手的過程,首先,客戶端發送一個標識為SYN,序列為seq=a的數據包,服務器端收到後,要對這個包進行確認,便回復一個SYNACKAck=a+1seq=b的數據包,客戶端收到這個包之後,進行確認,回復一個ACK

seq=a+1Ack=b+1的包,這樣就建立連接了。
註意:ACK是標誌位的,用於確認序號有效。Ack是確認序號,是seq+1
接著就開始傳輸數據。
數據傳輸結束後開始進行關閉連接,即TCP四次揮手。假設客戶端想終止這個連接,於是發送一個數據包:FINACKseq=a,服務器端收到之後,進行確認回復ACKseq=bAck=a+1,確認完客戶端的終止連接之後,服務器端再進行終止連接,向客戶端發送數據包為:FINACKseq=bAck=a+1,客戶端收到之後,知道服務器端也終止連接然後進行確認回復:ACKseq=a+1Ack=b+1,這樣會話就關閉了。

2.UDP
UDP是一種不可靠的、無連接的傳輸層協議,他不像TCP

一樣需要三次握手四次揮手,UDP不需要事先建立連接,因此也無法保證數據的可靠。
UDP報文的頭部是這樣的:
技術分享圖片
源端口(2字節):初始化通信的端口號。
目的端口(2字節):接收方應用程序的地址接口。
UDP數據包長度(2字節):UDP頭和數據的總長度。
校驗和(2字節):數據包的頭部和包內容的校驗。

使用UDP發送數據時,應用程序需要提供報文到達確認、排序、流量控制等功能,UDP沒有像TCP一樣的重傳機制,占用資源小,處理效率高。一般用來傳輸語音、視頻等。

對比
技術分享圖片

路由交換03-----傳輸層協議