版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课件制作人:李琳第 7 章 运输层课件制作人:李琳目录7.1 运输层协议概述7.2 TCP/IP 体系中的运输层7.3 用户数据报协议 UDP 7.4 传输控制协议 TCP课件制作人:李琳7.1 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 物理层网络层运输层应用层数据链路层面向信息处理面向通信用户功能网络功能课件制作人:李琳运输层为相互通信的应用进程提供了逻辑通信 54321运输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层L
2、AN1AP1AP2AP4端口端口54321IP 协议的作用范围运输层协议 TCP 和 UDP 的作用范围AP3课件制作人:李琳应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。 运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。课件制作人:李琳运输层协议和网络层协议的主要区别 应用进程应用进程IP 协议的作用范
3、围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网课件制作人:李琳运输层的主要功能 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。运输层还要对收到的报文进行差错检测。运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。 课件制作人:李琳运输层与其上下层之间的关系的 OSI 表示法 运输实体运输实体运输协议运输层层接口 运输服务用户(应用层实体) 运输服务用户 (应用层实体)层接口 网络层(或网际层)应用层主机 A主机 B运输层服务访问点TSAP网络层服务访问点NSAP课件制作人:李琳两种不同的
4、运输协议运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。 运输层向上提供可靠的和不可靠的逻辑通信信道 ?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用 TCP 协议使用 UDP 协议不可靠信道发送进程课件制作人:李琳网络环境中的进程通信与单机系统内部的进程通信
5、的主要区别:网络中主机的高度自治性;不是在同一个主机系统之中,没有一个统一的高层进行控制与管理;网络中一台主机对其它主机的 活动状态 位于其它主机系统中的各个进程状态 这些进程什么时间参与网络活动 希望与网络中哪一台主机的什么进程通信一 概无从知道网络环境中分布式进程通信的特点课件制作人:李琳网络环境中分布式进程通信需要解决:进程命名与寻址方法多重协议的识别进程间相互作用的模式课件制作人:李琳网络环境中进程标识在一台计算机中,不同的进程用进程号或进程标识(process ID)惟一地标识出来 网络环境中完整的进程标识应该是: 本地主机地址-本地进程标识 远程主机地址-远程进程标识进程地址也叫做
6、端口号(port number) 课件制作人:李琳多重协议的识别UNIX操作系统的TCP/IP的传输层就有TCP协议和UDP协议;网络环境中一个进程的全网惟一的标识需要一个三元组来表示:协议,本地地址,本地端口号。网络环境中一个完整的进程通信标识需要一个五元组来表示: 协议 本地地址 本地端口号 远地地址 远地端口号课件制作人:李琳进程间的作用模式在TCP/IP协议体系中,进程间的相互作用采用客户/服务器(Client/Server)模式 ;客户与服务器分别表示相互通信的两个应用程序的进程;客户向服务器发出服务请求,服务器响应客户的请求,提供客户机所需要的网络服务; 课件制作人:李琳与数据链路
7、层的区别主机路由器主机网络网络数据链路层的职责数据链路层的职责传输层的职责课件制作人:李琳TCP/IP的运输层有两个不同的协议:(1) 用户数据报协议 UDP (User Datagram Protocol)(2) 传输控制协议 TCP (Transmission Control Protocol)7.2 TCP/IP 体系中的运输层7.2.1 运输层中的两个协议课件制作人:李琳两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。TCP 传送的数据单位协议是 TCP 报文段(segment) UDP 传送的数据单位
8、协议是 UDP 报文或用户数据报。 TCP 与 UDP 课件制作人:李琳TPDU结构与IP分组、帧结构的关系课件制作人:李琳TCP/IP 体系中的运输层协议 TCPUDPIP应用层与各种网络接口运输层课件制作人:李琳TCP 与 UDP UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的
9、处理机资源。 课件制作人:李琳还要强调两点 运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。 课件制作人:李琳7.2.2 端口的概念端口就是运输层服务访问点 TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口
10、交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。 端口在进程之间的通信中所起的作用 应用层运输层网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报应用进程端口端口TCP 分用UDP 分用IP 分用IP 数据报IP 数据报发送方接收方课件制作人:李琳课件制作人:李琳端口 端口用一个 16 bit 端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。课件制作人:李琳两类端口 一类是熟知端口,其数值一般为 01023。当一种新的应用程序出现时,必
11、须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。 课件制作人:李琳熟知端口号的分配方法UDP的熟知端口号的分配29端口号服务进程说明53domain域名服务67/68DHCP动态主机配置协议69TFTP简单文件传送协议111RPC远程过程调用123NTP网络时间协议161/162SNMP简单网络管理协议520RIP路由信息协议课件制作人:李琳TCP的熟知端口号的分配30端口号服务进程说明20FTP文件传输协议(数据连接)21FTP文件传输协议(控制连接)23TELNET网络虚拟终端协议25SMTP简单邮件传输协议80HTTP超文本传输协议119NNTP网络新闻传输
12、协议179BGP边界路由协议课件制作人:李琳插口(socket) TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP 地址的关系是: IP 地址3 端口号1500 3, 1500插口(socket)课件制作人:李琳同一个名词 socket有多种不同的意思 应用编程接口 API 称为 socket API, 简称为 socket。socket API 中使用的一个函数名也叫作socket。调用 socket 函数的端点称为 socket。调用 socke t函数时其返回值称为 socket描述符,可简
13、称为 socket。在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。 课件制作人:李琳7.3 用户数据报协议 UDP 7.3.1 UDP 概述 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。发送数据之前不需要建立连接UDP 的主机不需要维持复杂的连接状态表。UDP 用户数据报只有8个字节的首部开销。网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。 课件制作人:李琳UDP 的主要特点 UDP 是无连接的,即发送数据之前不
14、需要建立连接。UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。 UDP 支持一对一、一对多、多对一和多对多的交互通信。UDP 的首部开销小,只有 8 个字节。 课件制作人:李琳面向报文的 UDP发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进
15、程,一次交付一个完整的报文。应用程序必须选择合适大小的报文。课件制作人:李琳UDP 是面向报文的 IP 数据报的数据部分IP 首部IP 层UDP 首部UDP 用户数据报的数据部分运输层应用层报文应用层课件制作人:李琳端口是用报文队列来实现 UDP 端口 51000UDP 端口 69出队列入队列出队列入队列TFTP 服务器TFTP 客户UDP 用户数据报应用层运输层课件制作人:李琳7.3.2 UDP 用户数据报的首部格式 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报伪首部
16、源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。计算 UDP 检验和的例子 10011001 000
17、10011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 00000000 0(检验和)01010100 01000101 数据01010011 01010100 数据01001001 01001110 数据01000111 00000000 数据和 0(填充)10
18、010110 11101011 求和得出的结果01101001 00010100 检验和 04112 字节伪首部8 字节UDP 首部7 字节数据填充按二进制反码运算求和将得出的结果求反码全 0 17 15 1087 13 15 全 0数据 数据 数据 数据数据 数据 数据 全 0课件制作人:李琳确定应用程序在传输层是否采用UDP协议的原则:系统对性能的要求高于对数据完整性的要求;需要“简短快捷”的数据交换;需要多播和广播的应用; UDP协议是一种适用于实时语音与视频传输的传输层协议。42课件制作人:李琳 TCP与UDP协议的比较特征/描述TCPUDP一般描述允许应用程序可靠地发送数据,功能齐全
19、简单、高速,只负责将应用层与网络层衔接起来面向连接或无连接面向连接,在TPDU传输之前需要建立TCP连接无连接,在TPDU传输之前不需要建立UDP连接与应用层的数据接口基于字节流,应用层不需要规定特定的数据格式基于报文,应用层需要将数据分成包来传送可靠性与确认可靠报文传输,对所有的数据均要确认不可靠,不需要对传输的数据确认,尽力而为地交付重传自动重传丢失的数据不负责检查是否丢失数据和重传开销低,但高于UDP很低传输速率高,但低于UDP很高适用的数据量从少量到几个GB的数据从少量到几百个字节的数据适用的应用类型对数据传输可靠性要求较高的应用,例如文件与报文传输发送数量比较少、对数据传输可靠性要求
20、较低的应用,例如IP电话、视频会议、多播与广播43课件制作人:李琳7.4 传输控制协议 TCP 7.4.1 TCP 概述 端口发送 TCP 报文段TCPTCP接收缓存发送缓存报文段报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程课件制作人:李琳TCP 最主要的特点1.TCP 是面向连接的运输层协议。 应用程序在使用TCP协议之前,必须先建立TCP连接,在传送数据完毕后,必须释放已经建立的TCP连接。TCP 连接是一条虚连接而不是一条真正的物理连接。每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一),无广播和多
21、播。 TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。课件制作人:李琳套接字 (socket) 套接字 socket = (IP地址: 端口号) (5-1)每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即: TCP 连接 := socket1, socket2 = (IP1: port1), (IP2: port2) (5-2)注意:同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以出现在多个不同的TCP连接中。课件制作人:李琳2. 支持同时建立多个并发的TCP连接根据
22、应用程序的需要,TCP协议支持一个服务器与多个客户端同时建立多个TCP连接;也支持一个客户端与多个服务器同时建立多个TCP连接;TCP软件将分别管理多个TCP连接。47课件制作人:李琳举例:一个Web服务器的套接字为“1:80”,同时有三个客户端要访问此服务器,它们的套接字分别为“:53022”、“:63522”和“:57122”,则服务器需要同时建立3个TCP连接,用五元组表示这3个连接,分别为:TCP, 1:80, :53022TCP, 1:80, :63522TCP, 1:80, :57122课件制作人:李琳3.TCP 提供可靠交付的服务。TCP是一种可靠的传输服务协议,它使用确认机制检
23、查数据是否安全和完整地到达,并且提供拥塞控制功能;TCP支持可靠数据通信的关键是对发送和接收的数据进行跟踪、确认与重传;传输层传输的可靠性是建立在网络层基础上,同时也就会受到它们的限制。通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达。课件制作人:李琳TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序把数据传送给TCP的缓存后,就可以做自己的事,TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。4. TCP 提供全双工通信。课件制
24、作人:李琳 “流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP交互的是一次一个大小不等的数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系,但接收方应用程序收到的字节流必须和送方应用程序发出的字节流完全一样。接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。5.面向字节流。课件制作人:李琳TCP 面向流的概念 课件制作人:李琳应当注意TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。TCP 根据对方给出的
25、窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。如果应用进程传送到TCP缓存的数据块太长,TCP就可以把它划分短一些再传送。如果应用进程一次只发来一个字节,TCP也可以等待积累足够多的字节后再构成报文段发送出去。课件制作人:李琳流(stream)相当于一个管道,从一端放入什么内容,从另一端可以照原样取出什么内容,它描述了一个不出现丢失、重复和乱序的数据传输过程;TCP在传输过程中将应用程序提交的数据看成是一连串的、无结构的字节流;因此接收端应用程序数据字节的起始与终结位置必须由应用程序自己确定。课件制作人:李琳 总结: TCP协议是面向连接
26、、面向字节流、支持全双工、支持并发连接、提供确认重传与拥塞控制的可靠传输层协议。55课件制作人:李琳7.4.2 TCP报文段的首部TCP首部20 字节的固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG
27、比特 0 8 16 24 31填 充源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧
28、 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。 是对收到的数据的最高序号表示确认,确认号是对是对最高序号加1。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充数据偏移占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远(即首部长度)。“数据偏移”的单位不是字节而是 32
29、 bit 字(4 字节为计算单位)。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充保留字段占 6 bit,保留为今后使用,但目前应置为 0。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急比特 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急
30、数据,应尽快传送(相当于高优先级的数据)。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认比特 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24
31、 31填 充推送比特 PSH (PuSH) 发送方置1,并立即创建一个报文段发送出去。接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充复位比特 RST (ReSeT) 当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。还可用来拒绝一个非法的报文段或拒绝打开
32、一个连接。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特 SYN 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充终止比特 FIN (FINal) 用来释放一个连接。当FIN 1 时,表明此报文段的发
33、送端的数据已发送完毕,并要求释放运输连接。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。窗口指的是发送本报文段的一方的接收窗口。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。窗口值作为接收方让发送方设置其发送窗口的依据。窗口值是经
34、常在动态变化的。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急指针字段 占 16 bit。紧
35、急指针指出在本报文段中的紧急数据的最后一个字节的序号。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。课件制作人:李琳
36、其他选项窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。时间戳选项占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。选择确认选项。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。 课件制作人:李琳7.4.3 TCP 的数据
37、编号与确认 TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。 TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。 课件制作人:李琳控制报文段发送的三种机制TCP维持一个变量等于最大报文段长度MSS;推送操作;计时器机制。课件制作人:李琳思考:若收到的报文段无差错,只是未按序号,那么应如何处理?课件制作人:
38、李琳7.4.4 TCP 的流量控制与拥塞控制1. 滑动窗口的概念TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。下面看例1 收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500
39、 字节。发送端只要收到了对方的确认,发送窗口就可前移。发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。现在发送端还可发送 300 字节。 已发送并被确认已发送但未被确认10020030040050
40、06007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。现在发送端最多还可发送 400 字节的数据。 课件制作人:李琳例2前移不允许发送已发送并收到确认A 的发送窗口 = 20允许发送的序号26272829303132333435363738394041424344454647
41、484950515253545556B 期望收到的序号前沿后沿前移收缩根据 B 给出的窗口值A 构造出自己的发送窗口 TCP 标准强烈不赞成发送窗口前沿向后收缩 课件制作人:李琳不允许发送已发送并收到确认A 的发送窗口位置不变允许发送但尚未发送262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机B 的接收窗口允许接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A 发送
42、了 11 个字节的数据 P3 P1 = A 的发送窗口(又称为通知窗口)P2 P1 = 已发送但尚未收到确认的字节数P3 P2 = 允许发送但尚未发送的字节数(又称为可用窗口) 课件制作人:李琳允许发送但尚未发送A 的发送窗口向前滑动262728293031323334353637383940414243444546474849505152535455已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收B 的接收窗口向前滑动262728293031323334353637383940414243444546474849505152535455已发送确认并交付主机不允许接收56未
43、按序收到A 收到新的确认号,发送窗口向前滑动 先存下,等待缺少的数据的到达课件制作人:李琳不允许发送已发送并收到确认A 的发送窗口已满,有效窗口为零262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。 课件制作人:李琳发送缓存 最后被确认的字节发送应用程序发送缓存最后发送的字节发送窗口已发送TCP序号增大课件制作人:李琳接收缓存接收应用程序已收到接收窗口TCP接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)课件制作
44、人:李琳发送缓存与接收缓存的作用发送缓存用来暂时存放: 发送应用程序传送给发送方 TCP 准备发送的数据; TCP 已发送出但尚未收到确认的数据。接收缓存用来暂时存放: 按序到达的、但尚未被接收应用程序读取的数据; 不按序到达的数据。 课件制作人:李琳需要强调三点A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。 利用可变窗口大小进行流量控制双方确定的窗口值是 400 SEQ
45、 = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, WIN = 0ACK = 501, WIN = 200主机 A主机 B允许 A 再发送 300 字节(序号 201 至 500)A 还能发送 200 字节A 还能发送 200 字节(序号 301 至 500)A 还能发送 300 字节A 还能发送 100 字节(序号 401 至 500)A 超时重发,但不能发送序号 500 以后的数据允许 A 再发送 200 字节(序号 501 至 700)A 还能发送 100 字节(序号 501 至
46、700)不允许 A 再发送(到序号 600 的数据都已收到)SEQ = 201丢失!课件制作人:李琳持续计时器TCP 为每一个连接设有一个持续计时器。只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。若窗口不是零,则死锁的僵局就可以打破了课件制作人:李琳利用发送窗口调节发送端向网络注入分组的速率不仅是为了流量控制,还为了对网络进行拥塞控制。在运输层讨论时,常说“主机发送报文段”。在运输层观察
47、向网络注入数据时往往不考虑首部字节。课件制作人:李琳运输层的拥塞控制慢开始拥塞避免快重传快恢复课件制作人:李琳2. 慢开始和拥塞避免发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个 TCP 连接需要有以下两个状态变量:接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window)。拥塞窗口 cwnd (congestion window)。课件制作人:李琳接收端窗口 rwnd 和拥塞窗口 cwnd (1) 接收端窗口 rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是
48、来自接收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。(2) 拥塞窗口 cwnd (congestion window) 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。课件制作人:李琳发送端确定拥塞窗口的原则 只要网络没有出现拥塞,发送端就使拥塞窗口再增大些,以便将更多的分组发送出去。只要网络出现拥塞,发送端就使拥塞窗口减少一些,以减少注入到网络中的分组数。判断拥塞:发送端没有按时收到应当到达的确认报文ACK。课件制作人:李琳发送窗口的上限值发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较
49、小的一个,即应按以下公式确定:发送窗口的上限值 Min rwnd, cwnd (7-1)当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。当 cwnd rwnd 时,则是网络的拥塞限制发送窗口的最大值。 课件制作人:李琳慢开始算法的原理 在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。 课件制作人:李琳发送方接收方发送 M1 确认 M1发送 M2M3 确认 M2M3 发送 M4M
50、7 确认 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 发送 M8M15cwnd = 8 tt发送方每收到一个对新报文段的确认(重传的不算在内)就使 cwnd 加 1。 轮次 1轮次 2轮次 3课件制作人:李琳设置慢开始门限状态变量ssthresh慢开始门限 ssthresh 的用法如下:当 cwnd ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,
51、使拥塞窗口 cwnd 按线性规律缓慢增长。课件制作人:李琳当网络出现拥塞时无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。 慢开始和拥塞避免算法的实现举例 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为 16 个报文段,即 sst
52、hresh = 16。246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开
53、始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送第一个报文段 M0。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16
54、慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免发送端收到 ACK1 (确认 M0,期望收到 M1)后,将 cwnd 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段。 慢开始和拥塞避免算法的实现举例 接收端发回 ACK2 和 ACK3。发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1。现在发送端的 cwnd 从 2 增大到 4,并可发送 M3 M6共 4个报文段。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开
55、始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输次数按指数规律增长。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥
56、塞避免算法,拥塞窗口按线性规律增长。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长ssthresh = 16慢开始慢开始线性规律增长拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网络拥塞了)。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞
57、避免慢开始和拥塞避免算法的实现举例 更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半),拥塞窗口再重新设置为 1,并执行慢开始算法。 246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例 当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个 MSS 的大小。 24681012141618202200481216202
58、4传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免课件制作人:李琳乘法减小(multiplicative decrease) “乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。 课件制作人:李琳加法增大(additive increase) “加法增大”是指执行拥塞避免算法后
59、,当收到对所有报文段的确认就将拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。 课件制作人:李琳必须强调指出 “拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。 课件制作人:李琳3. 快重传和快恢复快重传算法规定,发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。 快重传举例M1
60、, M2ACK2, ACK3M4主机 A主机 BB 确认 M1 和 M2A 发送 M1 和 M2A 收到了三个重复的确认 ACK3,就立即重传 M3,而不必等待超时重传。M3丢失!A 发送 M3 但丢失了A 发送 M4ACK3M5A 发送 M5ACK3B 发送第二个重复确认 ACK3M6A 发送 M6ACK3M3B 发送第三个重复确认 ACK3B 只能再次确认 M2(因为 M3 没有收到)课件制作人:李琳快恢复算法 (1) 当发送端收到连续三个重复的 ACK 时,就按“乘法减小”重新设置慢开始门限 ssthresh。(2) 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为 ss
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广西桂林师范学院二级学院院长引进2人考试模拟试题及答案解析
- 2026宁波东方人力资源服务有限公司招聘编外人员1人考试模拟试题及答案解析
- 2026年克拉玛依市春季面向高校毕业生招聘事业单位工作人员(第二批4人)考试模拟试题及答案解析
- 2026年江蓠行业分析报告及未来发展趋势报告
- 医养综合体建筑设计方案
- 2026年位置传感器行业分析报告及未来发展趋势报告
- 2026河北张家口经开区第二批公开招聘编外工作人员4名笔试备考试题及答案解析
- 2026云南文山州砚山县阿舍乡卫生院第五期招聘3人笔试参考题库及答案解析
- 2026年人造蓝宝石行业分析报告及未来发展趋势报告
- 污水系统管网错混接整治方案
- 触龙说赵太后
- GB/T 3179-2009期刊编排格式
- GB/T 28730-2012固体生物质燃料样品制备方法
- GB/T 2672-2017内六角花形盘头螺钉
- GB/T 24573-2009金库和档案室门耐火性能试验方法
- GB/T 24283-2018蜂胶
- 餐饮安全管理规章制度
- 教练型领导力360°全方位目标管理之九点领导力课件
- 环通危险货物集装箱永久查验堆存场地及配套仓库项目环境风险评价报告
- 龙门吊安装技术交底
- DB11T 1620-2019 建筑消防设施维修保养规程
评论
0/150
提交评论