计算机网络课件第7章-传输层-

PPT
  • 阅读 63 次
  • 下载 0 次
  • 页数 87 页
  • 大小 839.012 KB
  • 2022-12-01 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
计算机网络课件第7章-传输层-
可在后台配置第一页与第二页中间广告代码
计算机网络课件第7章-传输层-
可在后台配置第二页与第三页中间广告代码
计算机网络课件第7章-传输层-
可在后台配置第三页与第四页中间广告代码
计算机网络课件第7章-传输层-
计算机网络课件第7章-传输层-
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 87
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】计算机网络课件第7章-传输层-.ppt,共(87)页,839.012 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-77002.html

以下为本文档部分文字说明:

计算机网络ComputerNetwork2022年12月1日2/87计算机网络--刘桂江课程目录第1章概述第2章物理层与数据通信基础第3章数据链路层第4章局域网第5章网络层第6章网络互联技术第7章传输层第8章

应用层第9章网络管理与信息安全第10章网络新技术专题3/87计算机网络--刘桂江本章提纲第7章传输层7.1传输层概述7.2互联网传输协议4/87计算机网络--刘桂江7.1传输层概述7.1.1提供给高层的服务7.1.2服

务质量7.1.3多路复用技术5/87计算机网络--刘桂江传输实体传输实体传输协议传输层层接口传输服务用户(应用层实体)传输服务用户(应用层实体)层接口网络层应用层主机A主机B传输层服务访问点TSAP网络层服务访问

点NSAP传输层与其上下层之间的关系7.1.1提供给高层的服务•传输层向高层提供两种类型的服务:面向连接的传输服务和无连接的传输服务。完成传输层功能的硬件或软件6/87计算机网络--刘桂江7.1.2服务质量传输层服务质量是指在传输两节点之

间看到的某些传输连接的特征,是传输层性能的度量,反映了传输质量及服务的可用性。传输层服务质量参数表传输层服务质量不是由单方面决定的,一般它需要连接的双方有一个协商的过程。连接建立延迟连接建立失败概率吞吐量传输延迟残留差错率保护性优先权回弹率7/87计算机网络--刘桂江应用层网

络层至路由器TSAPNSAP应用层网络层至路由器传输层传输层(a)向上多路复用(b)向下多路复用7.1.3多路复用技术向上复用的使用往往是出于费用上的考虑;向下复用的目的是为了提高吞吐量。8/87计算机网络--刘桂江7.2互联网传输协

议7.2.1TCP简介7.2.2TCP服务模型7.2.3TCP协议7.2.4TCP报文段头7.2.5TCP连接管理7.2.6TCP传输策略7.2.7TCP流量控制和拥塞控制7.2.8TCP计时器7.2.9UDP协议简介9/87计算机网络--刘桂江T

CP(传输控制协议)是TCP/IP体系中面向连接的传输层协议,它提供全双工的服务。TCP提供差错控制和排序的功能,提供可靠的端到端字节流的传输服务。7.2.1TCP简介10/87计算机网络--刘桂江TCP是使用连接来进行通信的。当一个应用

进程希望与另一个远程的应用进程建立连接的时候,除了要知道对方的主机地址外,它还必须知道要连接到对方哪个应用进程上,从而实现端到端的通信。7.2.2TCP服务模型(1/5)传输层提供端到端的服务54321传输层提供应用进程间的逻辑通

信应用进程应用进程IP层AP1AP2AP4端口端口54321AP311/87计算机网络--刘桂江在传输层上通常使用的方法是为那些能够监听连接请求的进程定义TSAP;在Internet中,这些访问点就被称为端口。同样,在网络层上的

访问点被称为NSAP。IP地址就是NSAP的特例。NSAP、TSAP和传输连接之间的关系7.2.2TCP服务模型(2/5)12/87计算机网络--刘桂江客户机上的应用进程如何知道服务器上的服务器进程是被关联到某个特定端口

上的呢?常用的方法有两种:(1)对于一些少数且关键的服务器进程(例如Web服务器),它们被连接请求的频率高,而且一旦连接上以后维持的时间一般也比较长,则将这些典型服务器进程与熟知的TSAP永久地关联起来。且这些关键服务进程和对

应的熟知TSAP往往被罗列在某个文件中。(2)采用名字服务器或目录服务器。7.2.2TCP服务模型(3/5)13/87计算机网络--刘桂江7.2.2TCP服务模型(4/5)为了区分不同主机中的进程,TCP/IP协议簇将主机的IP地址与端口结

合起来,定义为通信的一个端点,称之为套接字。套接字、端口和IP地址的关系是:套接字(socket)IP地址128.10.2.3端口号25128.10.2.325套接字(16位)14/87计算机网络--刘桂江(1)熟知端口,其数值为0

~1023。这一类端口由ICANN负责分配给一些常用的应用层程序固定使用。(2)登记端口,其数值为1024~49151。这类端口是ICANN控制的,使用这个范围的端口必须在ICANN登记,以防止重复。(3)动态端口,其数值为49152~65535。这

类端口是留给客户进程选择作为临时端口。7.2.2TCP服务模型(5/5)三类端口15/87计算机网络--刘桂江在TCP协议中需要关注的几个问题:(1)TCP连接上的每个字节都是有编号的,即都有它自己独有的32位序列号。(2)TCP报文段的结构(3)滑动窗口协议(4)错序问题7.2.3TCP协议1

6/87计算机网络--刘桂江一个TCP报文段分为首部和数据两部分。TCP首部由固定首部和可选的附加选项组成。TCP数据部分理论上长度最多可达65495个字节。无任何数据的TCP报文段也是合法的,它通常被用于确认或控制消息。TCP的全部功能都体现在它首部中

各字段的作用。7.2.4TCP报文段头17/87计算机网络--刘桂江TCP首部20字节的固定首部目的端口数据偏移检验和附加选项(长度可变)源端口序号紧急指针窗口大小确认序号保留FIN32bitSYNRSTPSHACKUR

G比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP报文段首部结构图18/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和附加选项(长度可变)源端口序号紧急指针窗口大小确认

序号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口——各占2个字节。端口是传输层与应用层的服务接口,它们分别与源IP地址和目的IP地址一起标识一个TCP连接的两个端点,传

输层的复用和分用功能都要通过端口才能实现。19/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4

字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。确认序号窗口大小附加选项(长度可变)20/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口

序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充确认序号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。确认序号窗口大小附加选项(长度可变)21/87计算机

网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充数据偏移——占4bit,它指出TCP报文段的数据起始处距

离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(即4字节为计算单位)。确认序号窗口大小附加选项(长度可变)22/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充

保留字段——占6bit,保留为今后使用,但目前都置为0。确认序号窗口大小附加选项(长度可变)23/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充紧急比特URG——紧急标

志位。当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。确认序号窗口大小附加选项(长度可变)24/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNR

STPSHACKURG比特08162431填充确认比特ACK——确认标志位。当ACK=1时表明报文段中确认序号字段有效,这时可以理解当前发送的报文段为确认报文;当ACK=0时表明确认序号字段无效。确认序号窗口大小附加选项(长度可变)25/87计算机网络--刘桂江TCP首部20字节

固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充推送PSH(Push)——接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。确认序号窗口大小

附加选项(长度可变)26/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充复位RST(Reset)——复位标志。当RST=1时表明TCP连接中出现严

重差错(例如主机崩溃),这时必须释放当前连接然后再重新建立一个新的传输连接。另外RST置1还可以用来拒绝接收一个非法报文段,或拒绝建立一个连接。确认序号窗口大小附加选项(长度可变)27/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNR

STPSHACKURG比特08162431填充同步SYN——建立连接标志。建立连接过程中,在客户端发出请求建立连接的报文段中:SYN=1,ACK=0;在服务器端表示接收建立连接的报文段中:SYN=1,AC

K=1;所以可用SYN来区分与建立连接有关的报文段,而用ACK进一步区分是连接请求还是连接接收。确认序号窗口大小附加选项(长度可变)28/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPS

HACKURG比特08162431填充终止FIN(Final)——释放连接标志。当FIN=1时表示此报文段的发送方的数据发送已经结束,并要求释放传输连接。注意这是个单方面请求释放连接,即仍然还允许对方发送数据过来。确认序号窗

口大小附加选项(长度可变)29/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充确认序号窗口大小附加选项(长度可变)窗

口大小字段——占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。30/87计算机网络--刘桂江TCP首部20字节固定首部目的端

口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。确认序号窗口大小附

加选项(长度可变)31/87计算机网络--刘桂江在计算检验和时,临时把“伪首部”和TCP报文段连接在一起,得到一个临时的TCP报文段。检验和就针对这个临时的TCP报文段来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。32bit源IP地址目的IP地址全

06TCP长度TCP报文段伪首部结构图32/87计算机网络--刘桂江在发送方,首先是把全零放入检验和字段,再把伪首部以及TCP报文段看成是由许多16位的字串接起来。若TCP报文段的数据部分长度不是4N(N为正整数)字节的整数倍,则

要填充全零字串在后面直至长度为4N字节。然后按二进制反码计算出这些16位字的和,将此和的二进制反码写入检验和字段后,发送该TCP报文段。在接收方,把收到的TCP报文段增加伪首部(以及可能的填充全零字节

)一起,按二进制反码计算出这些16位字的和。当无差错时其结果应为全1;否则就表明出现传输错误,接收方应丢弃这个错误的TCP报文段(当然也可以上交给应用层,但附上出现了差错的警告)。TCP计算检验和的具体方法:33/8

7计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中,紧急数据一共有多少个字节。它和紧急标志

位URG配合使用。确认序号窗口大小附加选项(长度可变)34/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填充附加选项字段——长度可变。TCP只规定了一种选项,即最大报文段长度MSS

(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”附加选项是可选的,如果主机没有使用这个选项,则缺省使用MSS的默认值是536。另

外,一个连接两个方向上的最大数据段长度MSS可以不相同。附加选项(长度可变)确认序号窗口大小35/87计算机网络--刘桂江TCP首部20字节固定首部目的端口数据偏移检验和源端口序号紧急指针保留FINSYNRSTPSHACKURG比特08162431填

充填充字段——这是为了使整个首部长度是4字节的整数倍。确认序号窗口大小附加选项(长度可变)36/87计算机网络--刘桂江TCP协议中使用三次握手方法建立连接。SYN=1,seq=x主机BSYN=1,ACK=1,seq=y,ack=x+1ACK=1,seq=x+1,a

ck=y1被动打开主动打开确认确认主机A连接请求时间时间7.2.5TCP连接管理(1/8)三次握手法1.建立TCP连接ACK=037/87计算机网络--刘桂江释放连接有两种方式:非对称释放和对称释放。(1)非对称释放7.2.5TCP连接管理(2/8)2.释放TCP连接该方法较为粗暴

,可能会导致数据丢失。主机B发送确认主机A连接建立时间时间DATA1ACK发送第一个数据发送第二个数据撤消连接在一方断开连接后不再接收数据,数据丢失DATA2主机B发送确认主机A连接建立时间时间DATA1ACK发送第一个数据发送第二个数据撤消连接DATA238/

87计算机网络--刘桂江(2)对称释放方法7.2.5TCP连接管理(3/8)FIN=1,seq=x主机BACK=1,seq=y,ack=x+1ACK=1,seq=x+1,ack=y2通知主机进程并发送确认发送确认主机A释放请求即A不再发送数据时间时

间半关闭状态FIN=1,seq=y+1,ack=x+1关闭状态释放请求即B也不再发送数据39/87计算机网络--刘桂江不过,对称释放协议并不总是可以正确地工作。它存在两军队问题。7.2.5TCP连接管理(4/8)两军队问

题用“断开连接”来代替军队的“发起进攻”。如果任何一方一定要在确定另一方已经做好了断开连接的准备之后才准备断开连接的话,那么,断开连接的操作将永远都不可能发生。40/87计算机网络--刘桂江建立连接和释放连接所要求的步骤可以用一个有限状态机来表达。该状态机有

11种状态,在每一种状态中,都存在一些合法的事件。当合法事件发生的时候,可能需要采取某个动作;当其他事件发生的时候,则报告一个错误。7.2.5TCP连接管理(5/8)*3.有限状态机41/87计算机网络--刘桂江状态

说明CLOSED没有活动的连接,或者未完成的连接LISTEN服务器正在等待进来的连接请求SYN_RCVD一个连接请求已经到达;等待ACKSYN_SENT应用程序已经开始打开连接ESTABLISHED正常的数据传输状态FIN_WAIT_1一方请

求释放连接FIN_WAIT_2另一方已经同意释放连接TIME_WAIT等待所有的分组逐渐消失CLOSING双方试图同时关闭连接CLOSE_WAIT另一方已经发起了释放连接的过程LAST_ACK等待所有的分组逐渐消失

7.2.5TCP连接管理(6/8)TCP有限状态机中存在的状态42/87计算机网络--刘桂江每个连接都从CLOSED状态开始。当它执行了一个被动的打开操作(LISTEN),或者一个主动的打开操作(CONNECT)的时候,它就离开CLOSED状态。如果另一端执行

了相对应的操作,则连接被建立起来,当前状态变成ESTABLISHED;连接的释放过程可以由任何一方发起,当释放完成的时候,状态又回到了CLOSED。7.2.5TCP连接管理(7/8)43/87计算机网络--刘桂江CLOSEDESTABLISHEDLISTENCLOSE_W

AITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主动打开被动打开被动关闭主动关闭被动打开主动打开发送SYN同时打开收到SYN,发送SYN,ACK收到ACK数据传送阶段关闭发

送FIN关闭发送FIN关闭发送FIN收到RST收到SYN发送SYN,ACK关闭或超时收到ACK收到SYN,ACK发送ACK收到ACK收到ACK收到FIN发送ACK收到FIN,ACK发送ACK收到FIN发送ACK同时关闭收到FIN发送ACK

发送SYN定时经过两倍报文段寿命后关闭TCP的有限状态机44/87计算机网络--刘桂江TCP协议是面向字节流的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的

首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP发送的确认报文段是对接收到的数据的最高序号表示确认。接收端返回的确认序号是已收到的数据的最高序号加1。也就是说,确认序号表示接收端期望下次收到的数据中的第一个数据字节的

序号。7.2.6TCP传输策略(1/5)45/87计算机网络--刘桂江在TCP发送一个报文段时,它同时也在自己的重传队列中存放一个副本,并启动一个计时器。若收到该报文段的确认,则删除此副本;若在计时器超时之前

没有收到确认,则重传此报文段的副本。TCP的确认并不保证数据已由应用层交付给了端用户,而只是表明在接收方的TCP收到了发送方所发送的报文段。TCP传输的可靠就是由于使用了序号和确认机制:7.2.6TC

P传输策略(2/5)46/87计算机网络--刘桂江在发送方,TCP一般是根据以下三种基本机制来控制报文段的发送时机。第一种机制是TCP维持一个变量,它等于接收方确认报文段中的最大报文长度MSS,这个数值给出了接收方的最大数据接收能力,因此只要发送方发送缓存从发送进程中

得到的数据已达到MSS字节时,就组装成一个TCP报文段,然后发送出去。第二种机制是当发送方的应用进程指明要求发送一个报文段时,即使用了TCP的推送(PUSH)操作,则TCP立即将这个报文段单独发送出去。第三种机制是当发送方的

一个计时器期限到了,这说明某一个已发送出去的报文段在规定时限之内没有收到确认,于是发送方就把该计时器所对应的报文段副本从重传队列中取出再次发送出去。7.2.6TCP传输策略(3/5)TCP的发送和确认机制47/87计算

机网络--刘桂江在接收方,当接收方的接收缓存已经装满数据,就会返回一个确认,并设置窗口(WIN)的值为0,这时发送方是不能够再正常地发送数据段了。但这里有两种意外情形允许发送方继续发送报文段。第一,紧急数据仍可以发送,例如要中

断远程机器上运行的某一个进程。第二,发送方可以发送一个1字节的数据段,要求接收方重申窗口大小及下一个准备接收的数据字节序号。这是避免当一个返回窗口信息的确认丢失之后发生死锁的情形。7.2.6TCP传输策略(4/5)48/87计算

机网络--刘桂江Nagle算法Clark算法(糊涂窗口综合症)Nagle算法和Clark算法针对糊涂窗口综合症的解决方案是相互补充的。Nagle算法试图解决由于发送方每次向TCP只传送一个字节而引起的问题;Clark算法则试图解决由于接收方每次从TCP流中只读取一个字节而引起的问题。这两种算

法都是有效的,而且可以一起工作。它们要达到的目标是:发送方不要发送太小的数据段,接收方也不要请求太小的数据段。7.2.6TCP传输策略(5/5)49/87计算机网络--刘桂江1.TCP流量控制TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节

。空闲缓冲区缓冲的TCP数据RecvWindowRecvBuffer网络来的数据用户进程7.2.7TCP流量控制和拥塞控制(1/14)50/87计算机网络--刘桂江在TCP报文段首部的窗口(WIN)字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接

建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。7.2.7TCP流量控制和拥塞控制(2/14)51/87计算机网络--刘桂江seq=1,DATAseq=1,DATAseq=201,DATAseq=201,

DATAseq=401,DATAseq=401,DATAseq=301,DATAseq=301,DATAseq=101,DATAseq=101,DATAseq=501,DATAseq=501,DATAACK=1,ack=2

01,win=300ACK=1,ack=201,win=300ACK=1,ack=601,win=0ACK=1,ack=601,win=0ACK=1,ack=501,win=200ACK=1,ack=501,win=200主机A主机B允许A再发送300字节(序号201

至500)A还能发送300字节A还能发送200字节(序号301至500)A还能发送400字节A还能发送100字节(序号401至500)A超时重发,但不能发送序号500以后的数据允许A再发送200字节(序号501至700)A还能发送1

00字节(序号501至700)不允许A再发送(到序号600的数据都已收到)seq=201,DATA丢失!seq=201,DATA丢失!设主机A和B的连接已经建立完毕,双方商定的初始窗口值是500。再设每一个报文段的数据字段的长度为100字节,数

据报文段序号的初始值为1。52/87计算机网络--刘桂江发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个TCP连接需要维护以下两个状态变量:接收窗口r

wnd(receiverwindow)又称为通知窗口(advertisedwindow)。拥塞窗口cwnd(congestionwindow)。2.TCP拥塞控制7.2.7TCP流量控制和拥塞控制(4/14)53/

87计算机网络--刘桂江(1)接收窗口rwnd这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。(2)拥塞窗口cwnd(congestionwindow)是发送端根据自

己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。7.2.7TCP流量控制和拥塞控制(5/14)54/87计算机网络--刘桂江发送端的发送窗口的上限值应当取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:发送窗口的上

限值Min(rwnd,cwnd)当rwnd<cwnd时,是接收端的接收能力限制发送窗口的最大值。当cwnd<rwnd时,则是网络的拥塞限制发送窗口的最大值。发送窗口的上限值7.2.7TCP流量控制和拥塞控制(6/14)55/87计算机网络--刘桂江为了在传输

层进行拥塞控制,1999年公布的互联网建议标准[RFC2581]定义了四种算法,即慢开始(slow-start)、拥塞避免(congestionavoidance)、快重传(fastretransmit)和快恢复(fa

strecovery)。7.2.7TCP流量控制和拥塞控制(7/14)56/87计算机网络--刘桂江在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增

加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。实际上,每一批被确认的报文段都会使拥塞窗口加倍。拥塞窗口一直呈指数增长,直至发生超时,或者达到接收窗口的大小。慢开始算法

的原理7.2.7TCP流量控制和拥塞控制(8/14)57/87计算机网络--刘桂江实际中慢开始算法往往还未出现超时就已停止使用,而改用拥塞避免算法。因此TCP连接还需要设置另一个状态参数,称之为慢开始门限ssthresh。它的用法如下

:当cwnd<ssthresh时,使用上述的慢开始算法;当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法;当cwnd=ssthresh时,或者使用慢开始算法,或者使用拥塞避免算法。7.2.7TCP流量控制和拥塞控制(9/14)58/87计算机网络--

刘桂江使发送方的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小(而不管在时间RTT内收到了几个ACK)。这样,拥塞窗口cwnd将是按线性规律缓慢增长,比慢开始算法中拥塞窗口的增长速率要缓慢的多了。拥塞避免算法的原理7.2.7TCP流量控制和拥塞

控制(10/14)59/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(1/10)当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ss

thresh=16。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthr

esh=12进入拥塞避免60/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(2/10)发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。24681012141618202

2004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免61/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(3/10)在执行

慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=

16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免62/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(4/10)246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免

发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端可以接着发送M1和M2两个报文段。63/87

计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(5/10)接收端发回ACK2和ACK3。发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加1。现在发送端的cwnd从2增大到4,并可发送M4~M6共4个报文段。246810121416182022004812162024传输次数拥

塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免64/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(6/10)发送端每收到一个对新报文

段的确认ACK,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输次数按指数规律增长。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthres

h=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免65/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(7/10)当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。24681012

1416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长ssthresh=16慢开始慢开始线性规律增长拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免66/87计

算机网络--刘桂江慢开始和拥塞避免算法的实现举例(8/10)假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生

超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免67/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(9/10)更新后的ssthresh值

变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=

16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免68/87计算机网络--刘桂江慢开始和拥塞避免算法的实现举例(10/10)当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每

经过一个往返时延就增加一个MSS的大小。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥

塞避免更新后的ssthresh=12进入拥塞避免69/87计算机网络--刘桂江“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,

使网络比较不容易出现拥塞。必须强调指出7.2.7TCP流量控制和拥塞控制(11/14)70/87计算机网络--刘桂江慢开始和拥塞避免算法是在TCP中最早使用的拥塞控制算法。但后来人们发现这种拥塞控制算法还需要改进,因为有时一条TCP连接会因为等待重传计时器的超时而空闲较长的时间。为

此后来又增加了两个新的拥塞控制算法,这就是快重传和快恢复。7.2.7TCP流量控制和拥塞控制(12/14)71/87计算机网络--刘桂江快重传算法规定,发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应立即重传丢失的报文

段而不必继续等待为该报文段设置的重传计时器的超时。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。快重传算法的原理7.2.7TCP流量控制和拥塞控制(13/14)72/87计算机网络--刘桂江快重传举例M1,

M2ACK2,ACK3M4主机A主机BB确认M1和M2A发送M1和M2A收到了三个重复的确认ACK3,就立即重传M3,而不必等待超时重传。M3丢失!A发送M3但丢失了A发送M4ACK3M5A发送M5ACK3B发送第二个重复

确认ACK3M6A发送M6ACK3M3B发送第三个重复确认ACK3B只能再次确认M2(因为M3没有收到)73/87计算机网络--刘桂江(1)当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresh。(2)与慢开始不同之处是拥塞窗口cw

nd不是设置为1,而是设置为ssthresh+3MSS。(3)若收到的重复的ACK为n个(n>3),则将cwnd设置为ssthresh+nMSS。(4)若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。(5)若收到了确认新的报

文段的ACK,就将cwnd缩小到ssthresh。7.2.7TCP流量控制和拥塞控制(14/14)快恢复算法的原理74/87计算机网络--刘桂江TCP使用多个定时器来辅助其完成工作,其中最重要的是重传定时器。当TCP实体每发送一个TCP报文段的时候,它同时也启动一个重传定时器

:如果在定时器超时之前该报文段被确认,则定时器被停止;否则重发该报文段,并重新启动定时器。7.2.8TCP计时器(1/8)75/87计算机网络--刘桂江7.2.8TCP计时器(2/8)由于TCP的下层是一个互连网环境,IP数据报所选择的路由变化很大

。因而传输层的往返时延的方差也很大。T1T2往返时延的概率分布往返时间T往返时延的概率分布往返时间数据链路层中往返时延的概率密度TCP中往返时延的概率密度76/87计算机网络--刘桂江记录每一个报文段

发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT。每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT:平均往

返时延RTT(旧的RTT)(1)(新的往返时延样本)在上式中,是修正因子,取值范围为:0≤<1。它决定RTT的历史值在计算中所占的比例,一般取=7/8。7.2.8TCP计时器(3/8)TCP采用了一

种自适应算法77/87计算机网络--刘桂江即使有了一个好的平均RTT值,要选择一个合适的超时重传时间间隔仍然不是一件很容易的事情。正常情况下,TCP使用β·RTT作为超时重传间隔,但难点在于如何选择β。在历史上最初的实现

中,总是取β为2,但经验表明常数值是不够灵活的,因为当发生变化时它不能够灵活地做出反应。7.2.8TCP计时器(4/8)78/87计算机网络--刘桂江在1988年,Jacobson提出来让β与确认到达时间概率密度函数的标准偏差成正比,即大的

变化意味着大的β,反之亦然。尤其是,他建议使用平均偏差作为标准偏差的粗略估计。在他的算法中要求TCP实体维护一个被平滑的偏差变量D,它为来回时间的测定值与估计值之间的偏差。当得到RTT的最新估计值之后,用以下公式修正变量D:D=α

D+(1-α)|RTT-M|最后按以下公式设置超时重传时间间隔:timeout=RTT+4×D7.2.8TCP计时器(5/8)Jacobson算法79/87计算机网络--刘桂江往返时延RTT?TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段A

CK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?发送一个TCP报文段超时重传TCP报文段收到ACK时间12往返时延RTT?是对哪一个报文段的确认?7.2.8TCP计时器(6/8)往返时间的确认二义性80/87计算机网络-

-刘桂江7.2.8TCP计时器(7/8)在计算平均往返时延RTT时,只要报文段重传了,就不采用其往返时延样本。这样得出的平均往返时延RTT和重传时间就较准确。Karn算法81/87计算机网络--刘桂江7.2.8TCP计

时器(8/8)报文段每重传一次,就将重传时间增大一些:新的重传时间(旧的重传时间)系数的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和重传时间的数值。实践证明,这种策略较为合理。修正的Karn算法82/87计算机网络--刘桂江7

.2.9UDP协议简介(1/6)UDP和TCP不同,它是一种无连接方式的、不可靠的传输协议,也就是说不需要连接建立和连接释放过程,没有流量控制、拥塞控制,UDP数据报在传输过程中可能会丢失,可能会失序,可

能会延迟等等。它是一个非常简单的传输层协议。UDP仅仅是在IP提供的服务基础上增添了多路复用和分用的功能。83/87计算机网络--刘桂江UDP的优点:UDP是无连接的,减少了开销和发送数据之前的

时延。UDP是尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制,因此主机上不需要维持具有许多参数的、复杂的连接状态表。由于UDP没有拥塞控制,因此网络出现的拥塞也不会使源主机的发送速率降低。这对某些实时应用是很重要的。UDP是面向报文的。也就是说,UDP对应用程序交下来的

报文不再划分成若干个分组来发送,也不会把收到的若干个报文合并后再交付给应用程序。UDP用户数据报的首部只有8个字节,比TCP报文段的首部至少是20个字节要短,大大减小了网络开销。7.2.9UDP协议简介(

2/6)84/87计算机网络--刘桂江UDP用户数据报的首部和伪首部伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据

报7.2.9UDP协议简介(3/6)85/87计算机网络--刘桂江伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组

成,每个字段都是两个字节。7.2.9UDP协议简介(4/6)86/87计算机网络--刘桂江伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报

连接在一起。伪首部仅仅是为了计算检验和。7.2.9UDP协议简介(5/6)87/87计算机网络--刘桂江计算UDP检验和的例子1001100100010011→153.1900001000011010

00→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→15000001000

0111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据01001001010

01110→数据0100011100000000→数据和0(填充)1001011011101011→求和得出的结果0110100100010100→检验和153.19.8.104171.3.14.1112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全017151

0871315全0数据数据数据数据数据数据数据全0

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?