《TCPIP协议》PPT课件.ppt
第五章 TCP/IP协议,互联网的基本概念IP层在TCP/IP协议栈中的位置,应用层协议,传输层协议,网卡驱动程序,ARP,IP,ICMP,IPv4 和 IP 数据报,无连接数据报传递服务IP 数据报格式IP 数据报的分段和重组IP 数据报的路由和转发IP 数据报差错报告,无连接数据报传递服务,网络1,R1,源主机,网络2,R2,网络3,目标主机,R3,网络4,IP数据报,IP数据报,帧头1,IP数据报,IP数据报,帧头2,IP数据报,IP数据报,帧头3,IP数据报,无连接数据报传递服务(续),IP只要求物理网络提供最基本的功能:传输包。IP数据报的传递是互相独立的;(OSI 模型中X.25是有连接的,后来才增加无连接服务。)收到数据报时不发确认;对IP数据报的损坏、丢失、错序、重复 听之任之。确定数据报的路由。数据报的分段和重组。尽力而为(best effort),不保证可靠。,IP数据报格式,版本,报头长,服务类型,总长度,标识,DF,MF,分段位移,生存时间TTL,协议号,报头校验和,源 IP地址,目标 IP地址,可选项填充,数据,0,16,31,IP数据报格式(续),绝大多数IP数据报包含20字节的报头:版本(4位):IP协议版本,当前为4。报头长(4位):本数据报头的字数,每字4字节,范围是515,5即20字节,15即60字节,所以选项最多占40字节服务类型(8位)(type of service):本数据报的服务质量参数,当前未实现,设置为0。总长度(16位):数据报最大长度为65535字节。,IP数据报格式(续),标识(16位):数据报编号,当路由器将本数据报分段时,此标识拷贝到每个段的IP报头。在分段重组时它用来确定该分段属于哪个数据报。DF(Dont Fragment)(1位):DF=1禁止本报分段。MF(More Fragment)(1位):MF=1表示后面还有本报的分段,MF=0表示是最后一个分段。分段位移:分段位移8指出本分段在原数据报中从第几字节开始。除最后一段外,其余分段的长度是8字节的倍数。这些字段是与分段和重组有关的。,IP数据报格式(续),生存时间TTL:指明数据报在互联网上逗留的最大时间。标准按秒计,实际上按跳数计。数据报每经过一个路由器,TTL减1,当TTL0 时数据报被丢弃。防止无法投递的报无限传递。协议号(8位):指明上一层协议,6表示上层是TCP,17表示上层是UDP。报头校验和(16位):通过路由器时TTL减1,校验和要重新计算。IPv6无校验和,.源IP地址(32位):数据报源主机的IP地址。目标IP地址(32位):数据报目标主机的IP地址。,IP数据报的分段和重组,物理网络一般限制通过包的最大长度,如以太网允许最大帧长1518字节。若物理网络允许的包长小于IP数据报长,路由器的IP层要将该报分段成多个IP报转发。分段后的数据报在被发送过程中还可以再分段。由目标主机的IP层对分段报进行一次重组,IP不区分经一次或多次分段的报。,IP数据报的路由和转发,主机和路由器如何为IP数据报确定路径:源主机和目标主机位于同一物理网络:数据报在物理网络内传递。比如以太网,源主机将目标主机IP地址转换成物理地址,把数据报封装在以太网帧中直接发送。源主机和目标主机位于不同物理网络:数据报经路由器转发。路由器通过路由表决定数据报的下一站。源主机如何确定该发往哪个路由器?主机也有一张路由表,并配置默认网关。,IP数据报的路由和转发(续),网2:202.112.58.0,网1:50.0.0.0,网4:128.1.0.0,网3:166.111.0.0,R3,202.112.58.3,R1,202.112.58.1,50.0.0.1,R2,202.112.58.2,128.1.0.2,166.111.0.1,IP数据报的路由和转发(续)路由器R3的路由表,*项是默认路由项,或叫默认网关(default gateway),IP数据报差错报告,互联网控制报文协议 ICMP(Internet Control Message Protocol)就是 IP 数据报差错报告机制,ICMP 报文封装在 IP 数据报中发送。ICMP差错报文:ICMP信息报文:目标不可达 回答请求/回答响应数据报超时(ping 用它测主机可达性)数据报参数问题 时间戳/时间戳响应报源减速 地址屏蔽码请求/响应重定向,路由协议,路由器的核心是网络层,包括 IP、ICMP、ARP,还有一个或多个路由协议。由于路由协议需要传输层协议支持,实际路由器还包括高层模块,还有网管模块。路由器功能和路由协议分类内部路由协议OSPFv2外部路由协议BGP-4无类别域间路由CIDR,路由器功能,互联网中路由器的传统功能:交换路由信息:与其它路由器交换网络拓扑和网段时延等信息;执行路由算法:基于路由信息计算、更新路由表,为数据报决定路由。Internet是由许多自治系统 AS互联而成,所谓自治系统是由单一机构管理、操作下的路由器连接的互联网。,路由协议分类,Internet的路由协议分两类:内部路由协议或内部网关协议IGP自治系统内部路由器交换路由信息的协议:RIP(Routing Information Protocol),DV类。IS-IS,OSPF(Open Shortest Path First),LS类。外部路由协议或外部网关协议EGP 不同自治系统的路由器交换路由信息的协议:BGP(Border Gateway Protocol),内部路由协议OSPF原理,是链路状态路由协议每个路由器都有本链路状态信息,即它直接连接的路由器和网络,及到它们的“距离”。周期地将本链路状态扩散(flooding)到所有结点。所有的链路状态合在一起就是自治系统的拓扑数据库,每个路由器维持这个拓扑数据库。每个路由器根据这个拓扑数据库构造一个以自身为根的最短路径树,从最短路径树生成它的路由表。,外部路由协议BGP,网络,网络,R2,R3,网络,R1,网络,网络,R5,R6,网络,R7,AS1,AS2,外部路由协议BGP(续),路由器R1属于自治系统AS1,路由器R5属于 AS2。R1和R5都实现外部路由协议BGP交换路由表,它们也分别实现各自的自治系统内部路由协议,如OSPF。BGP基本上是距离向量路由算法,所不同的是它把到达某网络选择的整个路径告诉邻居,而不只是下一站。路径信息AS_PATH中有所穿越的自治系统网络编号,利用AS_PATH可进行环路检测,克服了“计数到无限”的问题。,新一代IPIPv6,IPv4的问题:32位约43亿个地址,大大少于全球人口数(60亿),将于2008年用完;骨干网路由表信息爆炸。IPv6的主要设计特点IPv6基本头格式IPv6地址IPv6可选项全球的IPv6试验网,IPv6的主要设计特点,保留IPv4无连接,“尽力而为”数据报传递特征。扩展的地址空间和编址功能:IPv6支持的地址数是IPv4的40亿40亿40亿倍!128位地址采用层次结构,地球每平方米的地址数保守估计1564,乐观估计3911016。精简的基本报头格式(8字段),简化了报头处理。支持服务质量控制:通信流等级(traffic class)将IP包分为不同的服务类别。流标号(flow label)可为特定的IP包流申请资源和优先级。可选项支持身份认证和数据加密。,IPv6的主要设计特点(续),基本头和扩展头编码方式改进了性能,增加了扩展的灵活性,基本头,扩展头1,扩展头N,传输层包,40字节,可选,.,IPv6基本头格式,版本,通信流等级,流标号,负载长度,后续头部,跳数限制,源地址(128位),目标地址(128位),0,31,IPv6基本头格式(续),版本(version):6。通信流等级(traffic class):用于服务质量控制。流标号(flow label):路由器对流中报同样处理。负载长度(payload length):除基本头外负载字节数。后续头部(next header):标识基本头后头部类型。跳数限制(hop limit):数据源设定,经路由器减1。源地址(source address):数据报源地址。目标地址(destination address):数据报目标地址。,IPv6基本头格式与IPv4比较,IPv4报头中有报头长度,IPv6基本头定长。IPv4报头中有报头校验和,IPv6没有。Paxson经统计发现:通过链路层CRC校验的包约0.02%有校验和错误。Stone等收集了约22亿个包,其中约48万个包有IP、UDP或TCP校验和错误。1278个包IP校验和错。IPv6的路由器不对数据报分段,IPv6的可选项在扩展报头,路由器一般不需要处理可选项。,IPv6地址,有三类IP地址:单播、任播、多播地址地址的冒分十六进制表示可集成的全局单播地址局部使用(local use)的单播地址嵌入IPv4地址的IPv6地址任播地址多播地址,地址的冒分十六进制表示,将128位地址分成8段,每段16位用十六进制数表示,段之间用冒号“:”隔开。例2080:0000:0000:0000:0123:4567:89AB:CDEF,FF01:0000:0000:1234:89AB:0000:0000:0000一或多个连续的全0可用“:”代替,但“:”在一个地址中只能出现一次,各段数字开始的0可省略。如FF01:0:0:1234:89AB:地址前缀用“IPv6地址/前缀位数”表示,前缀位数是十进制数。例如:3FFE:3200:/24。:1是回绕地址(loopback),用于自己给自己发送。,可集成的全局单播地址(aggregatable global unicast address),格式前缀FP(Format Prefix):为001。顶级集成标识(Top-Level Aggregation ID):指定Internet顶级机构,即服务提供者网络号。下一级集成标识(Next-Level Aggregation ID):由TLA ID指定的服务提供者用于区分它的用户网络号,FP,TLA ID,RES,NLA ID,SLA ID,interface ID,3,13,8,24,16,64,可集成的全局单播地址(续),场所级集成标识(Site-Level Aggregation ID):用户用来构建用户网络的编址层次,标识用户网络内的特定子网。每个场所可有65536子网。接口标识(interface ID):用于标识链路接口,一般是数据链路层地址,如48位以太网地址。保留(REServed):留给将来使用。对于每个Internet服务提供者的网络号TLA ID,Internet的主干路由器必须有一表项与之对应。保留的8位是为TLA ID和/或NLA ID扩展预留。,局部使用的单播地址,1111 1110 10,0,接口标识,1111 1110 11,0,子网标识,接口标识,10,54,64(位),本链路使用(link-local-use)的单播地址格式,10,38,16,64(位),本场所使用(site-local-use)的单播地址格式,局部使用的单播地址(续),若源/目标地址为本链路使用的地址,则数据报只转发到该单一链路,如中继器或网桥连接的以太网链路,不转发到其它链路。若源/目标地址为本场所使用的地址,则路由器不把数据报转发到场所以外。一个场所可以是由路由器连接的多个以太网链路。局部使用的地址无需申请地址前缀,若要连到Internet,可加全局前缀自动重编址。,嵌入IPv4地址的IPv6地址,IPv4向IPv6的过渡:在过渡时期IPv4地址和IPv6地址必须共存。过渡期有的结点实现双IP协议栈,同时支持IPv4和IPv6,被称为 IPv6/IPv4结点。采用“隧道(tunnel)技术”:在IPv4路由拓扑的基础上将IPv6数据报外加IPv4报头转发,即封装IPv4报头。隧道可以是源到目标路径的一段,开始和结束端是IPv6/IPv4结点。,嵌入IPv4地址的IPv6地址(续),实施隧道技术的IPv6/IPv4结点被指定特殊的IPv6单播地址,称为“与IPv4兼容的IPv6地址(IPv4-compatible IPv6 address)”。隧道端结点的IPv4地址可从这种IPv6地址自动导出。,000000,0000,IPv4地址,80,16,32 位,嵌入IPv4地址的IPv6地址(续),“映射IPv4的IPv6地址(IPv4-mapped IPv6 address)”用来表示只实现IPv4不支持IPv6的结点。在IPv4和IPv6混合网中,上述地址可用冒分十六进制和点分十进制结合的形式表示为:x:x:x:x:x:x:d.d.d.d,如:202.112.58.200,000000,FFFF,IPv4地址,80,16,32(位),任播地址,任播地址是从单播地址空间分配的,当一个单播地址被分配给一个以上接口时就变成任播地址。任播地址不能用作源地址;不能指定给主机,只能指定给路由器。发送到任播地址的数据报被送到“最近”的结点。任播地址可表示连到特定子网的一组路由器,或属于一个机构的一组路由器。,多播地址,标记(flag):T=0表示永久性的周知(well-known)多播地址;T=1表示暂时指定的多播地址。范围(scope):限制多播组的范围,1=本结点(node-local)范围;2=本链路(link-local)范围;5=本场所(site-local)范围;8=本机构范围;14=全局范围(global scope)。例FF02:2,FF05:2。,1111 1111,标记,范围,组标识,000T,8,4,4,112(位),IPv6地址前缀的初始分配,IPv6可选项,IPv6的可选项放在扩展头。定义了6种选项:逐跳选项(hop-by-hop options):给路由器信息;路由选项(routing options):部分/全部路由信息;分段选项(fragment options):管理数据报分段;目标选项(destination options):给目标的信息;身份认证(authentication):为数据报提供发送主机身份认证和数据完整性校验;载荷安全封装(encapsulating security payload):为数据报提供加密,也包括发送主机身份认证。,全球的IPv6试验网,1996年创建的 6bone 是全球的IPv6试验网。6bone 使用地址前缀 3FFE:/16。它为注册者分配一个24位地址前缀,称为 pTLA(pseudo TLA)。CERNET分配到3FFE:3200:/24。6bone 通过封装 IPv4 报头来传递 IPv6 数据报。IPv6的前景?!从IPv4平滑过渡到IPv6十分重要,但过渡到 IPv6 耗资巨大!美国拥有的IPv4地址占全世界的74%,日、韩和欧洲较积极。,Internet传输层,BGP,FTP,HTTP,SMTP,TELNET,SNMP,OSPF,IP+ICMP,DNS,TCP,UDP,Internet传输层,传输控制协议 TCP(Transmission Control Protocol)是端到端、有连接、可靠数据流传输协议。多数互联网应用需要TCP的可靠传输服务。用户数据报协议 UDP(User Datagram Protocol)是端到端、无连接、不保证可靠的数据报传输协议。它为互联网上实时视频、音频应用提供了实验环境。拥塞控制的进一步研究,TCP概况,TCP 是由Vinton Cerf 和 Robert Kahn 在1973年设计,原先 IP 和 TCP 是合在一起的,后来把寻径转发和可靠传输分成两层。TCP 向应用层提供可靠的进程间通信。IP地址标识主机,TCP 端口号标识应用进程。集中统一分配的端口号称为周知端口(well-known port),其余的动态分配。应用进程使用 TCP 通信,首先要建立连接。TCP传输的数据单元称数据片(segment)。,可靠数据流传输协议TCP,TCP数据可靠传输机制TCP滑动窗口流控TCP数据片格式TCP连接建立三次握手TCP连接关闭TCP重传策略和重传超时值TCP拥塞控制TCP协议的问题和扩充,TCP数据可靠传输机制,TCP源进程,TCP目标进程,数据字节10012000,ACK 2001,数据字节20012500,丢失,超时,重传数据字节 20012500,ACK 2501,TCP数据可靠传输机制(续),TCP 源进程为一个连接上传输的每个数据字节指定序号;TCP 为每个数据片计算校验和;TCP 目标进程要对正确收到(即校验和正确)的数据字节序号给予确认(ACKnowledgement);TCP 源进程所发出的数据片在某时间间隔没有收到确认,则要(超时)重传数据片。若每发一个数据片要等待确认,性能.,TCP滑动窗口流控,目标进程控制源进程发送窗口的大小窗口外左边的字节已被发送,且已收到确认窗口内字节可以发送/已被发送,但未收到确认窗口外右边的字节不能发送。,窗口滑动,TCP滑动窗口流控(续),TCP确认字节,滑动窗口大小也以字节为单位,而不是数据片。这是有历史原因的,原来TCP和IP是一层,采用字节流为了方便TCP数据片被分段,后来分成两层,分段功能放在IP层。在传输中几个小片合成一个片会更有效,采用字节流小片合大片更方便。用数据片数目说明数据总量不及用字节数更确切,因为一个数据片可以容纳一个字节,也可以容纳1000字节。,TCP数据片格式,目标端口(destination port),校验和(checksum),紧急指针(urgent point),序号(sequence number),确认号(acknowledgement number),选项(options)填充(padding),数据,0,16,31位,源端口(source port),窗口大小(window size)(字节数),FIN,SYN,RST,PSH,ACK,URG,片头长度,保留,20 字 节,TCP数据片格式(续),源端口:连同源 IP 地址标识源应用进程。目标端口:连同目标 IP 地址标识目标主机的一个应用进程。序号:代表本数据片第一个字节的序号。确认号:若ACK=1,确认号代表期待接收的下一数据字节序号。片头长度:片头的字数,每个字32位。指明数据从哪里开始。,TCP数据片格式(续),6个控制位:URG=1 表示紧急指针有效;URG=0 忽略指针。ACK=1 表示确认号有效;ACK=0 忽略确认号。PSH=1 表示推进,让目标TCP向上递交数据片。RST=1 表示清除连接,发生主机故障时清除连接,也用于拒绝非法数据片或连接请求。SYN=1 表示连接请求,用于建立连接并通告初始序号,本片序号=该连接的初始序号。FIN=1表示本方数据流终止,即关闭本方数据流。注意 SYN 和 FIN 的片即使无数据也占1个序号。,TCP数据片格式(续),窗口大小:16位,源方接收窗口的字节数,即目标方发送窗口大小。校验和:16位,对片头和数据以16位字计算得到,校验和还包括源、目标IP地址等96位伪报头。注意伪报头不发送。紧急指针:当URG=1时,指针指向紧急数据后面字节的位置。选项:RFC793中定义了最大数据片长度MSS选项。.,TCP数据片格式(续)讨论,校验和检查需不需要?够不够?Paxson 1997年经统计发现:通过链路层CRC校验的包约 0.02%有校验和错误。Stone 等在19981999年收集了约22亿个包,其中约 46.86万个包有TCP 校验和错误,包括端主机硬件错误、端主机软件bugs(UNIX、Windows NT)以及路由器内存错误等(不要太信任硬件!)。有一半错误无法确认原因(数据隐私)。,TCP数据片格式(续)讨论,0255后来扩展为01023端口号一般作为周知端口(well-known port)由IANA管理,统一分配给系统应用进程,如HTTP用80。102465535 端口号由用户动态使用,但此惯例不都遵循。TCP数据片最小是20字节(无数据的SYN片、ACK片),最大长度的默认值是556字节。有人用Tcpdump对网络上某条线路进行一天的监听,统计发现25的IP包是40字节,576字节以下的IP包占75。,TCP连接建立三次握手,发送方 TCP,接收方 TCP,发SYN,序号=x,发SYN,ACK,序号=y,确认号=x+1,发ACK,确认号=y+1,TCP连接建立三次握手必要性,发送方 TCP,接收方 TCP,发SYN,序号=200,收SYN,序号=100,发SYN,ACK,序号=300,确认号=101,发RST,序号=101,发SYN,ACK,序号=400,确认号=201,发ACK,序号=201,确认号=401,收SYN,序号=200,TCP连接建立三次握手必要性(续),三次握手是必要的,因为同步数据片会丢失、延迟或重传。接收方在收到一个同步数据片时,无法知道它是否是一个老、延迟的重复片,若无三次握手会造成混乱。上例是一个老的、重传的、延迟的同步数据片,但接收方无法知道这一点,所以进行第二次握手。发送方发现被确认的序号不对,发拒绝此非法数据片。接下去是针对同步片的正常同步过程。,TCP连接关闭,发送方 TCP,接收方 TCP,发FIN,ACK,序号=x,确认号=y,发ACK,(数据),序号=y,确认号=x+1,发ACK,确认号=z+1,发FIN,ACK,序号=z,确认号=x+1,.,TCP重传策略和重传超时值,TCP采用的是累计确认和后退N重传机制。实现简单,但浪费带宽。对高质量线路重传常常是拥塞而丢弃造成。持续拥塞的情况,重传是火上浇油,更加拥塞。设置适当的重传超时值 RTO(Retransmission Time Out)十分重要.,RTO必须动态修正。,TCP重传超时值(续),RTT(Round Trip Time)表示来回传输时间,但各次传输 RTT不会一样,需要某种“平均化”的值,称为 SRTT(Smoothed RTT)。设定SRTT初值,可用各次的RTT对SRTT修正:SRTT SRTT(1-)RTT,其中是平滑因子,建议值0.80.9,典型值7/8。令 Err=RTTSRTT,TCP重传超时值(续),|Err|每次传输也都不同,考虑偏差的平滑值D。设定D的初值,以后利用各次的|Err|对D修正:D D(1-)|Err|其中与 SRTT 计算式中的可以同或不同。重传超时值按下式计算:RTOSRTT4D,TCP重传超时值(续),对算法来说正确测量RTT是基础,但RTT很难正确测量。特别当发生数据片超时重传时,从收到的 ACK 无法判断这是对原数据片还是重传数据片的确认。Karn算法:对于重传的数据片不去更新RTT,每次重传时就是将前一次的 RTO加倍,直至重传成功。Karn算法在大部分 TCP 中实现。,TCP拥塞控制,1986年10月开始,Internet 出现了一系列的“拥塞崩溃”,例如某两地相距不到400米,经过3个网络结点,它们之间的数据吞吐量一度从平时的32kbps降到了40bps。Jacobson 研究发现:这是由于在坏的网络情况(即拥塞)下 TCP 的累计确认、超时重传、后退 N 等机制造成。Jacobson 在 TCP 中增加了拥塞控制算法。这些算法防止了今天 Internet 的拥塞崩溃。,TCP拥塞控制,网络拥塞现象TCP拥塞控制算法的基本思想TCP拥塞控制算法:-慢启动和拥塞避免(slow start,congestion avoidance)-快重传和快恢复(fast retransmit,fast recovery)TCP实现的版本,网络拥塞现象网络拥塞对吞吐量的影响,网络吞吐量是数据通过网络的传送速率,吞吐量,负载,无拥塞,轻微拥塞,严重拥塞,A,B,拥塞对吞吐量的影响,拥塞控制基本策略闭环控制,闭环控制(closed-loop control)是一种动态控制系统,它包括反馈机制和控制机制。反馈机制允许网络把拥塞情况通知数据源。路由器(或交换机)是监控拥塞程度的最好场所。显式反馈和隐式反馈.控制机制允许数据源调整给网络的负载。窗口控制和速率控制。,TCP拥塞控制算法的基本思想,是一种把丢失作为拥塞(隐式反馈)信号的闭环控制。丢失可能是差错丢弃或拥塞丢弃,现代通信传输的误码率很低,丢失多半是拥塞造成。为每个连接动态确定拥塞窗口 cwnd 反映网络拥塞情况。TCP发送方根据 cwnd 和对方的接收窗口 rwnd 调整发送窗口wnd:wnd=min(cwnd,rwnd)为每个连接设置窗口门槛值 ssthresh,其初值可设置为 64k字节或 rwnd。,TCP拥塞控制算法慢启动和拥塞避免,(1)慢启动:开始时令 cwnd=1,发送1个数据片,收到确认后cwnd 加1,即 cwnd=2,发送2个数据片,收到2个确认片后cwnd 加2,即cwnd=4,发送4个数据片。总之,当cwnd=n时,发送n个数据片,都收到确认片后cwnd 加 n。这叫做慢启动。实际上,在 RTT 时间内 cwnd 的增量cwnd=cwnd,cwnd 是按指数增长。,TCP拥塞控制算法慢启动和拥塞避免(续),慢启动后,会出现三种可能:cwnd 达到慢启动门槛值 ssthresh(slow start threshold);cwnd 达到 rwnd;超时无确认。(2)拥塞避免:当 cwnd 达到 ssthresh,则cwnd 改为线性增长,发送 cwnd 个数据片,在收到全部确认后,cwnd 加1,即在 RTT 时间内 cwnd 的增量 cwnd=1。(3)当cwnd 达到 rwnd,则发送量不再增长。,TCP拥塞控制算法慢启动和拥塞避免(续),(4)当数据片的重传计时器超时仍未收到确认,则重传数据片,且令ssthresh=cwnd/2(即当前拥塞窗口的一半),再回到(1),重新慢启动。慢启动和拥塞避免作为组合算法在TCP中实现,根据窗口门槛值和数据丢失情况来动态调整发送窗口。,TCP拥塞控制算法快重传,当TCP接收方收到一个错序(序号不连续)的数据片时,它立即发一个ACK片,这是一个重复的ACK,目的是让对方知道数据片错序。TCP发送方不等待重传计时器超时,根据重复ACK的情况立即重传,这就是快重传。假定:1、2个重复ACK只是数据片暂时错序,3个重复ACK表明数据片丢失?!,TCP拥塞控制算法快恢复,在快重传后,不是进入慢启动,而是把 cwnd 降一半,然后按原先方式增加,就叫快恢复。为什么采用快恢复而不是慢启动?收到重复的ACK,不只表示数据片可能丢失,还表示TCP发送方和接收方之间仍有数据流,TCP接收方只当收到后面的数据片,才可能发重复ACK,所以拥塞并不 严重。,TCP拥塞控制算法快重传和快恢复:例,.,TCP发送方,TCP接收方,数据片1,数据片5,数据片6,ACK6,数据片7,ACK6,数据片8,ACK6,数据片15,ACK6,数据片6,ACK6,ACK16,cwnd=5+3,cwnd+1,.,cwnd=10,TCP拥塞控制算法快重传和快恢复算法,(1)当发送方收到第3个重复的ACK,设置ssthresh=cwnd/2,但不小于2个数据片。(2)重传丢失的片,设置cwnd=ssthresh+3。(3)再次收到重复的ACK时,cwndcwnd+1。(4)若新 cwnd值允许,则恢复发送1个新片。(5)当非重复的ACK到达,它是对(2)重传的确认。设置cwnd=ssthresh,进入拥塞避免。,TCP拥塞控制算法快重传和快恢复算法的讨论,快重传算法选择重复ACK 的门槛值为 3,但即使收到3个重复的ACK,也可能只是暂时错序,如包的传递路径改变,.。所以快重传的片中也会有不必要的重传。Paxson对35个Internet站点,20000次TCP批量数据传输作了分析:必要和不必要的快重传的比例记为 Rg:b。,TCP拥塞控制算法快重传和快恢复算法的讨论,若重复ACK门槛值设为 4,Rg:b 改进为 原2.5倍,但减少了30快重传的机会。若此值设为 2,增加了6570快重传的机会,但不必要的重传增加为原来的3倍。当一个窗口中只有一个数据片丢失时,快重传和快恢复优化了性能,但是同一窗口中有多个数据片丢失时不能快恢复。,TCP实现的版本,1988年的 BSD TCP 版本被称为 Tahoe TCP,它包括慢启动、拥塞避免和快重传,快重传后进入慢启动。1990年的 BSD TCP 版本被称为 Reno TCP,它实现了包括快恢复在内的四个算法。这4个算法已成为 TCP拥塞控制算法标准。当同一窗口中有多个数据片丢失时不能快恢复,1999年 Floyd 等改进了算法,改进后的 TCP版本称为 New-Reno TCP。,TCP协议的问题,对于高带宽和RTT大的链路,如干线和卫星信道等又宽又长的链路,TCP 存在较大性能问题。TCP的16位窗口限制:一个TCP 连接在 RTT 时间内最多只能发送21665K字节,连接的有效带宽是8216/RTTbps。例如9000公里干线,光速来回时间是60ms,TCP连接有效带宽是8216/(6010-3)8.7Mbps。TCP的小窗口对于又宽又长的链路是很大浪费。TCP的累计确认和后退N重传对又宽又长的链路尤其糟糕。,TCP协议的扩充新选项,窗口比例因子选项:如下图。设TCP片头中的窗口值W(216),窗口比例因子rcv.scaleS,则表示允许的实际窗口值是W2S。2的指数运算可通过二进制数移位操作实现。窗口比例因子选项在SYN片发送,rcv.scale最大值为14。,类3,长度3,rcv.scale,TCP协议的扩充新选项(续),负确认选项 NAK(Negative AcKnowledgement):如下图。要求发送方只重发指定的数据片。其中“序号”表示未收到的第1字节序号,“未收到片数”按TCP的最大数据片长度MSS为单位计算。,类A,未收到片数,长度7,序 号,用户数据报协议UDP,UDP提供进程之间的数据报传输服务,无连接、不保证可靠。UDP数据报格式:,UDP源端口号,UDP目标端口号,UDP数据报长度,UDP校验和,数据,用户数据报协议UDP(续),端口1,端口2,端口3,UDP:基于端口的分路,IP,用户数据报协议UDP(续),UDP端口号标识应用进程。统一分配少量周知端口给标准的互联网应用;其余动态分配,用毕释放。UDP校验和可选:为0表示不计算校验和;若计算校验和则类似TCP要加伪报头,对整体进行计算。伪报头只为计算校验和用,它包括源主机和目标主机IP地址,从IP报头提取。为什么Internet上实时视频、音频信息的传输是采用UDP,而不是TCP?,用户数据报协议UDP(续),网络上的实时视频、音频信息的特点是数据量大,冗余度大,可容忍一定的差错率和少量的丢失,但不能容忍TCP的重传时延,所以网上实时视频、音频信息是用UDP数据报传输的。UDP不保证可靠,对实时多媒体应用,需要解决UDP数据报的重复和错序问题。IETF的音频-视频工作组在UDP之上开发了实时传输协议RTP,将UDP数据报封装在RTP包中传输。RTP包头带有时间戳和序号,可解决包的重复、错序问题。,拥塞控制的进一步研究,路由器参与拥塞管理-TCP拥塞控制机制的问题,正确实现否?-传统路由器的包队列管理技术。-主动队列管理算法如 RED(Random Early Detection)的研究。基于UDP的实时音频、视频流的拥塞控制机制的研究。,