CH5-傳輸層-TCP實(shí)現(xiàn).ppt_第1頁
CH5-傳輸層-TCP實(shí)現(xiàn).ppt_第2頁
CH5-傳輸層-TCP實(shí)現(xiàn).ppt_第3頁
CH5-傳輸層-TCP實(shí)現(xiàn).ppt_第4頁
CH5-傳輸層-TCP實(shí)現(xiàn).ppt_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1,計(jì)算機(jī)網(wǎng)絡(luò),第 5 章 傳輸層,2,第 5 章 傳輸層,5.1 傳輸層協(xié)議概述 5.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 5.3 傳輸控制協(xié)議 TCP 概述 5.4 TCP 的傳輸連接管理 5.5 TCP 報(bào)文段的首部格式,3,4,5.4 TCP 的傳輸連接管理,5.4.1 TCP 的連接建立 5.4.2 TCP 的連接釋放 5.4.3 TCP 連接的實(shí)現(xiàn),5,用三次握手建立 TCP 連接的各狀態(tài),CLOSED,CLOSED,A,B,客戶,服務(wù)器,5.4.1 TCP 的連接建立,6,5.4.3 TCP連接的實(shí)現(xiàn),操作系統(tǒng)的系統(tǒng)調(diào)用(system call)機(jī)制 操作系統(tǒng)通過系統(tǒng)調(diào)用在應(yīng)用程序和操作系統(tǒng)之間傳遞控制權(quán)。 對(duì)程序員來說,每一個(gè)系統(tǒng)調(diào)用和一般程序設(shè)計(jì)中的函數(shù)調(diào)用非常相似,只是系統(tǒng)調(diào)用是將控制權(quán)傳遞給了操作系統(tǒng)。,多個(gè)應(yīng)用進(jìn)程 使用系統(tǒng)調(diào)用的機(jī)制,應(yīng)用程序 1,應(yīng)用程序 2,應(yīng)用程序 n,由應(yīng)用程序調(diào)用的系統(tǒng)函數(shù),包括 TCP/IP 協(xié)議軟件的操作系統(tǒng)內(nèi)核,8,應(yīng)用編程接口 API (Application Programming Interface),當(dāng)某個(gè)應(yīng)用進(jìn)程啟動(dòng)系統(tǒng)調(diào)用時(shí),控制權(quán)就從應(yīng)用進(jìn)程傳遞給了系統(tǒng)調(diào)用接口。 操作系統(tǒng)將此調(diào)用轉(zhuǎn)給某個(gè)內(nèi)部過程,并執(zhí)行所請(qǐng)求的操作。 內(nèi)部過程一旦執(zhí)行完畢,控制權(quán)就又通過系統(tǒng)調(diào)用接口返回給應(yīng)用進(jìn)程。 系統(tǒng)調(diào)用接口實(shí)際上就是應(yīng)用進(jìn)程的控制權(quán)和操作系統(tǒng)的控制權(quán)進(jìn)行轉(zhuǎn)換的一個(gè)接口,即應(yīng)用編程接口 API。,9,應(yīng)用進(jìn)程通過套接字接入到網(wǎng)絡(luò),應(yīng)用進(jìn)程,TCP,由應(yīng)用程序 控制,因特網(wǎng),由操作系統(tǒng) 控制,客戶,服務(wù)器,套接字,TCP,應(yīng)用進(jìn)程,套接字,10,套接字的作用,操作系統(tǒng)創(chuàng)建套接字 應(yīng)用進(jìn)程請(qǐng)求操作系統(tǒng)為其創(chuàng)建“套接字”,以便把網(wǎng)絡(luò)通信所需要的系統(tǒng)資源分配給該應(yīng)用進(jìn)程; 操作系統(tǒng)建立套接字描述符 建立好后,把此號(hào)碼返回給應(yīng)用進(jìn)程。應(yīng)用進(jìn)程所進(jìn)行的網(wǎng)絡(luò)操作都必須使用這個(gè)號(hào)碼。 應(yīng)用進(jìn)程關(guān)閉套接字 通信完畢后,應(yīng)用進(jìn)程通過一個(gè)關(guān)閉套接字的系統(tǒng)調(diào)用通知操作系統(tǒng)回收與該“號(hào)碼”相關(guān)的所有資源。,11,套接字描述符表 (每一個(gè)進(jìn)程一個(gè)描述符),0: 1: 2: 3: 4:,操作系統(tǒng),套接字的數(shù)據(jù)結(jié)構(gòu),協(xié)議族:PF_INET,服務(wù):SOCK_STREAM,本地 IP 地址:,遠(yuǎn)地 IP 地址:,本地端口:,遠(yuǎn)地端口:,調(diào)用 socket 創(chuàng)建套接字,12,首 部,0,4,8,16,19,24,31,版 本,標(biāo)志,生 存 時(shí) 間,協(xié) 議,標(biāo) 識(shí),總 長 度,片 偏 移,填 充,首 部 檢 驗(yàn) 和,源 地 址,目 的 地 址,可 選 字 段 (長 度 可 變),位,首部長度,數(shù) 據(jù) 部 分,固 定 部 分,可變 部分,區(qū) 分 服 務(wù),13,運(yùn)輸層,網(wǎng)絡(luò)層,首部,TCP,UDP,ICMP,IGMP,OSPF,數(shù) 據(jù) 部 分,IP 數(shù)據(jù)報(bào),14,TCP 首部,20 字節(jié)的 固定首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,32 位,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,TCP 數(shù)據(jù)部分,TCP 首部,TCP 報(bào)文段,IP 數(shù)據(jù)部分,IP 首部,發(fā)送在前,TCP 報(bào)文段的首部格式,15,幾種常用的系統(tǒng)調(diào)用 1. 連接建立階段,把本地地址綁定到套接字 當(dāng)套接字被創(chuàng)建后,它的端口號(hào)和 IP 地址都是空的,因此應(yīng)用進(jìn)程要調(diào)用 bind(綁定)來指明套接字的本地地址。在服務(wù)器端調(diào)用 bind 時(shí)就是把熟知端口號(hào)和本地IP地址填寫到已創(chuàng)建的套接字中。 服務(wù)器進(jìn)入被動(dòng)監(jiān)聽方式 在調(diào)用 bind 后,還必須調(diào)用 listen(收聽)把套接字設(shè)置為被動(dòng)方式,以便隨時(shí)接受客戶的服務(wù)請(qǐng)求。 UDP服務(wù)器由于只提供無連接服務(wù),不使用 listen 系統(tǒng)調(diào)用。 服務(wù)器進(jìn)入接受方式 緊接著就調(diào)用 accept(接受),以便把遠(yuǎn)地客戶進(jìn)程發(fā)來的連接請(qǐng)求提取出來; 系統(tǒng)調(diào)用 accept 的一個(gè)變量就是要指明從哪一個(gè)套接字發(fā)起的連接。,16,系統(tǒng)調(diào)用使用順序的例子,服務(wù)器端,socket,bind,listen,accept,recv,send,close,客戶端,socket,recv,send,close,connect,連接建立請(qǐng)求,17,伯克利套接字(Berkeley Socket),TCP套接字傳輸原語,18,第 5 章 傳輸層,5.1 傳輸層協(xié)議概述 5.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 5.3 傳輸控制協(xié)議 TCP 概述 5.4 TCP 的傳輸連接管理 5.5 TCP 報(bào)文段的首部格式,19,第 5 章 傳輸層,5.1 傳輸層協(xié)議概述 5.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 5.3 傳輸控制協(xié)議 TCP 概述 5.4 TCP 的傳輸連接管理 5.5 TCP 報(bào)文段的首部格式,20,TCP 首部,20 字節(jié)的 固定首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,32 位,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,TCP 數(shù)據(jù)部分,TCP 首部,TCP 報(bào)文段,IP 數(shù)據(jù)部分,IP 首部,發(fā)送在前,5.5 TCP 報(bào)文段的首部格式,21,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。,22,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,序號(hào)字段占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。,23,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,確認(rèn)號(hào)字段占 4 字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。,24,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,數(shù)據(jù)偏移(即首部長度)占 4 位,它指出 TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位是 32 位字(以 4 字節(jié)為計(jì)算單位)。,25,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,保留字段占 6 位,保留為今后使用,但目前應(yīng)置為 0。,26,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,緊急 URG 當(dāng) URG 1 時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。,27,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,確認(rèn) ACK 只有當(dāng) ACK 1 時(shí)確認(rèn)號(hào)字段才有效。當(dāng) ACK 0 時(shí),確認(rèn)號(hào)無效。,28,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,推送 PSH (PuSH) 接收 TCP 收到 PSH = 1 的報(bào)文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。,29,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,復(fù)位 RST (ReSeT) 當(dāng) RST 1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。,30,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,同步 SYN 同步 SYN = 1 表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。,31,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,終止 FIN (FINis) 用來釋放一個(gè)連接。FIN 1 表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。,32,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,窗口字段 占 2 字節(jié),用來讓對(duì)方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié)。,33,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,檢驗(yàn)和 占 2 字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在 TCP 報(bào)文段的前面加上 12 字節(jié)的偽首部。,34,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,緊急指針字段 占 16 位,指出在本報(bào)文段中緊急數(shù)據(jù)共有多少個(gè)字節(jié)(緊急數(shù)據(jù)放在本報(bào)文段數(shù)據(jù)的最前面)。,35,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,選項(xiàng)字段 長度可變。TCP 最初只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度 MSS。MSS 告訴對(duì)方 TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是 MSS 個(gè)字節(jié)?!?MSS (Maximum Segment Size) 是 TCP 報(bào)文段中的數(shù)據(jù)字段的最大長度。 數(shù)據(jù)字段加上 TCP 首部 才等于整個(gè)的 TCP 報(bào)文段。,36,其他選項(xiàng),窗口擴(kuò)大選項(xiàng) 占 3 字節(jié),其中有一個(gè)字節(jié)表示移位值 S。新的窗口值等于TCP 首部中的窗口位數(shù)增大到(16 + S),相當(dāng)于把窗口值向左移動(dòng) S 位后獲得實(shí)際的窗口大小。 時(shí)間戳選項(xiàng)占10 字節(jié),其中最主要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論