4、傳輸層協(xié)議
主要有兩個協(xié)議:UDP協(xié)議和TCP協(xié)議。
UDP ( User Datagram Protocol ):提供無連接的通信,并不保證數(shù)據(jù)包被發(fā)送到。典型的即時傳輸少量數(shù)據(jù)的應用程序使用 UDP 。 UDP 是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議:進程的每個輸出操作都正好產(chǎn)生一個 UDP 數(shù)據(jù)報,并組裝成一份待發(fā)送的 IP 數(shù)據(jù)報。這與面向流字符的協(xié)議不同,如 TCP ,應用程序產(chǎn)生的全體數(shù)據(jù)與真正發(fā)送的單個 IP 數(shù)據(jù)報可能沒有什么聯(lián)系。UDP不提供可靠性:它把應用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達目的地。端口號表示發(fā)送進程和接收進程。UDP長度字段指的是UDP首部和UDP數(shù)據(jù)的字節(jié)長度。該字段的最小值為8字節(jié)。(發(fā)送一份0字節(jié)的UDP數(shù)據(jù)報是OK。)這個UDP長度是有冗余的。IP數(shù)據(jù)報長度指的是數(shù)據(jù)報全長,因此UDP數(shù)據(jù)報長度是全長減去IP首部的長度(該值在首部長度字段中指定)。
UDP報頭格式報頭字段名 位數(shù) 說 明 源端口號 16 發(fā)送主機的UDP端口 目的端口號 16 目標主機的UDP端口 消息長度 16 UDP消息的長度 校驗和 16 驗證報頭是否損壞
TCP ( Transmission Control Protocol ):為典型的傳輸大量數(shù)據(jù)或需要接收數(shù)據(jù)許可的應用程序提供連接定向和可靠的通信。
由于 TCP 連接是一個全雙工的數(shù)據(jù)通道,一個連接的關閉必須由通信雙方共同完成。當通信的一方?jīng)]有數(shù)據(jù)需要發(fā)送給對方時,可以使用 FIN 段 向?qū)Ψ桨l(fā)送關閉連接請求。這時,它雖然不再發(fā)送數(shù)據(jù),但并不排斥在這個連接上繼續(xù)接收數(shù)據(jù)。只有當通信的對方也遞交了關閉連的請求后,這個 TCP 連接才會完全關閉。在關閉連接時,既可以由一方發(fā)起而另一方響應,也可以雙方同時發(fā)起。無論怎樣,收到關閉連接請求的一方必須使用 ACK 段 給予確認。實際上, TCP 連接的關閉過程也是一個三次握手的過程。
滑動窗口:是兩臺主機間傳送數(shù)據(jù)時的緩沖區(qū)。每臺 TCP/IP 主機支持兩個滑動窗口:一個用于接收數(shù)據(jù),另一個用于發(fā)送數(shù)據(jù)。窗口尺寸表示計算機可能緩沖的數(shù)據(jù)量大小。當 TCP 從應用層中接收數(shù)據(jù)時,數(shù)據(jù)們于 Send 窗口。 TCP 將一個帶序列號的報頭加入數(shù)據(jù)包并將其交給 IP ,由 IP 將它發(fā)送到目標主機。當每一個數(shù)據(jù)包傳送時,源主機設置重發(fā)計時器(描述在重新發(fā)送數(shù)據(jù)包之前將等待 ACK 的時間)。在 Send 窗口中有每一個數(shù)據(jù)包的備份,直到收到 ACK 。當數(shù)據(jù)包到達服務器 Receive 窗口,它們按照序列號放置。當接收到連續(xù)的段時就向源主機發(fā)送一個關于數(shù)據(jù)的認可( ACK ),其中帶有當前窗口尺寸。一旦源主機接收到認可, Send 窗口將由已獲得認可的數(shù)據(jù)滑動到等待發(fā)送的數(shù)據(jù)。如果有重發(fā)計時器設定的時間內(nèi),源主機沒有接收到對現(xiàn)存數(shù)據(jù)的認可,數(shù)據(jù)將重新傳送。重發(fā)數(shù)據(jù)包將加重網(wǎng)絡和源主機的負擔。如果 Receive 窗口接收數(shù)據(jù)包的順序錯亂,那么將強制啟動,延遲發(fā)送認可 。
TCP段頭結(jié)構 報頭字段名 位數(shù) 說 明 源端口號 16 本地通信端口,支持TCP的多路復用機制 目的端口號 16 遠地通信端口,支持TCP的多路復用機制 序號(SEQ) 32 數(shù)據(jù)段第一個數(shù)據(jù)字節(jié)的序號(除含有SYN的段外);SYN段的SYN序號(建立本次連接的初始序號) 確認號(ACK) 32 表示本地希望接收的下一個數(shù)據(jù)字節(jié)的序號 數(shù)據(jù)偏移 32 指出該段中數(shù)據(jù)的超始位置(以32位為單位) 控制字段URG 1 緊急指針字段有效標志,即該段中攜帶緊急數(shù)據(jù) 控制字段 ACK 1 確認號字段有效標志 控制字段 PUSH 1 PUSH操作的標志 控制字段 RST 1 要求異常終止通信連接的標志 控制字段 SYN 1 建立同步連接的標志 控制字段 FIN 1 本地數(shù)據(jù)發(fā)送已結(jié)束,終止連接的標志 窗口 16 本地接收窗口尺寸,即本地接收緩沖區(qū)大小 校驗和 16 包括TCP報頭和數(shù)據(jù)在內(nèi)的校驗和 緊急指針 16 從段序號開始的正向位移,指向緊急數(shù)據(jù)的最后一個字節(jié) 選項 可變 提供任選的服務 填充 可變 保證TCP報頭以32位為邊界對齊。
相關推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |