1、2022-6-1303教研室 张来顺1第九章 运输层 运输层协议概述 TCP/IP体系中的运输层 用户数据报协议UDP 运输控制协议TCP2022-6-1303教研室 张来顺2运输层协议概述 运输层在层次体系结构中的地位运输层网络层应用层用户功能网络功能面向通讯面向信息处理数据链路层物理层2022-6-1303教研室 张来顺3运输层协议概述传输层传输层OSI上三层OSI上三层OSI下三层OSI下三层用户进程管理通信子网向上提供标准的传输服务向下屏蔽不同的通信子网2022-6-1303教研室 张来顺4运输层协议概述物理层使链路上能透明地传送比特流;链路层使各条链路能透明地传送无差错的帧(按序,无
2、丢失,不重复)。点到点通信网络层提供路由选择和网络互连。主机间通信运输层提供一条端到端的可靠的通信服务。主机进程间通信主机AAP1AP2AP3N1N2主机BAP4AP5AP62022-6-1303教研室 张来顺5运输层协议概述严格地讲,两个主机进行通信实际上就是两个主机中的应用进程互相通信;网络层为主机之间提供逻辑通信,IP协议虽然能够把分组送到目的主机,但是无法交付给主机中的应用进程;在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分;因此,在网络层之上,设置一个传输层向它上面的应用层提供通信服务。2022-6-1303教研室 张来顺6运输层协议概述传输层的功能基
3、本功能:提供端到端(进程-进程)的可靠通信,即向高层用户屏蔽通信子网的细节,提供通用的传输接口。主要功能:把传输地址映射为网络地址把端到端的传输连接复用到网络连接上传输连接管理端到端的顺序控制、差错检测及恢复、分段处理及QoS监测加速数据传送2022-6-1303教研室 张来顺7运输层协议概述n运输层模型运输服务用户运输服务用户 应用层抽象机器. . . .运输服务提供者(运输实体)运输服务访问点TSAP连接端点2022-6-1303教研室 张来顺8TCP/IP体系中的运输层 TCP/IP的运输层2个协议 用户数据报协议UDP(User Datagram Protocol) 运输控制协议TCP
4、(Transmission Control Protocol)与各种网络接口IPUDPTCP应用层2022-6-1303教研室 张来顺9TCP/IP体系中的运输层 UDP UDP是无连接的数据报服务。 即UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。 注意UDP用户数据报与IP数据报的区别。IP数据报要经过路由器的存储转发,UDP数据报是在运输层的端到端抽象的逻辑信道中传送的。但这个逻辑信道并不是经过路由器(运输层看不见路由器),UDP数据报只是IP数据报中的数据,因此路由器看不见有用户数据报经过它。2022-6-1303教研室 张来顺10TCP/IP体系中的运输层 TCP
5、 TCP提供面向连接的服务。 IP层不保证报文正确传输,TCP进行超时、重传控制。 报文不一定按顺序到达,TCP进行重新装配。 TCP不提供广播或多播服务。 注意TCP连接与网络层中虚电路(如X.25所使用的)的不同。TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器。而在X.25 建立的虚电路所经过的交换结点中,都必须保存X.25虚电路的状态信息。2022-6-1303教研室 张来顺11TCP/IP体系中的运输层 TCP的功能 多路复用多种应用数据 TCP同时接收多个应用数据,把它们打包到数据段中传给IP TCP通过端口来实
6、现跟踪记录到达的报文要转发到的应用程序(如端口80:超文本传输协议,http ) 测试所接收数据的完整性 比较TCP头的校验和,如果出现问题就给源主机发一请求,要求其重发一份数据拷贝 顺序化乱序接收的数据 通过查看TCP头中的序列号域可以完成这个任务2022-6-1303教研室 张来顺12TCP/IP体系中的运输层 速率-适应的流控 流量控制使用的是TCP窗口大小。源和目的机的窗口大小通过TCP头进行通信 如果机器的缓冲完全被填满,它就会发送一个有关最后收到数据的应答报文,其中新的窗口大小为0。这样会有效地使发送停止,直到拥塞的机器能清理掉其缓冲 定时功能 计时器可以间接地管理网络拥塞,其方法
7、是当超时出现时减慢传输率 应答接收 没被应答的数据段被认为在传输过程中已丢失,并被重传2022-6-1303教研室 张来顺13TCP/IP体系中的运输层n端口的概念 什么是端口(Port)? 端口就是传输层的服务访问点(TSAP),用来区分不同的应用进程,运输层进行复用和分用。 UDP和TCP都使用了与应用层接口处的端口与上层的应用进程进行通信。 应用层的各种进程是通过相应的端口与传输层实体进行交互。 当传输层收到IP层交上来的数据(即TCP报文段或UDP数据报),就要根据其首部中的端口号来决定应当通过哪个端口上交给应当接收此数据的应用进程。2022-6-1303教研室 张来顺14TCP/IP
8、体系中的运输层 端口在进程中的作用应用进程应用进程应用进程应用进程应用层运输层网络层端口端口端口端口端口端口端口端口TCP复用UDP复用NSAPNSAPNSAPNSAPUDP分用TCP分用IP复用IP分用IP数据报IP数据报UDP数据报UDP数据报TCP报文段TCP报文段2022-6-1303教研室 张来顺15TCP/IP体系中的运输层 端口的复用和分用功能 端口将应用层的不同进程区分开; 使用复用和分用技术,使得运输层和网络层的交互看不见各种应用进程,而只有TCP报文段或UDP数据报; IP层也使用类似的复用和分用技术,因而网络层和数据链路层的交互也只有IP数据报。 传输层和应用层的接口上所
9、设置的端口是一个16比特的地址,并用端口号进行标识。 端口号分为两类:一类是因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序(标准服务器端)固定使用的熟知端口,其数值范围为1-1023。另一类则是一般端口,用来随时分配给请求通信的客户进程,其数值范围为1024-65535。2022-6-1303教研室 张来顺16TCP/IP体系中的运输层 常用熟知端口熟知端口应用程序21,20FTP23TELNET25SMTP53DNS69TFTP80HTTP161SNMP162SNMP(trap)2022-6-1303教研室 张来顺17TCP/IP体系中的运输层端口500端口501IP=13
10、1.6.23.13A端口500IP=128.36.1.22B端口25IP=130.42.85.15C连接1连接2连接3例:与主机C的SMTP建立三个连接 A与C先建立第一个连接,端口500端口25 A与C后建立第二个连接,端口501端口25 同样,B与C建立第三个连接,端口500端口252022-6-1303教研室 张来顺18TCP/IP体系中的运输层 端口号与IP地址结合使用 为了在通信时不致发生混乱,必须将端口号与主机的IP地址结合在一起使用; TCP使用“连接”作为最基本的抽象,一个连接由它的两个端点来标识,这样的端点称为插口(socket),就是我们常说的“套接字”。 插口包括IP地址
11、(32比特)和端口号(16比特),共48比特;插口=(IP地址,端口号) 在整个因特网中,在运输层通信的一对插口必须是唯一的; 从上例可知:使用面向连接的TCP,就是建立一条端到端的虚连接。形成一对插口(131.6.23.13,501)和(130.42.85.15,25)2022-6-1303教研室 张来顺19UDP UDP只在IP的数据报服务之上增加了很少一点功能,就是端口的功能和差错检测的功能。 无连接服务,减少了开销和发送数据之前的时延。 UDP不使用拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。 UDP首部字段只有8个字节,比TCP的20字节的首部要短
12、。 由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送效率降低。这些对某些实时应用是很重要的。这些应用,允许丢失一些数据,不允许数据有太大的时延。2022-6-1303教研室 张来顺20UDPn使用UDP、TCP的应用及应用层协议应 用应用层协议运输层协议域名解析DNSUDP文件传送TFTPUDP路由选择协议RIPUDPIP地址配置BOOTP, DHCPUDP网络管理SNMPUDP远程文件服务器NFSUDPIP电话专用协议UDP流式多媒体通信专用协议UDP多播IGMPUDP电子邮件SMTPTCP远程终端接入TELNETTCP万维网HTTPTCP文件传送FTPTCP2022-6-130
13、3教研室 张来顺21UDPnUDP用户数据报首部格式首部数据UDP伪首部 源端口目的端口长度 检验和122222源IP地址 目的IP地址017UDP长度441122022-6-1303教研室 张来顺22UDPnUDP报文首部8个字节n长度字段为整个报文的总长度n校验和采用IP数据报首部的校验方式。对整个UDP报文计算。以16bit为单位,按二进制反码运算求和,得出的结果在求反码即为校验和。计算前校验和字段填“0”。n增加伪首部仅计算校验和时使用。伪首部既不向下传递,又不向上移交。校验和既检查了UDP报源和目的端口号,又检查了IP数据报的源和目的地址。n伪首部的第四字段值为17,表示IP报传送U
14、DP报文。(协议字段)2022-6-1303教研室 张来顺23UDPnUDP数据报的封装 帧首部 IP首部 UDP首部 UDP首部应用数据应用数据 IP首部 UDP首部应用数据UDP数据报应用数据2022-6-1303教研室 张来顺24UDPnUDP应用n简单、简短的应用如查询操作、网络管理IP phone,利用UDP快捷的特点nUDP以客户/服务器模式方式工作服务端:固定守候在特定port:x,提供服务客户端:动态绑定任意port:n,向服务器的port x发出请求,获得服务响应xServernClient请求(n,x)响应(x,n)2022-6-1303教研室 张来顺25TCP 高层的许多
15、应用需要 传输大量的数据 可靠的通信服务 无法容忍IP 或 UDP提供的无可靠性保证的服务 各种应用无法保证完全一致的可靠性方法 TCP 提供通用的、可靠的通信服务 提供统一的数据流投递服务接口 支持同时双向通信2022-6-1303教研室 张来顺26TCP 两种通信方法 报文流 投递和接收的单位为报文 可靠性:报文按序接收 连续报文流,报文边界 接收的报文:大小和顺序严格与发送方相同 发送单位:报文,前后报文不能合并 接收单位:报文 数据流 投递和接收的单位为byte 可靠性:byte按序接收 连续字节流、无边界 接收的字节:顺序严格与发送方发送的顺序相同 发送单位:数据块或逐字节,前后可合
16、并 接收单位:数据块或逐字节2022-6-1303教研室 张来顺27TCP TCP可靠性保证 采用面向连接的通信方式 滑动窗口协议,以提高通信性能 捎带应答方式 未使用显示确认,减少报文种类 TCP只有一种报文格式 完成 建立、撤除连接 数据传输 确认、流量控制、窗口滑动2022-6-1303教研室 张来顺28TCP TCP的端口、插点、连接 端口号、插口的概念和方式与UDP相同 端口(port): TCP/UDP端口统一由Socket管理和分配 插口(end point): 由(IP地址,端口)表示 连接 TCP上通信双方抽象的虚电路连接 每个连接由连接的一对插口标识 如:(IP1, por
17、t1)和(IP2, port2)标识唯一一个连接2022-6-1303教研室 张来顺29TCP 共享端口号情况 (IP1, Port1) 和 (IP2, Port2)表示一个连接 (IP1, Port1) 和 (IP2, Port3)表示另一个连接 TCP使用连接的一对插口来唯一标识一个连接 两个连接只有在这四个值完全相同时,才认为是同一个连接 适合C/S模型,服务器在一个端口上提供若干连接TCPTCP应用1应用1应用2应用2TCP应用1应用1应用1应用12022-6-1303教研室 张来顺30TCP 主动和被动建立连接 TCP区分主动建立连接和被动建立连接 主动建立连接 发起建立连接方,一般
18、是客户方 被动建立连接 接受建立连接方,一般是服务器方 被动建立连接方一般先于主动连接方启动,但不发起连接建立过程,而是在某个端口上等待主动方的连接请求2022-6-1303教研室 张来顺31TCP TCP通信面临的问题 较长的网络传输时延(穿越多个网) 采用滑动窗口协议(采用停等协议性能非常低) 高效利用网络通信资源 报文丢失、重复、乱序 滑动窗口控制顺序 传输时延不定(端点远近差别很大) 重传定时的动态确定 网络拥塞 探测拥塞问题、克服拥塞办法2022-6-1303教研室 张来顺32TCP 数据流、报文段和序号 TCP协议是面向字节的 切割:根据适合传输的大小对数据流进行切割 最大报文段长
19、度64Kbytes 通常:MTU(IP头TCP头) 复原:用报文段恢复原始数据流的字节顺序 序号:排序、查错及数据流复原数据流切割报文段数据流TCP发送报文段数据流复原发送缓冲接收缓冲TCP接收TCP2022-6-1303教研室 张来顺33TCP 报文序号 依据数据流中的字节序号(流序号) 报文序号为报文段中第一字节的流序号 如:流序号x,长度L的报文段,则: 报文的序号为x,下一报文序号为xL 序号特点 报文的顺序关系 数据流的位置,更便于流的复原 需较大的序号空间(32bit,4Gbyte)x L2022-6-1303教研室 张来顺34TCP例如:在一个报文中,序号为300,而报文中数据有
20、100字节。下一个报文段,其序号为400;200序号:600200数据序号:400100数据序号:300第三组报文第二组报文第一组报文2022-6-1303教研室 张来顺35TCP TCP的流量控制 TCP采用可变发送窗口的技术进行流量控制,窗口大小的单位是字节。 在TCP报文段首部的窗口字段写入的数值就是当前设定的接收窗口数值。 发送窗口在连接建立时由双方商定,在通信过程中,接收端可根据自己的资源情况,随时动态地调整自己的接收窗口,并且告诉对方,使对方的发送窗口和自己的接收窗口一致。2022-6-1303教研室 张来顺36TCP 说明: 发送端要发送的数据共9个报文段,每个报文符长100字节
21、,共900个字节; 而接收端允许的发送窗口为500字节; 在当前情况下,发送方可连续发送5个报文段,而不必收到时确认,(已发送了二个,还可发送三个报文符);1 100 101 200301 400 401 500 501 600 601 700 701 800 801 900201 300接收端许诺的发送窗口已发送并确认已发送未确认可连续发送不可发送2022-6-1303教研室 张来顺37TCP 利用可变窗口进行流量控制举例 主机A向主机B发送数据,双方商定的窗口值是400,每一个报文段为100字节,序号的初始值为1。主机B进行了3次流量控制。主机A主机B序号=1序号=101序号=201确认序
22、号=201 窗口=300序号=301序号=401序号=201确认序号=501 窗口=200序号=501确认序号=601 窗口=0丢弃A还能发送300字节A还能发送200字节允许A再发送300字节A还能发送200字节A还能发送100字节A超时重发,但不能再发送A还能发送100字节允许A再发送200字节不允许A再发送2022-6-1303教研室 张来顺38TCP 发送窗口 发送端在发送数据时,既要考虑到接收方的接收能力,又要使网络不要发生拥塞。 发送窗口的确定:发送窗口=Min 通知窗口,拥塞窗口 注: 通知窗口:是采用接收端的流量控制窗口,其窗口值放在TCP报文首部中传送给发送端。 拥塞窗口:是
23、发送端根据网络拥塞情况得出的窗口值,来自发送端的流量控制。 在未发生拥塞的稳定工作状态,二个窗口是一致的。2022-6-1303教研室 张来顺39TCP TCP拥塞控制 TCP流量控制 可变发送窗口(BYTE) TCP拥塞控制 当加载到网络上的载荷超过其处理能力时,拥塞便会出现 分组丢失而造成超时的原因 传输线路的噪声干扰 拥塞的路由器丢弃了分组 目前互联网上发生的大多数超时现象都是由于拥塞造成的,传输错误造成的分组丢失较少 解决拥塞最切实的办法是降低数据传输速率 拥塞控制大部分是由TCP完成的。TCP试图通过动态地控制滑动窗口的大小来达到控制拥塞的目的2022-6-1303教研室 张来顺40
24、TCP 拥塞控制的三种技术 慢启动(slow-start) 加速递减(multiplicative decrease) 拥塞避免(congestion avoidance) 前提条件:通信线路使得分组丢失概率很小(1%),即分组的丢失主要因为拥塞造成的。2022-6-1303教研室 张来顺41TCP 慢启动(Slow Start) 慢启动同时考虑可能造成拥塞的网络容量和接收方容量,取以下两个窗口的最小值作为可以发送的字节数上限 通告窗口(Offered Window) 拥塞窗口(Congestion Window) 拥塞窗口的大小 发送方开始时发送一个报文段,然后等待ACK。当收到该ACK时,
25、拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的ACK时,拥塞窗口就增加为4。这是一种指数增加的关系 拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制 所有的TCP实现都支持慢启动2022-6-1303教研室 张来顺42TCP 加速递减(Multiplicative Decrease) 每出现一次超时,门限窗口值减半。 拥塞避免(Congestion Avoidance) 当拥塞窗口增大到门限窗口值时,拥塞窗口的增长将变为线性增长,避免网络再次拥塞2022-6-1303教研室 张来顺43TCP 实现拥塞控制的步骤 当一个连接初始化时,将拥塞窗口设置为1。并设置
26、慢启动的门限窗口值。 发送端的发送窗口不能超过拥塞窗口和通知窗口中的最小值,现在假定接收端不进行流量控制(即通知窗口无限大)。 发送端若收到了对所有发出的报文段的确认,就在下一次发送时将拥塞窗口加倍。可见拥塞窗口从1开始,按指数规律增长。当拥塞窗口增长到慢启动的门限窗口值时,就改为执行拥塞避免算法,拥塞窗口按线性规律增长。若出现了超时,则将当时的拥塞窗口减半,作为新的门限窗口值,同时拥塞窗口再次变为1。 拥塞窗口重新从1开始按指数规律增长,当增长到新的门限窗口值时,拥塞窗口按线性规律增长。当网络又出现了超时,仍重复上述过程。2022-6-1303教研室 张来顺44TCP超时门限窗口传输次数拥塞
27、窗口(Kbyte)“加速递减”出现一次超时,门限减半。指数增长“拥塞避免”从指数增长改为线性增长。慢启动从1开始2022-6-1303教研室 张来顺45TCP 以上讨论可以看出 “慢启动”是指每出现一次超时,拥塞窗口都降低到“1”,使报文每慢慢注入回到网络中。 “加速递减”是指每出现一次超时,就将门限值减半。 “拥塞避免”是指拥塞窗口增大到门限窗口值时,就将拥塞窗口值从指数增长降低为线性增长,避免网络再次出现拥塞。 采用这样的流量控制的方法使得TCP的性能有明显的改进。2022-6-1303教研室 张来顺46TCP TCP的重发机制 TCP的报文重发是根据所设置的定时器决定的。 当定时器的重发
28、时间到而还没有收到确认,就要重发这一报文段。 TCP采用了一种自适应算法确定超时定时器的重发时间。2022-6-1303教研室 张来顺47TCPn每个连接都维持一个变量RTT(当前往返时间的最佳估算值)。发送方的计时器(发送时启动)在达到超时间隔时触发重发机制;若在超时之前收到确认,则测量出往返时间M:n修正RTT=RTT+(1- )M其中为一个平滑因子(一般为7/8)n修正实际往返时间M同估算值RTT的偏差|RTT-M|D= D+(1- )|RTT-M|这里的可能不同前面的n确定当前的超时间隔Timeout=RTT+4Dn补充算法:对已重发的数据段无需修正RTT,而在传输失败时将超时时间加倍
29、。n效果:n在网络拥塞或收发双方距离较远时能够自动延长超时间隔,减少不必要的重发;n网络较为空闲或双方距离较近时又能迅速减小超时间隔,及时重发出错的段。2022-6-1303教研室 张来顺48TCP TCP报文格式 TCP协议只定义了一种报文格式,建立、拆除连接、传输数据使用同样的报文源 端 口UGR目 的 端 口ACKPSHRSTSYNFIN序 号确 认 序 号保留数据偏移窗 口检 验 和紧 急 指 针选 项 和 填 充数 据32 bitTCP首部20字节2022-6-1303教研室 张来顺49TCP 源端口和目的端口:各占2个字节,16比特的端口号加上32比特的IP地址,共同构成相当于传输
30、层服务访问点的地址,即“插口”。这些端口可用来将若干高层协议向下复用。 序号字段和确认序号字段: 序号:占4个字节,是本报文段所发送的数据部分第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而数据为100字节,则下一个报文段的序号就是400。 确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号。 由于序号字段有32比特长,可以对4GB的数据进行编号,这样就可保证当序号重复使用时,旧序号的数据早已在网络中消失了。2022-6-1303教研室 张来顺50TCP 数据偏移:占4比特,表示数据开
31、始的地方离TCP报文段的起始处有多远。这实际上就是TCP报文段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。 保留字段: 6比特,供今后使用,目前置为0。2022-6-1303教研室 张来顺51TCP 六个比特的控制字段 紧急比特URGent:当URG=1时,表明此报文应尽快传送,而不要按原来的排队顺序来传送。与“紧急指针”字段配合使用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接收方可以知道紧急数据共有多长。 确认比特ACK:只有当ACK=1时,确认序号字段才有意义。 急迫比特PSH:当PSH=1时,表明请求远地TCP将本报文段立即传送给其应用层,而不要等到整个缓
32、存都填满了之后再向上交付。 复位比特ReSeT:当RST=1时,表明出现严重差错,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。 同步比特SYN:在建立连接时使用,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,在发回的报文段中使SYN=1和ACK=1。因此,SYN=1表示这是一个连接请求或连接接受报文,而ACK的值用来区分是哪一种报文。 终止比特FINal:用来释放一个连接,当FIN=1时,表明欲发送的字节串已经发完,并要求释放传输连接。2022-6-1303教研室 张来顺52TCP 窗口字段 窗口Window:占2字节,
33、表示报文段发送方的接收窗口,单位为字节。此窗口告诉对方,“在未收到我的确认时,你能够发送的数据的字节数至多是此窗口的大小。” 通知窗口advertised window:接收端根据其接收能力许诺的窗口值,是来自接收端的流量控制。接收端将通知窗口的值放在TCP报文的首部中,传送给对方。 拥塞窗口congestion window:是发送端根据网络拥塞情况得出的窗口值,是来自发送端的流量控制。2022-6-1303教研室 张来顺53TCP 检验和字段:检验和字段检验的范围包括首部和数据这两部分。这是一个强制性的字段,由发端计算和存储,由收端进行验证。和UDP用户数据报一样,计算检查和时,在TCP报
34、文段的前面加上12字节的伪首部。伪首部格式同UTP的伪首部,但将伪首部第4字段中的17改为6(TCP的协议号是6),第5字段的长度为TCP长度。 选项字段允许每台主机设定能够接受的最大TCP载荷能力(缺省536字节)2022-6-1303教研室 张来顺54TCPnTCP分节的封装 帧首部 IP首部TCP首部TCP首部应用数据应用数据应用数据 IP首部TCP首部应用数据TCP分段segment2022-6-1303教研室 张来顺55TCP TCP的运输连接管理 TCP是面向连接的协议,运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。 运输连接的管理就是使运输连接的建立和释放都能正常地
35、进行。在连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在 要允许双方协商一些参数(如,最大报文段长度,最大窗口大小,服务质量等) 能够对运输实体资源(如缓冲区大小,连接表中的项目等)进行分配2022-6-1303教研室 张来顺56TCP TCP的传输连接管理三次握手技术 TCP是面向连接的协议,传输连接的建立和释放是每次通信中必不可少的过程。传输连接的管理就是使传输连接的建立和释放都能正常地进行。 TCP连接的建立采用客户/服务器方式。 为了确保连接的建立和释放都是可靠的,TCP使用三次握手的方式,其中交换了三个报文。 已证明三次握手是在分组丢失、重复和延迟的情况下确保非模糊协
36、定的充要条件。2022-6-1303教研室 张来顺57TCP 创建一个连接的三次握手 TCP使用同步字段SYN来描述用于创建一个连接的三次握手中的报文段; 每一端产生一个随机32位序列号;每建立一个新连接,TCP就选择一个新的随机数。 三次握手过程 客户端向服务器端发送请求建立报文段,SYN=1,ACK=O,发送序号=x 服务器端若允许建立连接,向客户端发送确认报文段,SYN=1,ACK=1,发送序号=y,确认序号=x+1 客户端再向服务器端发送一确认,SYN=0,ACK=1,确认序号=y+1,序号=x+12022-6-1303教研室 张来顺58TCP 用三次握手建立TCP连接主机A主机B主动
37、打开被动打开SYN = 1,ACK=0,序号 = xSYN=0,ACK=1,序号 = x+1,确认序号 = y+1SYN = 1, ACK=1,序号 = y, 确认序号 = x+1确认确认2022-6-1303教研室 张来顺59TCPn同时发起建立请求主机A主机BSYN = 1,ACK=0,序号 = xSYN=1,ACK=1,序号 = x,确认序号 = y+1SYN = 1, ACK=0,序号 = ySYN=1,ACK=1,序号 = x+1,确认序号 = y2022-6-1303教研室 张来顺60TCP 为何使用三次握手 当客户端发送一连接请求报文段,没有收到服务器端的确认,认为丢失。客户端再
38、重传一次,得到确认,传输数据,释放连接。 然而,客户端第一个请求报文段并每没有丢失,而是延时到这次连接、数据传输、释放连接后才到达服务器端。服务器端认为又一次新的连接,向客户端发一确认。客户端由于并没有发起新的连接,不会发送数据,服务器端会一直等待,造成资源浪费。2022-6-1303教研室 张来顺61TCPn数据传输发送端接收端Send_Seq=0(0-2047)Ack_Seq= 2048,WIN=2048应用进程交付3KAck_Seq= 4096, WIN= 0向应用进程交付2K空闲缓存4K2KSend_Seq=2048 (2048-4095)0Ack_Seq= 4096, WIN= 20
39、482K暂停发送Send_Seq=4096 (4096- 5119)1K2022-6-1303教研室 张来顺62TCP 用三次握手释放TCP连接 不立即产生第2个FIN报文段,是因为收到第1个FIN报文段后,需通知应用程序做出确认后产生第2个FIN报文段,而应用程序的确认可能需要很长的时间,因此先发送一响应报文以防发方因超时重发第1个FIN报文段。主机A主机B应用进程释放连接通知主机应用进程FIN = 1,ACK=1,序号 = xACK=1,确认序号 = y+1FIN = 1, ACK=1,序号 = y, 确认序号 = x+1确 认确认应用进程释放连接ACK=1,确认序号 = x+12022-
40、6-1303教研室 张来顺63TCP主机A的应用进程先向其TCP发出连接释放请求,并且不再发送数据。TCP向主机B的TCP发出通知要释放从A到B这个方向的连接的请求报文段,其首部中FIN=1,序号x等于前面已传送过的数据的最后一个字节的序号加1。主机B的TCP收到释放连接通知后即发出确认,确认序号为x+1,同时通知自己的应用进程。这样,从A到B的连接就释放了。在主机B向主机A的数据发送结束后,其应用进程就通知TCP释放连接。主机B发出的连接释放报文段中,FIN=1,确认序号重复为x+1,序号y等于前面已传送过的数据的最后一个字节的序号加1 。主机A的TCP收到此报文段后,还要向主机B给出确认,
41、其确认序号为y+1。主机A和主机B的TCP分别通知上层应用进程,连接已经释放。2022-6-1303教研室 张来顺64TCPnTCP连接管理的有限状态自动机CLOSEDLISTENSYN_RCVDSYN_SENTESTABLISHEDFIN_WAIT_1FIN_WAIT_2CLOSINGCLOSE_WAITLAST_ACKTIMED_WAITCLOSED客户应用进程请求连接 3 次握手第1步3 次握手第3步释放连接请求对方应答收到对方的释放请求超时LISTEN收到连接请求收到客户端的确认收到对方的释放请求释放连接请求对方应答收到对方的释放请求对方应答 对方请求+应答释放连接请求拒绝连接请求建立连接同时建立连接黄线是客户机常规通路绿线是服务器的常规通路红线是非常事件(被动关闭)(主动关闭)(主动打开)(被动打开)3 次握手第2步(数据传输阶段)2022-6-1303教研室 张来顺65TCP TCP协议的小结 TCP协议能适应各种性能的网络 网络性能好时,TCP能获得很高的传输吞吐量 网络性能差时,TCP能正常的工作 TCP协议能适应长、短不同的时延及时延变化范围大的传输路径 动态调整重发超时时限,自动适应不同的时延 能对网络的拥塞情况作出缩减流量的反应 应用适应性 能与不同处理能力的主机很好的通信 能满足大数据量的传输的要求,较高的吞吐性能 能满足小数据量且要求快捷反应的应用
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。