CH09传输层.ppt

上传人:本田雅阁 文档编号:2890754 上传时间:2019-06-02 格式:PPT 页数:115 大小:807.02KB
返回 下载 相关 举报
CH09传输层.ppt_第1页
第1页 / 共115页
CH09传输层.ppt_第2页
第2页 / 共115页
CH09传输层.ppt_第3页
第3页 / 共115页
CH09传输层.ppt_第4页
第4页 / 共115页
CH09传输层.ppt_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《CH09传输层.ppt》由会员分享,可在线阅读,更多相关《CH09传输层.ppt(115页珍藏版)》请在三一文库上搜索。

1、计算机网络 Computer Networks,南京邮电大学计算机学院 计算机通信教研室,第九章 传输层,传输层协议概述,传输层又称为运输层,位于应用层和网络层之间,是分层网络体系结构的核心部分。 传输层为应用进程之间提供端到端的逻辑通信(网络层是为主机之间提供逻辑通信)。 传输层用于增强和弥补通信子网的服务不足,提供主机之间可靠有效的通信。,传输层协议概述,从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。,物理层,网络层,传输层,应用层,数据链路层,面向信息处理,面向通信,用户功能,网络功能,传输层为相互通信的应用进程提供

2、了逻辑通信,5 4 3 2 1,传输层提供应用进程间的逻辑通信,主机 A,主机 B,应用进程,应用进程,路由器 1,路由器 2,AP1,LAN2,WAN,AP2,AP3,AP4,IP 层,LAN1,AP1,AP2,AP4,端口,端口,5 4 3 2 1,IP 协议的作用范围,传输层协议 TCP 和 UDP 的作用范围,AP3,应用进程之间的通信,两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。 传输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到传输层,再往下就共用网络层提供的服务。,传输层协议和网络层协议主要区别,

3、应用进程,应用进程,IP 协议的作用范围 (提供主机之间的逻辑通信),TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信),因 特 网,传输层协议概述,传输层的主要功能 传输层协议只在端系统上运行。 传输层协议的主要功能之一是确定在源系统上生成消息和在目的系统上接收消息的较高层进程。 数据的分段和组装 数据流的控制 错误检测和恢复,传输层协议概述,传输层的服务 传输层实体能够根据高层应用的需求提供不同的服务质量。 传输层协议可以是面向连接的协议或无连接协议。 传输层对高层用户屏蔽网络的差异,使高层用户的对等实体在交互过程中不受下层通信技术细节的影响。,传输层协议概述,传输层协议的分类

4、 传输层协议的选择是根据高层用户的需要和低层网络协议提供的服务来决定的。 高层对传输层服务的要求 T 通信子网所提供的服务 N 传输层协议TN,传输层协议概述,网络提供的服务质量 A型:网络连接具有可接受的低残留差错率和可接受的低故障通知率。 B型:网络连接具有可接受的低残留差错率和不可接受的高故障通知率。 C型:网络连接具有不可接受的高差错率。,传输层协议概述,OSI参考模型中的传输层协议分类 TP0:简单类,支持A型网络。 TP1:基本差错恢复类,支持B型网络。 TP2:复用类, 支持A型网络。 TP3:差错恢复与复用类,支持B型网络。 TP4:差错检测和恢复,复用类,支持C型网络。,TC

5、P/IP中的传输层,传输层对高层用户屏蔽通信子网的细节,使应用进程认为在两个传输层实体之间有一条端到端的逻辑通信信道。但这条逻辑通信信道对上层的表现却因传输层使用的不同协议而有很大的差别。 TCP/IP的传输层主要有两个不同的协议,即面向连接的TCP协议和无连接的UDP协议。,TCP/IP 体系中的运输层协议,TCP,UDP,IP层,应用层,与各种网络接口,传输层,传输层向上层应用提供可靠的 和不可靠的逻辑通信信道,?,应 用 层,传 输 层,发 送 进 程,接 收 进 程,接 收 进 程,数据,数据,全双工可靠信道,数据,数据,使用 TCP 协议,使用 UDP 协议,不可靠信道,发 送 进

6、程,TCP/IP的传输层有两个不同协议: 用户数据报协议 UDP ( User Datagram Protocol ) 无连接,效率高,可靠性较低。 传输控制协议 TCP ( Transmission Control Protocol ) 面向连接,可靠性高,控制复杂。,TCP/IP 中的传输层,两个对等传输实体在通信时传送的数据单位叫作传输协议数据单元 TPDU (Transport Protocol Data Unit)。 TCP 传送的数据单位协议是 TCP 报文段 (segment) 。 UDP 传送的数据单位协议是 UDP 报文或用户数据报。,TCP/IP 中的传输层,TCP/IP

7、中的传输层,UDP 在传送数据之前不需先建立连接。对方的传输层在收到UDP报文后,不需给出任何确认。 虽然 UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。 在目前的网络传输条件下,使用 UDP 往往也能提供足够的传输可靠性。,TCP/IP 中的传输层,TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。 由于 TCP 要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多控制开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。 TCP 适合大量数据传输的应用。,TCP/IP中的传输层与网际层,传输层的 UDP 用户数据报与网际层的IP数据报有很大

8、区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在传输层的端到端抽象的逻辑信道中传送的。 TCP 报文段是在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的传输层是否建立了 TCP 连接。,8.2 TCP/IP中的传输层,端口的概念 端口就是传输层服务访问点 TSAP。 端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。 从这个意义上讲,端口是应用层进程的标识。,端口在进程之间的通信

9、中所起的作用,应 用 层,传 输 层,网 络 层,TCP 报文段,UDP 用户数据报,应用进程,TCP 复用,IP 复用,UDP 复用,TCP 报文段,UDP 用户数据报,应用进程,端口,端口,TCP 分用,UDP 分用,IP 分用,发送方,接收方,TCP/IP中的传输层,端口号 端口用一个 16 bit 端口号进行标识,有效的端口号为065535。 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。,一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口 (well-known port),其

10、数值一般为01023,见RFC 1700。 例如,FTP用21,TELNET用23,SMTP用25,DNS用53,HTTP用80,SNMP用161,等等。 当一种新的应用程序出现时,必须为它指派一个熟知端口。,熟知端口,一般端口,另一类则是一般端口,用来随时分配给请求通信的客户进程。端口的数值范围是102465535。 一般端口是随机分配的,其数值即端口号就表示了相应的应用程序。 熟知端口一般用于向公众提供服务,不能任意改变。,端口的作用,TCP/IP中的传输层,插口(socket) UDP 和 TCP 使用 “端口号”作为计算机系统中高层应用进程的标识,而IP地址则标识了网络中的一台主机,

11、IP地址和端口号的组合称为插口(socket),或套接字、套接口。 插口和端口、IP 地址的关系是:,TCP/IP中的传输层,插口(socket) TCP 使用“连接” 作为最基本的抽象,一个 TCP 连接是用它的两个端点来表示的。这个端点就是插口(socket) 。 由于TCP 使用两个端点来识别连接,一个计算机上的某个端口号可以被多个连接所共享。 UDP 服务也使用插口地址实现通信。,名词 socket的多种不同的意思,应用编程接口 API 称为 socket API, 简称为 socket。 socket API 中使用的一个函数名也叫作socket。 调用 socket 函数的端点称为

12、 socket。 调用 socket函数时其返回值称为 socket 描述符,可简称为 socket。 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。,用户数据报协议 UDP,UDP 是一个简单的面向用户数据报的传输层协议。应用进程的输出正好产生一个UDP数据报,并组装成一个待发送的IP数据报。 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和有限的差错检测功能。 UDP不提供可靠性。,用户数据报协议 UDP,虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。 发送数据之前不需要建立连接 UDP 的主机不

13、需要维持复杂的连接状态表。 UDP 用户数据报只有8个字节的首部开销。 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。,UDP 用户数据报的首部格式,伪首部,源端口,目的端口,长 度,检验和,数 据,首 部,UDP长度,源 IP 地址,目的 IP 地址,0,17,IP 数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数 据,首 部,UDP 用户数据报,伪首部,源端口,目的端口,长 度,检验和,数 据,首 部,UDP长度,源 IP 地址,目的 IP 地址,0,17,IP 数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数 据

14、,首 部,UDP 用户数据报,用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。,伪首部,源端口,目的端口,长 度,检验和,数 据,首 部,UDP长度,源 IP 地址,目的 IP 地址,0,17,IP 数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数 据,首 部,UDP 用户数据报,在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。,计算 UDP 检验和的例子,10011001 00010011 153.19 00001000 01101000 8.104

15、10101011 00000011 171.3 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 数据 01010011 01010100 数据 01001001 01001110 数据 01000111 00000000 数据和 0(填充) 10010110 11101011 求和得出的结果

16、 01101001 00010100 检验和,153.19.8.104,171.3.14.11,12 字节 伪首部,8 字节 UDP 首部,7 字节 数据,按二进制反码运算求和 将得出的结果求反码,全 0 17 15 1087 13 15 全 0 数据 数据 数据 数据 数据 数据 数据 全 0,使用 16bit 段反码运算 填充部分仅参加计算,用户数据报协议 UDP,UDP 用户数据报的首部中长度字段定义了数据报的总长度,即首部加数据部分。 UDP 用户数据报的首部中检验和用来检验整个用户数据报(首部加数据部分)出现的差错。 计算伪首部可以增加可靠性。,UDP端口用报文队列来实现,UDP 端

17、口 51000,UDP 端口 69,出队列,入队列,出队列,入队列,TFTP 服务器,TFTP 客户,UDP 用户数据报,应 用 层,传 输 层,用户数据报协议 UDP,UDP 提供无连接的服务,每一个用户数据报都是独立的,用户数据报不使用编号。 UDP 是一个很小的不可靠的传输层协议,没有流量控制;除了检验和之外,没有差错控制机制。 UDP可以用于多播和广播。,对数据流交付的需求,最底层的计算机通信网络提供的服务是不可靠的分组交付。在传输过程中由于各种各样的原因会降低可靠性。 最高层的应用程序之间常常传输大量的数据,若使用不可靠的无连接交付来传输这样的数据就要求应用程序员编制的程序负责差错检

18、测和恢复的工作,这在实际应用中是行不通的。,可靠交付服务的特征,应用程序与TCP/IP可靠交付服务之间的接口可以用5个特征来描述: (1)面向数据流 (2)虚电路连接 (3)有缓冲的传输 (4)无结构的数据流 (5)全双工连接,提供可靠性的方法,(1)使用一种“带重传的肯定确认”技术作为提供可靠性的基础。该技术要求接收方收到数据之后向源站回送确认ACK报文。发送方对发出的每一个分组都保存一份记录,在发送下一个分组之前等待确认信息。发送方还在送出分组时启动一个定时器,并在定时器超时而确认信息还没有到的情况下重发刚才的分组。 (2)为了避免出现分组重复的问题,可靠性协议通过给每个分组指定序号并要求

19、接收方记住所收分组的序号来检测重复现象。,滑动窗口的概念,使用一种滑动窗口技术来解决前面所讲的简单的肯定确认协议浪费了大量的网络带宽问题,即允许发送方在等待确认之前可以发送多个分组(可以连续发送的最大的分组数目等于窗口尺寸W)。 当窗口大小等于1时,滑动窗口协议就等同于前面所介绍的简单的肯定确认协议。通过增加窗口大小,可以完全消除网络的空闲状态,所以能够增加较高的吞吐率。,传输控制协议 TCP,TCP提供一种面向连接的、全双工的、可靠的字节流服务。 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 TCP的接收端必须丢弃重复的数据。 TCP对字节流的内容不作任何解释。对字节

20、流的解释由TCP连接双方的应用层解释。,传输控制协议 TCP,TCP通过下列方式来提供可靠性: 应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。 TCP协议中采用自适应的超时及重传策略。 TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 TCP的接收端必须丢弃重复的数据。 TCP还能提供流量控制。,传输控制协议 TCP,TCP是一个通信协议而不是一个软件。 该协议指定了两台计算机之间为了进行可靠传输而交换的数据和确认信息的格式、为了数据的正确到达而采取的措施,另外还规定了两台计算机如何初始化一个TCP数据流传输以及如何对结束的时机进行协商。,端口、连接与端

21、点,TCP使用连接而不是协议端口作为基本的抽象概念,连接是用一对端点来标识的。 端点定义为一对整数,即 (host,port),主机的IP地址,TCP端口号,传输控制协议 TCP,端口,发送 TCP 报文段,TCP,TCP,接收缓存,发送缓存,报文段,报文段,报文段,端口,发送端,接收端,向发送缓存 写入数据块,从接收缓存 读取数据块,应用进程,应用进程,TCP 首部,20 字节的 固定首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,32 bit,S Y N,R S T,P S H,A C K

22、,U R G,比特 0 8 16 24 31,填 充,TCP 数据部分,TCP 首部,TCP 报文段,IP 数据部分,IP 首部,发送在前,TCP 报文段格式,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。,TCP 首部,20 字节 固定 首部,目 的

23、 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A

24、C K,U R G,比特 0 8 16 24 31,填 充,确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,数据偏移占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)。,TCP 首

25、部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,保留字段占 6 bit,保留为今后使用,但目前应置为 0。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24

26、31,填 充,紧急比特 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,确认比特 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选

27、项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,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 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0

28、8 16 24 31,填 充,复位比特 RST (Reset) 当 RST1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,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,就表示这是一个连接请求或连接接受报文。,TCP 首部,20 字节 固定 首部,目 的 端

29、 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,终止比特 FIN (FINal) 用来释放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R

30、 G,比特 0 8 16 24 31,填 充,窗口字段 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP

31、报文段的前面加上 12 字节的伪首部。,伪首部,源端口,目的端口,序号,.,TCP长度,源 IP 地址,目的 IP 地址,0,6,字节,4,4,1,1,2,12,2,2,2,2,字节,数 据,首 部,TCP 报文段,TCP校验和的计算,在收到了一个带有TCP报文段的数据报后,IP层应把报文中包含的源IP地址和目的IP地址与报文段一起交给TCP层。在计算检验和时,临时把“伪首部”和 TCP报文段连接在一起。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y

32、N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,紧急指针字段 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,选项字段 长度可变。TCP 首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。,TCP首部的主要选项,最大

33、报文段长度 MSS MSS (Maximum Segment Size) 是 TCP 报文段中的数据字段的最大长度。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” 窗口扩大因子,用于长肥管道。 时间戳,可用于测量往返时延 RTT。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,填充字段 这是为了使整个首部长度是 4

34、 字节的整数倍。,TCP 的数据编号与确认,TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。,TCP 的数据编号与确认,TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。 为提高效率,TCP可以累积确认,即在接收多个报文段后,一次确认。,TCP 的流量控制,TCP 采用大小可变的滑动窗口进行流量控制。窗

35、口大小的单位是字节。 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。,收到确认即可前移,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,可发送,不可发送,发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。 发送端只要收到了对方的确认,发送窗口就可前移。 发送 TCP 要维护一个指针。每

36、发送一个报文段,指针就向前移动一个报文段的距离。,收到确认即可前移,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,不可发送,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,发送窗口,可发送,不可发送,发送窗口前移,发送端已发送 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。 现在发送端还可发送 300 字节。,100,200,300,400,500,600,700,800,900,

37、101,201,301,401,501,601,701,801,1,已发送 并被确认,已发送但 未被确认,可发送,不可发送,指针,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,不可 发送,指针,发送窗口前移,发送端收到对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。 现在发送端最多还可发送 400 字节的数据。,利用可变窗口大小进行流量控制 双方确定的窗口值是 400,主机 A,主机 B,允许 A 再发送 300 字节(序号 201 至 500),A 还能发送 200

38、 字节,A 还能发送 200 字节(序号 301 至 500),A 还能发送 300 字节,A 还能发送 100 字节(序号 401 至 500),A 超时重发,但不能发送序号 500 以后的数据,允许 A 再发送 200 字节(序号 501 至 700),A 还能发送 100 字节(序号 501 至 700),不允许 A 再发送(到序号 600 的数据都已收到),慢启动和拥塞避免,发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。 因此,每一个 TCP 连接需要有以下两个状态变量: 接收端窗口 rwnd (receiver window) 又称

39、为通知窗口(advertised window)。 拥塞窗口 cwnd (congestion window)。,接收端窗口 rwnd 和拥塞窗口 cwnd,接收窗口 rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。 拥塞窗口 cwnd (congestion window) 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。,发送窗口的上限值,发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定

40、: 发送窗口的上限值 Min rwnd, cwnd 当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。 当 cwnd rwnd 时,则是网络的拥塞限制发送窗口的最大值。,慢启动算法的原理,在刚开始发送时,可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。 在每收到一个对新的报文段的确认后,将拥塞窗口增加至 2倍 MSS 的数值。 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。,慢启动和拥塞避免算法的实现举例,当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。,慢启动门限的初始值设置为 1

41、6 个报文段, 即 ssthresh = 16。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢启动,慢启动,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢启动和拥塞避免算法的实现举例,发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢启动,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1