m7運輸層協(xié)議及分析_XXXX11.ppt_第1頁
m7運輸層協(xié)議及分析_XXXX11.ppt_第2頁
m7運輸層協(xié)議及分析_XXXX11.ppt_第3頁
m7運輸層協(xié)議及分析_XXXX11.ppt_第4頁
m7運輸層協(xié)議及分析_XXXX11.ppt_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7章 運輸層協(xié)議及分析,7.1 運輸層協(xié)議概述 7.2 TCP/IP 體系中的運輸層 7.3 用戶數(shù)據(jù)報協(xié)議 UDP 7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述 7.4.2 TCP 可靠傳輸?shù)墓ぷ髟?7.4.3 TCP 報文段的首部格式 7.4.4 TCP 的流量控制與擁塞控制 7.4.5 TCP 的重傳機制 7.4.6 TCP 的運輸連接管理 7.5 流控制傳輸協(xié)議(SCTP),7.1 運輸層協(xié)議概述,運輸層向它上面的應(yīng)用層提供通信服務(wù), 屬于面向通信部分的最高層,用戶功能中的最低層。,物理層,網(wǎng)絡(luò)層,運輸層,應(yīng)用層,數(shù)據(jù)鏈路層,面向信息處理,面向通信,用戶功能,網(wǎng)絡(luò)功能,一

2、、運輸層在網(wǎng)絡(luò)體系結(jié)構(gòu)中的作用,運輸層為相互通信的應(yīng)用進程提供了邏輯通信,5 4 3 2 1,運輸層端到端的邏輯通信,主機 A,主機 B,應(yīng)用進程,應(yīng)用進程,路由器 1,路由器 2,AP1,LAN2,WAN,AP2,AP3,AP4,IP 層,LAN1,AP1,AP2,AP4,端口,端口,5 4 3 2 1,IP 協(xié)議的作用范圍,運輸層協(xié)議 TCP 和 UDP 的作用范圍,AP3,二、運輸層要解決的問題,要提供端到端的可靠通信必需解決的問題 在一個連接上實現(xiàn)多對進程間通信的復(fù)用 彌補通信子網(wǎng)提供的差異和不足 解決通信子網(wǎng)自身無法解決的傳輸錯誤 總之,運輸層填補了高層用戶的要求與通信子網(wǎng)提供的服務(wù)

3、之間的間隙。通信子網(wǎng)提供的服務(wù)越多,運輸層就越簡單。通信子網(wǎng)提供的服務(wù)越少,運輸層就越復(fù)雜。,三、運輸層的主要功能,運輸層的兩項主要功能: 流量控制:通過滑動窗口實現(xiàn); 可靠傳輸:由序號和確認來實現(xiàn)。,運輸層主要提供TCP和UDP兩種傳輸協(xié)議: TCP是面向連接的、可靠的傳輸協(xié)議。它把報文分解為多個段進行傳輸,在目的站再重新裝配這些段,必要時重新發(fā)送沒有收到的段。 UDP是無連接的。由于對發(fā)送的段不進行校驗和確認,因此它是“不可靠”的。,運輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別,應(yīng)用進程,應(yīng)用進程,IP 協(xié)議的作用范圍 (提供主機之間的邏輯通信),TCP 和 UDP 協(xié)議的作用范圍 (提供進程之間的邏

4、輯通信),因 特 網(wǎng),運輸層為應(yīng)用進程之間提供端到端的邏輯通信 網(wǎng)絡(luò)層是為主機之間提供邏輯通信,運輸層與上下層之間關(guān)系的 OSI 表示法,運輸實體,運輸實體,運輸協(xié)議,運輸層,層接口,運輸服務(wù)用戶 (應(yīng)用層實體),運輸服務(wù)用戶 (應(yīng)用層實體),層接口,網(wǎng)絡(luò)層 (或網(wǎng)際層),應(yīng)用層,主機 A,主機 B,運輸層服務(wù)訪問點 TSAP,網(wǎng)絡(luò)層服務(wù)訪問點 NSAP,運輸層向上提供的兩種服務(wù),?,應(yīng) 用 層,運 輸 層,發(fā) 送 進 程,接 收 進 程,接 收 進 程,數(shù)據(jù),數(shù)據(jù),全雙工可靠信道,數(shù)據(jù),數(shù)據(jù),使用 TCP 協(xié)議,使用 UDP 協(xié)議,不可靠信道,發(fā) 送 進 程,TCP/IP的運輸層有兩個不同的

5、協(xié)議: 用戶數(shù)據(jù)報協(xié)議 UDP(User Datagram Protocol) 傳輸控制協(xié)議 TCP(Transmission Control Protocol) 兩個對等運輸實體在通信時傳送的數(shù)據(jù)單位叫作運輸協(xié)議數(shù)據(jù)單元 TPDU (Transport Protocol Data Unit)。 TCP 傳送的數(shù)據(jù)協(xié)議單元是 TCP 報文段(segment) UDP 傳送的數(shù)據(jù)協(xié)議單元是 UDP 報文或用戶數(shù)據(jù)報。,7.2 TCP/IP 體系中的運輸層7 .2.1 運輸層中的兩個協(xié)議,TCP/IP 體系中的運輸層協(xié)議,TCP,UDP,IP,應(yīng)用層,與各種網(wǎng)絡(luò)接口,運輸層,UDP 不提供可靠交付

6、,但UDP 是一種高效的工作方式。 TCP 提供面向連接的服務(wù),傳送數(shù)據(jù)之前需要先建立連接。 TCP 提供可靠交付,但增加了許多的開銷。使協(xié)議數(shù)據(jù)單元的首部增大很多,占用許多的處理機資源。 SCTP是流控制傳輸協(xié)議,面向報文,可靠。 SCTP具有UTP和TCP最好的一些特點。,SCTP,7.2.2 端口的概念,運輸控制層最主要任務(wù)是實現(xiàn)進程通信功能,要進行進程通信是通過端口來實現(xiàn)的。 在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。 路由器或交換機上的端口是硬件端口。 硬件端口是不同硬件設(shè)備進行交互的接口, 軟件端口是應(yīng)用層的各種協(xié)議進程與運輸實體進行層間交互的一種地址。 端口的作用就是讓各種應(yīng)用進程

7、都能將其數(shù)據(jù)通過端口向下交付給運輸層,讓運輸層知道應(yīng)當將其報文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進程。 端口用一個 16 bit 端口號進行標志。 端口號只具有本地意義。在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。,端口在進程之間的通信中所起的作用,應(yīng) 用 層,運 輸 層,網(wǎng) 絡(luò) 層,TCP 報文段,UDP 用戶數(shù)據(jù)報,應(yīng)用進程,TCP 復(fù)用,IP 復(fù)用,UDP 復(fù)用,TCP 報文段,UDP 用戶數(shù)據(jù)報,應(yīng)用進程,端口,端口,TCP 分用,UDP 分用,IP 分用,發(fā)送方,接收方,三類端口 熟知端口:TCP/ IP體系確定并公布的,其數(shù)值一般為 01023。用來表示公共應(yīng)用程序。指示了

8、正在使用的上層協(xié)議。 登記端口號,數(shù)值為102449151,為沒有熟知端口號的應(yīng)用程序使用的。使用這個范圍的端口號必須登記,以防止重復(fù)。 客戶端口號或短暫端口號,數(shù)值為4915265535,留給客戶進程選擇暫時使用。當服務(wù)器進程收到客戶進程的報文時,就知道了客戶進程所使用的動態(tài)端口號。,常用的默認端口,代理服務(wù)器常用端口:(1). HTTP協(xié)議代理服務(wù)器常用端口號:80/8080/3128/8081/9080(2). SOCKS代理協(xié)議服務(wù)器常用端口號:1080(3). FTP協(xié)議代理服務(wù)器常用端口號:21(4). Telnet協(xié)議代理服務(wù)器常用端口:23,7.3 用戶數(shù)據(jù)報協(xié)議 UDP 7.

9、3.1 UDP 概述,UDP 只在 IP 的數(shù)據(jù)報服務(wù)之上增加了很少一點的功能,即端口的功能和差錯檢測的功能。 雖然 UDP 用戶數(shù)據(jù)報只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優(yōu)點。 發(fā)送數(shù)據(jù)之前不需要建立連接 UDP 的主機不需要維持復(fù)雜的連接狀態(tài)表。 UDP 用戶數(shù)據(jù)報只有8個字節(jié)的首部開銷。 UDP可支持一對一、一對多、多對一和多對多的交互通信。 網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機的發(fā)送速率降低。這對某些實時應(yīng)用是很重要的。,端口是用報文隊列來實現(xiàn),UDP 端口 51000,UDP 端口 69,出隊列,入隊列,出隊列,入隊列,TFTP 服務(wù)器,TFTP 客戶,UDP 用戶數(shù)據(jù)報,應(yīng)

10、 用 層,運 輸 層,服務(wù)器端用熟知端口,客戶端請求用一般端口,7.3.2 UDP 用戶數(shù)據(jù)報的首部格式,偽首部,源端口,目的端口,長 度,檢驗和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報,字節(jié),4,4,1,1,2,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報,偽首部,源端口,目的端口,長 度,檢驗和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報,字節(jié),4,4,1,1,2,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報,用戶數(shù)據(jù)報 UDP 有兩個字段:數(shù)據(jù)字

11、段和首部字段。首部字段有 8 個字節(jié),由 4 個字段組成,每個字段都是兩個字節(jié)。,偽首部,源端口,目的端口,長 度,檢驗和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報,字節(jié),4,4,1,1,2,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報,檢驗和檢驗部分包括首部和數(shù)據(jù)。在計算檢驗和時,臨時把“偽首部”和 UDP 用戶數(shù)據(jù)報連接在一起。偽首部僅僅是為了計算檢驗和。不向上和向下傳輸。,10011001 00010011 153.19 00001000 01101000 8.104 10101011 00000011 171.3

12、00001110 00001011 14.11 00000000 00010001 0 和 17 00000000 00001111 15 00000100 00111111 1087 00000000 00001101 13 00000000 00001111 15 00000000 00000000 0(檢驗和) 01010100 01000101 數(shù)據(jù) 01010011 01010100 數(shù)據(jù) 01001001 01001110 數(shù)據(jù) 01000111 00000000 數(shù)據(jù)和 0(填充) 10010110 11101011 求和得出的結(jié)果 01101001 00010100 檢驗和,1

13、04,1,12 字節(jié) 偽首部,8 字節(jié) UDP 首部,7 字節(jié) 數(shù)據(jù),按二進制反碼運算求和 將得出的結(jié)果求反碼,全 0 17 15 1087 13 15 全 0 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 全 0,TCP 是面向連接的運輸層協(xié)議。 每一條 TCP 連接只能有兩個端點(endpoint),每一條 TCP 連接只能是點對點的(一對一)。 TCP 提供可靠交付的服務(wù)。 TCP 提供全雙工通信。 面向字節(jié)流。,7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述,TCP 面向流的概念,發(fā)送 TCP 報文段,發(fā)送方,接收方,把字節(jié)寫入 發(fā)送緩存,從接

14、收緩存 讀取字節(jié),應(yīng)用進程,應(yīng)用進程,18,17,16,15,14,H,加上 TCP 首部 構(gòu)成 TCP 報文段,TCP,TCP,字節(jié)流,字節(jié)流,H,表示 TCP 報文段的首部,x,表示序號為 x 的數(shù)據(jù)字節(jié),TCP 連接,每一條 TCP 連接有兩個端點。 TCP 連接的端點不是主機,不是主機的IP 地址,不是應(yīng)用進程,也不是運輸層的協(xié)議端口。TCP 連接的端點叫做套接字(socket)或插口。 端口號拼接到(contatenated with) IP 地址即構(gòu)成了套接字。 套接字和端口、IP 地址的關(guān)系是:,TCP 的連接,socket有多種不同的意思,應(yīng)用編程接口 API 稱為 socke

15、t API, 簡稱為 socket。 socket API 中使用的一個函數(shù)名也叫作socket。 調(diào)用 socket 函數(shù)的端點稱為 socket。 調(diào)用 socket函數(shù)時其返回值稱為 socket描述符,可簡稱為 socket。 在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的 Berkeley 實現(xiàn),稱為 socket 實現(xiàn)。,7.4.2 可靠傳輸?shù)墓ぷ髟?(a) 無差錯情況,A,發(fā)送 M1,確認 M1,B,發(fā)送 M2,發(fā)送 M3,確認 M2,確認 M3,A,發(fā)送 M1,B,超時重傳 M1,發(fā)送 M2,確認 M1,丟棄有差錯 的報文,(b) 超時重傳,t,t,t,t,確認丟失和確認遲到,A,發(fā)送 M1,B

16、,超時 重傳 M1,發(fā)送 M2,丟棄 重復(fù)的 M1 重傳確認 M1,(a) 確認丟失,確認 M1,A,發(fā)送 M1,B,超時 重傳 M1,發(fā)送 M2,丟棄 重復(fù)的 M1 重傳確認M1,(b) 確認遲到,確認 M1,收下遲到 的確認 但什么也不做,t,t,t,t,流水線傳輸,發(fā)送方可連續(xù)發(fā)送多個分組,不必每發(fā)完一個分組就停頓下來等待對方的確認。 由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。,B,分組,t,t,A,ACK,累積確認,接收方一般采用累積確認的方式。即不必對收到的分組逐個發(fā)送確認,而是對按序到達的最后一個分組發(fā)送確認,這樣就表示:到這個分組為止的所有分組都已正確

17、收到了。 累積確認有的優(yōu)點是:容易實現(xiàn),即使確認丟失也不必重傳。缺點是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。,TCP 可靠通信的具體實現(xiàn),TCP 連接的每一端都必須設(shè)有兩個窗口一個發(fā)送窗口和一個接收窗口。 TCP 的可靠傳輸機制用字節(jié)的序號進行控制。TCP 所有的確認都是基于序號而不是基于報文段。 TCP 兩端的四個窗口經(jīng)常處于動態(tài)變化之中。 TCP連接的往返時間 RTT 也不是固定不變的。需要使用特定的算法估算較為合理的重傳時間。,TCP 首部,20 字節(jié)的 固定首部,32 bit,比特 0 8 16 24 31,TCP 數(shù)據(jù)部分,TCP 首部,TCP 報文段,IP 數(shù)據(jù)部

18、分,IP 首部,發(fā)送在前,7.4.3 TCP 報文段的首部格式,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,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īng)用層的服務(wù)接口。運輸層的復(fù)用和分用功能都要通過端口才能實現(xiàn)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針

19、,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,序號字段占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,確認號字段占 4 字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字

20、節(jié)的序號。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,數(shù)據(jù)偏移占 4 bit,它指出 TCP 報文段的數(shù)據(jù)起始處距離 TCP 報文段的起始處有多遠?!皵?shù)據(jù)偏移”的單位是 32 bit 字。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S

21、T,P S H,A C K,U R G,填 充,保留字段占 6 bit,保留為今后使用,但目前應(yīng)置為 0。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,緊急比特 URG 當 URG 1 時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當于高優(yōu)先級的數(shù)據(jù))。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端

22、 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,確認比特 ACK 只有當 ACK 1 時確認號字段才有效。當 ACK 0 時,確認號無效。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,推送比特 PSH (PuSH) 接收 TCP 收到推送比特置 1 的報文段,就盡快地交付給接收應(yīng)用進程,而不再等到整個緩

23、存都填滿了后再向上交付。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,復(fù)位比特 RST (ReSeT) 當 RST 1 時,表明 TCP 連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留

24、,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,同步比特 SYN 同步比特 SYN 置為 1,就表示這是一個連接請求或連接接受報文。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,終止比特 FIN (FINal) 用來釋放一個連接。當FIN 1 時,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口

25、,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,窗口字段 占 2 字節(jié)。用來控制對方發(fā)送的數(shù)據(jù)量。端點根據(jù)設(shè)置的緩存空間大小確定自己接收窗口大小,然后通知對方以確定對方的發(fā)送窗口的上限。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,檢驗和 占

26、2 字節(jié)。檢驗的范圍包括首部和數(shù)據(jù)這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節(jié)的偽首部。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,緊急指針字段 占 16 bit。當URG=1時,緊急指針指出在本報文段中的緊急數(shù)據(jù)的最后一個字節(jié)的序號。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊

27、急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,選項字段 長度可變。TCP 只規(guī)定了一種選項,即最大報文段長度 MSS (Maximum Segment Size)。MSS 告訴對方 TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是 MSS 個字節(jié)。”,MSS 是 TCP 報文段中的數(shù)據(jù)字段的最大長度。 數(shù)據(jù)字段加上 TCP 首部 才等于整個的 TCP 報文段。,選項字段,窗口擴大選項 占 3 字節(jié),其中有一個字節(jié)表示移位值 S。新的窗口值等于TCP 首部中的窗口位數(shù)增大到(16 +

28、 S),相當于把窗口值向左移動 S 位后獲得實際的窗口大小。 時間戳選項占10 字節(jié),其中最主要的字段時間戳值字段(4 字節(jié))和時間戳回送回答字段(4 字節(jié))。 選擇確認選項在后面的 5.6.3 節(jié)介紹。,選項字段舉例選擇確認 SACK,接收方收到了和前面的字節(jié)流不連續(xù)的兩個字節(jié)塊。 如果這些字節(jié)的序號都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。 如果要使用選擇確認,那么在建立 TCP 連接時,就要在 TCP 首部的選項中加上“允許 SACK”的選項,而雙方必須都事先商定好。 首部中的“確認號字段”的用法仍然不變。只是以

29、后在 TCP 報文段的首部中都增加了 SACK 選項,以便報告收到的不連續(xù)的字節(jié)塊的邊界。 由于首部選項的長度最多只有 40 字節(jié),而指明一個邊界就要用掉 4 字節(jié),因此在選項中最多只能指明 4 個字節(jié)塊的邊界信息。,1 1000 1501 3000 3501 4500,確認號 = 1001,L1 = 1501,L2 = 3501,R1 = 3001,R1 = 4501,接收到的字節(jié)流序號不連續(xù),連續(xù)的字節(jié)流,第一個字節(jié)塊,第二個字節(jié)塊,和前后字節(jié)不連續(xù)的每一個字節(jié)塊都有兩個邊界: 左邊界和右邊界。用四個指針標記這些邊界。 第一個字節(jié)塊的左邊界 L1 = 1501,但右邊界 R1 = 3001

30、。 左邊界指出字節(jié)塊的第一個字節(jié)的序號,但右邊界減 1 才是 字節(jié)塊中的最后一個序號。 第二個字節(jié)塊的左邊界 L2 = 3501,而右邊界 R2 = 4501。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗 和,選 項 (長 度 可 變),源 端 口,序 號,緊 急 指 針,窗 口,確 認 號,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,填 充,填充字段 這是為了使整個首部長度是 4 字節(jié)的整數(shù)倍。,7.4.4 TCP 的流量控制與擁塞控制一、流量控制的概念,TCP 采用可變的滑動窗口進行流量控制。窗口的單位是字節(jié)。 TCP 報文

31、段在首部的窗口字段寫入的數(shù)值就是當前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。 發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。 連接建立時,雙方要商定初始序號。 TCP報文首部中的序號字段數(shù)值表示該報文段中的數(shù)據(jù)部分的第一個字節(jié)的序號。 TCP 的確認是對接收到的數(shù)據(jù)的最高序號表示確認。 接收端返回的確認號接收端期望下次收到的數(shù)據(jù)中的第一個數(shù)據(jù)字節(jié)的序號(已收到的數(shù)據(jù)的最高序號加 1)。,前移,不允許發(fā)送,已發(fā)送并 收到確認,A 的發(fā)送窗口 = 20,允許發(fā)送的序號,26,27,28,29,30,31,32,33,34,

32、35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,B 期望 收到的序號,前沿,后沿,前移,收縮,根據(jù) B 給出的窗口值 A 構(gòu)造出自己的發(fā)送窗口,TCP 標準強烈不贊成 發(fā)送窗口前沿向后收縮,窗口控制的概念,不允許發(fā)送,已發(fā)送并 收到確認,A 的發(fā)送窗口位置不變,允許發(fā)送但尚未發(fā)送,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已發(fā)送但未收到確認,56,P1,P2,P3,不允許接收

33、,已發(fā)送確認 并交付主機,B 的接收窗口,允許接收,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,未按序收到,可用窗口,A 發(fā)送了 11 個字節(jié)的數(shù)據(jù),P3 P1 = A 的發(fā)送窗口(又稱為通知窗口) P2 P1 = 已發(fā)送但尚未收到確認的字節(jié)數(shù) P3 P2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口),允許發(fā)送但尚未發(fā)送,A 的發(fā)送窗口向前滑動,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43

34、,44,45,46,47,48,49,50,51,52,53,54,55,已發(fā)送并收到確認,不允許 發(fā)送,已發(fā)送 但未收到確認,56,P1,P2,P3,允許接收,B 的接收窗口向前滑動,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已發(fā)送確認 并交付主機,不允許 接收,56,未按序收到,A 收到新的確認號,發(fā)送窗口向前滑動,先存下,等待缺少的 數(shù)據(jù)的到達,不允許 發(fā)送,已發(fā)送并收到確認,A 的發(fā)送窗口已滿,有效窗口為零,26,27,28,29,30,31,32,

35、33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已發(fā)送但未收到確認,56,P1,P2,P3,A 的發(fā)送窗口內(nèi)的序號都已用完, 但還沒有再收到確認,必須停止發(fā)送。,A 的發(fā)送窗口并不總是和 B 的接收窗口一樣大(因為有一定的時間滯后)。 TCP 標準沒有規(guī)定對不按序到達的數(shù)據(jù)應(yīng)如何處理。通常是先臨時存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進程。 TCP 要求接收方必須有累積確認的功能,這樣可以減小傳輸開銷。,發(fā)送緩存與接收緩存的作用,發(fā)送緩存用來暫時存放: 發(fā)送應(yīng)用程序傳送給發(fā)

36、送方 TCP 準備發(fā)送的數(shù)據(jù); TCP 已發(fā)送出但尚未收到確認的數(shù)據(jù)。 接收緩存用來暫時存放: 按序到達的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù); 不按序到達的數(shù)據(jù)。,seq = 1, DATA,seq = 201, DATA,seq = 401, DATA,seq = 301, DATA,seq = 101, DATA,seq = 201, DATA,seq = 501, DATA,ACK = 1, ack = 201, rwnd = 300,ACK = 1, ack = 601, rwnd = 0,ACK = 1, ack = 501, rwnd = 100,A,B,允許 A 發(fā)送序號 201

37、至 500 共 300 字節(jié),A 發(fā)送了序號 101 至 200,還能發(fā)送 200 字節(jié),A 發(fā)送了序號 301 至 400,還能再發(fā)送 100 字節(jié)新數(shù)據(jù),A 發(fā)送了序號 1 至 100,還能發(fā)送 300 字節(jié),A 發(fā)送了序號 401 至 500,不能再發(fā)送新數(shù)據(jù)了,A 超時重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù),允許 A 發(fā)送序號 501 至 600 共 100 字節(jié),A 發(fā)送了序號 501 至 600,不能再發(fā)送了,不允許 A 再發(fā)送(到序號 600 為止的數(shù)據(jù)都收到了),丟失!,流量控制舉例,A 向 B 發(fā)送數(shù)據(jù)。在連接建立時,B 告訴 A:“我的接收窗口 rwnd = 400(字節(jié))”。,

38、持續(xù)計時器,TCP 為每一個連接設(shè)有一個持續(xù)計時器。 只要 TCP 連接的一方收到對方的零窗口通知,就啟動持續(xù)計時器。 若持續(xù)計時器設(shè)置的時間到期,就發(fā)送一個零窗口探測報文段(僅攜帶 1 字節(jié)的數(shù)據(jù)),而對方就在確認這個探測報文段時給出了現(xiàn)在的窗口值。 若窗口仍然是零,則收到這個報文段的一方就重新設(shè)置持續(xù)計時器。 若窗口不是零,則死鎖的僵局就可以打破了。,二、擁塞控制的一般原理,擁塞控制是很難設(shè)計的,因為它是一個動態(tài)的(而不是靜態(tài)的)問題。 當前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。 在許多情況下,甚至正是擁塞控制本身成

39、為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點應(yīng)特別引起重視。 TCP采用慢開始和擁塞避免法進行擁塞控制,慢開始和擁塞避免,發(fā)送端的主機在確定發(fā)送報文段的速率時,既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。 因此,每一個 TCP 連接需要有以下兩個狀態(tài)變量: 接收端窗口 rwnd (receiver window) 又稱為通知窗口(advertised window)。 擁塞窗口 cwnd (congestion window)。,接收端窗口 rwnd 和擁塞窗口 cwnd,接收端窗口 rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端

40、將此窗口值放在 TCP 報文的首部中的窗口字段,傳送給發(fā)送端。 擁塞窗口 cwnd (congestion window) 是發(fā)送端根據(jù)自己估計的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。,發(fā)送窗口的上限值,發(fā)送端的發(fā)送窗口的上限值應(yīng)當取為接收端窗口 rwnd 和擁塞窗口 cwnd 這兩個變量中較小的一個,即應(yīng)按以下公式確定: 發(fā)送窗口的上限值 Min rwnd, cwnd 當 rwnd cwnd 時,是接收端的接收能力限制發(fā)送窗口的最大值。 當 cwnd rwnd 時,則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。,慢開始算法的原理,為了防止出現(xiàn)擁塞現(xiàn)象,需要對發(fā)送端的發(fā)送啟動速度進行控制。

41、 在主機剛剛開始發(fā)送報文段時可先將擁塞窗口 cwnd 設(shè)置為一個最大報文段 MSS 的數(shù)值。 在每收到一個對新的報文段的確認后,將擁塞窗口增加一個 MSS 的數(shù)值。 用這樣的方法逐步增大發(fā)送端的擁塞窗口 cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。,發(fā)送方,接收方,發(fā)送 M1,確認 M1,發(fā)送 M2M3,確認 M2M3,發(fā)送 M4M7,確認 M4M7,cwnd = 1,cwnd = 2,cwnd = 4,發(fā)送 M8M15,cwnd = 8,t,t,發(fā)送方每收到一個對新報文段的確認 (重傳的不算在內(nèi))就使 cwnd 加 1。,輪次 1,輪次 2,輪次 3,傳輸輪次,使用慢開始算法后,每經(jīng)過一個

42、傳輸輪次,擁塞窗口 cwnd 就加倍。 一個傳輸輪次所經(jīng)歷的時間其實就是往返時間 RTT。 “傳輸輪次”更加強調(diào):把擁塞窗口 cwnd 所允許發(fā)送的報文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認。 例如,擁塞窗口 cwnd = 4,這時的往返時間 RTT 就是發(fā)送方連續(xù)發(fā)送 4 個報文段,并收到這 4 個報文段的確認,總共經(jīng)歷的時間。,設(shè)置慢開始門限狀態(tài)變量ssthresh,慢開始門限 ssthresh 的用法如下: 當 cwnd ssthresh 時,停止使用慢開始算法而改用擁塞避免算法。 當 cwnd = ssthresh 時,既可使用慢開始算法,也可使用擁塞避免算法。 擁塞避

43、免算法的思路是讓擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過一個往返時間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,而不是加倍,使擁塞窗口 cwnd 按線性規(guī)律緩慢增長。,當網(wǎng)絡(luò)出現(xiàn)擁塞時,無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時收到確認),就要把慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2)。 然后把擁塞窗口 cwnd 重新設(shè)置為 1,執(zhí)行慢開始算法。 這樣做的目的就是要迅速減少主機發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時間把隊列中積壓的分組處理完畢。,22,16,慢開始和擁塞避免算法的實現(xiàn)舉例,當 T

44、CP 連接進行初始化時,將擁塞窗口置為 1。窗口單位不使用字節(jié)而使用報文段。,慢開始門限的初始值設(shè)置為 16 個報文段, 即 ssthresh = 16。,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,發(fā)送端的發(fā)送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等

45、于擁塞窗口的數(shù)值。,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,在執(zhí)行慢開始算法時,擁塞窗口 cwnd 的初始值為 1,發(fā)送第一個報文段 M0。,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指

46、數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,發(fā)送端每收到一個確認 ,就把 cwnd 加 1。于是發(fā)送端可以接著發(fā)送 M1 和 M2 兩個報文段。,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,接收端共發(fā)回兩個確認。發(fā)送

47、端每收到一個對新報文段的確認,就把發(fā)送端的 cwnd 加 1?,F(xiàn)在 cwnd 從 2 增大到 4,并可接著發(fā)送后面的 4 個報文段。,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,發(fā)送端每收到一個對新報文段的確認,就把發(fā)送端的擁塞窗口加 1,因此擁塞窗口 cwnd 隨著傳輸輪次按指數(shù)規(guī)律增長。,22,16,“乘法減小”

48、,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,慢開始和擁塞避免算法的實現(xiàn)舉例,當擁塞窗口 cwnd 增長到慢開始門限值 ssthresh 時(即當 cwnd = 16 時),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthres

49、h 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,慢開始和擁塞避免算法的實現(xiàn)舉例,假定擁塞窗口的數(shù)值增長到 24 時,網(wǎng)絡(luò)出現(xiàn)超時,表明網(wǎng)絡(luò)擁塞了。,傳輸輪次,22,16,“乘法減小”,2,4,6,8,10,12,14,16

50、,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,慢開始和擁塞避免算法的實現(xiàn)舉例,更新后的 ssthresh 值變?yōu)?12(即發(fā)送窗口數(shù)值 24 的一半),擁塞窗口再重新設(shè)置為 1,并執(zhí)行慢開始算法。,傳輸輪次,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口 cwnd,新的 ssthresh 值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh 的初始值,慢開始

51、,慢開始,慢開始,擁塞避免 “加法增大”,擁塞避免 “加法增大”,慢開始和擁塞避免算法的實現(xiàn)舉例,當 cwnd = 12 時改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個往返時延就增加一個 MSS 的大小。,傳輸輪次,擁塞避免的乘法減小與加法增大,“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值 ssthresh 設(shè)置為當前的擁塞窗口值乘以 0.5。 當網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時,ssthresh 值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。 “加法增大”是指執(zhí)行擁塞避免算法后,當收到對所有報文段的確認就將擁塞窗口 cwnd增加

52、一個 MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。,擁塞控制算法中的快重傳和快恢復(fù),快重傳算法:發(fā)送端只要一連收到三個重復(fù)的 ACK 即可斷定有分組丟失了,就立即重傳報文段而不必繼續(xù)等待重傳計時器的超時。 快恢復(fù)算法:當發(fā)送端收到連續(xù)三個重復(fù)的 ACK 時,就執(zhí)行“乘法減小”算法,把慢開始門限 ssthresh 減半。但接下去不執(zhí)行慢開始算法。 由于發(fā)送方現(xiàn)在認為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞,因此現(xiàn)在不執(zhí)行慢開始算法,即擁塞窗口 cwnd 現(xiàn)在不設(shè)置為 1,而是設(shè)置為慢開始門限 ssthresh 減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大。,24,

53、從連續(xù)收到三個重復(fù)的確認轉(zhuǎn)入擁塞避免,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,傳輸輪次,擁塞窗口 cwnd,收到 3 個重復(fù)的確認 執(zhí)行快重傳算法,慢開始,“乘法減小”,擁塞避免 “加法增大”,TCP Reno 版本,TCP Tahoe 版本 (已廢棄不用),ssthresh 的初始值,擁塞避免 “加法增大”,新的 ssthresh 值,慢開始,快恢復(fù),快重傳舉例,主機 A,主機 B,B 確認 M1 和 M2,A 發(fā)送 M1 和 M2,A 收到了三個重復(fù)的確認 ACK3,就立即重傳 M3,而不必等待超時重傳。,A 發(fā)送 M3 但丟失了,A 發(fā)

54、送 M4,A 發(fā)送 M5,B 發(fā)送第二個重復(fù)確認 ACK3,A 發(fā)送 M6,B 發(fā)送第三個重復(fù)確認 ACK3,B 只能再次確認 M2(因為 M3 沒有收到),7.4.5 TCP 的重傳機制,重傳機制是 TCP 中最重要和最復(fù)雜的問題之一。也是保證報文段可靠傳輸?shù)拇胧┲弧?由于 TCP 的下層是一個互連網(wǎng)環(huán)境,IP 數(shù)據(jù)報所選擇的路由變化很大。因而運輸層的往返時延的方差很大。,往返時延的自適應(yīng)算法,重發(fā)方法:TCP 每發(fā)送一個報文段,就對這個報文段設(shè)置一次計時器。只要計時器設(shè)置的重傳時間到但還沒有收到確認,就重傳這一報文段。 超時時間的選擇:運輸層的往返時延的方差大,需采用自適應(yīng)算法。超時重傳時間RTO略大于平均往返時延 RTT。 每測量到一個新的往返時延樣本,就按下式重新計算一次平均往返時延 RTT: 平均往返時延RTT (舊的RTT)

溫馨提示

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

最新文檔

評論

0/150

提交評論