版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章
传输层协议及分析1/9/20231第六章
传输层协议及分析1/9/20231重点和难点重点传输层的功能TCP协议和UDP协议难点TCP协议的理解1/9/20232重点和难点重点1/9/20232OSI体系结构中的传输层Internet体系中的传输层1/9/20233OSI体系结构中的传输层1/9/202336.1OSI体系结构中的传输层传输层位于开放系统互连模型中的第四层。是衔接由物理层、数据链路层及网路层构成的通信子网和包含会话层、表示层及应用层的资源子网的桥梁,起到承上启下的作用。传输层对高层用户起到了屏蔽作用,使高层用户的同等实体在交互过程中不会受到下层数据通信技术细节的影响。1/9/202346.1OSI体系结构中的传输层传输层位于开放系统互连模传输层与其上下层之间的关系的OSI表示法
传输实体传输实体传输协议传输层层接口传输服务用户(应用层实体)传输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B传输层服务访问点TSAP网络层服务访问点NSAP1/9/20235传输层与其上下层之间的关系的OSI表示法传输实体传输实体从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功能网络功能6.1OSI体系结构中的传输层1/9/20236从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务传输层为相互通信的应用进程提供了逻辑通信
54321传输层提供应用进程间的逻辑通信应用进程应用进程IP层AP1AP2AP4端口端口54321AP3主机A主机B路由器1路由器2AP1LAN2WANAP2AP3AP4LAN1IP协议的作用范围传输层协议TCP和UDP的作用范围1/9/20237传输层为相互通信的应用进程提供了逻辑通信5传输层提供应用进应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。传输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到传输层,再往下就共用网络层提供的服务。传输层提供应用进程间的逻辑通信,这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据。但事实上这两个传输层之间并没有一条水平方向的物理连接。1/9/20238应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用端口的概念端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。1/9/20239端口的概念端口就是运输层服务访问点TSAP。1/9/202端口在进程之间的通信中所起的作用应用层传输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方1/9/202310端口在进程之间的通信中所起的作用应传网TCP报文段UDP端口端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。1/9/202311端口端口用一个16bit端口号进行标志。1/9/20两类端口一类是熟知端口,其数值一般为0~1023,保留给诸如HTTP(80)、FTP(21)等熟知协议的。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。1/9/202312两类端口一类是熟知端口,其数值一般为0~1023,保留给插口(socket)TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP地址的关系是:IP地址3端口号15003,1500插口(socket)1/9/202313插口(socket)TCP使用“连接”(而不仅仅是“端口6.2Internet体系中的传输层在Internet网络上,传输层有两个并列的协议,一个是TCP,一个是UDP。TCP即传输控制协议,它是面向连接的,可提供高可靠的服务。UDP即用户数据报协议,它是面向无连接的,可提供高效率的服务。1/9/2023146.2Internet体系中的传输层在Internet网络传输层向上提供可靠的和不可靠的逻辑通信信道?应用层传输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程1/9/202315传输层向上提供可靠的和不可靠的逻辑通信信道?应传发接接数据6.2.1TCP协议TCP的主要功能完成对数据报的确认、流量控制和网络拥塞的处理。数据报自动检测、提供错误自动重发功能。将多条路径传送的数据报按照原序排列,并对重复数据进行择取。控制超时重发、自动调整超时值。提供自动恢复丢失数据的功能1/9/2023166.2.1TCP协议TCP的主要功能1/9/202316TCP的数据传送过程TCP是一种面向数据流的协议,操作过程分为三个阶段:建立TCP连接、传送数据和结束TCP连接。应用层传输层网络层网络接口层Ethernet用户报文TCP数据报IP数据报以太帧用户数据用户数据数据FTPH数据TCPHIPHTCPHTCPHIPH以太帧头FTPH数据FTPH数据FTPH数据TCP的报文传送目的地址源地址帧头包类型包数据CRC校验1/9/202317TCP的数据传送过程应用层传输层网络层网络接口层Ether18
TCP数据报的格式20字节的固定首部TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充1/9/20231818TCP数据报的格式20字节的TCP目的端19TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
TCP数据报的格式1/9/20231919TCP目的端口首部检验和选20TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节在整个报文字节流中的序号。
TCP数据报的格式1/9/20232020TCP目的端口首部检验和选21TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
TCP数据报的格式1/9/20232121TCP目的端口首部检验和选TCP的数据编号与确认
TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。1/9/202322TCP的数据编号与确认TCP协议是面向字节的。TCP将TCP序列号和确认序列号示例主机A主机BSeq=42,ACK=79,data=‘C’Seq=79,ACK=43,data=‘C’Seq=43,ACK=80用户键入‘C’主机确认收到回显的‘C’主机确认收到’C’,回显’C’时间
TCP数据报的格式1/9/202323TCP序列号和确认序列号示例主机A主机BSeq=43.5面向连接的传输:TCP—报文格式TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充首部长度——占4bit,它指示以32bit为单位的TCP首部长度。1/9/2023243.5面向连接的传输:TCP—报文格式TCP目的TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留为今后使用,但目前应置为0。3.5面向连接的传输:TCP—报文格式1/9/202325TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充紧急比特URG——当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。(一般不使用)3.5面向连接的传输:TCP—报文格式1/9/202326TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充确认比特ACK——只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。3.5面向连接的传输:TCP—报文格式1/9/202327TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。3.5面向连接的传输:TCP—报文格式1/9/202328TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充复位比特RST(ReSeT)——当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。3.5面向连接的传输:TCP—报文格式1/9/202329TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。3.5面向连接的传输:TCP—报文格式1/9/202330TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充终止比特FIN(FINal)——用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。3.5面向连接的传输:TCP—报文格式1/9/202331TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充窗口字段——占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。3.5面向连接的传输:TCP—报文格式1/9/202332TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部(源IP地址(4字节)、目的IP地址(4字节)、0(1字节)、6(TCP协议号,1字节)、TCP长度(2字节)
)。3.5面向连接的传输:TCP—报文格式1/9/202333TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
3.5面向连接的传输:TCP—报文格式1/9/202334TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充选项字段——长度可变。定义了最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”此外还定义了时间戳选项。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。1/9/202335TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充填充字段——这是为了使整个首部长度是4字节的整数倍。3.5面向连接的传输:TCP—报文格式1/9/202336TCP目的端口首部检验和选项TCP的流量控制TCP流量控制背景TCP接收方有一个缓存,所有上交的数据全部缓存在里面应用进程从缓冲区中读取数据可能很慢目标发送方不会由于传得太多太快而使得接收方缓存溢出手段接收方在反馈时,将缓冲区剩余空间的大小填充在报文段首部的窗口字段中,通知发送方1/9/202337TCP的流量控制TCP流量控制1/9/202337窗口值的计算空闲空间缓存中的TCP数据RcvWindow来自IP的数据应用进程RcvBufferLastByteRcvd–LastByteRead≤RcvBuffer接收方:RcvWindows=RcvBuffer–[LastByteRcvd-LastByteRead]发送方:LastByteSent–LastByteAcked≤RcvWindow接收端窗口rwnd和拥塞窗口cwnd1/9/202338窗口值的计算空闲空间缓存中的RcvWindow来自IP的数据Monday,January9,2023393.5面向连接的传输:TCP一种特殊的情况接收方通知发送方RcvWindow为0,且接收方无任何数据传送给发送方发送方持续向接受方发送只有一个字节数据的报文段,目的是试探1/9/202339Monday,January9,2023393.5面收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。1/9/202340收到确认即可前移1002003004005006007008发送端已发送了400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。现在发送端还可发送300字节。收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移已发送并被确认已发送但未被确认1/9/202341发送端已发送了400字节的数据,但只收到对前200字发送端收到了对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。现在发送端最多还可发送400字节的数据。1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小1/9/202342发送端收到了对方对前400字节数据的确认,但对方通知发送利用可变窗口大小进行流量控制
双方确定的窗口值是400SEQ=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至700)不允许A再发送(到序号600的数据都已收到)SEQ=201丢失!1/9/202343利用可变窗口大小进行流量控制
双方确定的窗口值是400SMonday,January9,202344TCP的拥塞控制TCP进行拥塞控制的方法每个发送方自动感知网络拥塞的程度发送方根据感知的结果限制外发的流量如果前方路径上出现了拥塞,则降低发送速率如果前方路径上没有出现拥塞,则增加发送速率1/9/202344Monday,January9,202344TCP的拥45TCP拥塞控制TCP拥塞控制需要解决的三个问题TCP发送方如何限制外发流量的速率发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。
LastByteSent-LastByteAckedmin{CongWin,RcvWindow}发送方如何感知拥塞超时三个冗余ACK在感知到拥塞后,发送方如何调节发送速率rate=
CongWin
RTT
Bytes/sec1/9/20234545TCP拥塞控制TCP拥塞控制需要解决的三个问题rate46TCP拥塞控制TCP拥塞控制算法(Reno算法)加性增,乘性减(AIMD)出现丢包事件后将当前CongWin大小减半,可以大大减少注入到网络中的分组数当没有丢包事件发生,每个RTT之后将CongWin增大1个MSS使拥塞窗口缓慢增大,以防止网络过早出现拥塞拥塞窗口时间1/9/20234646TCP拥塞控制TCP拥塞控制算法(Reno算法)拥塞窗口Monday,January9,202347TCP拥塞控制慢启动建立连接时,CongWin=1MSS例如:MSS=500bytes&RTT=200msec初始速率=20kbps可用带宽>>MSS/RTT初始阶段以指数的速度增加发送速率连接初始阶段,以指数的速度增加发送速率,直到发生一个丢包事件为止每过一个RTT将CongWin的值翻倍每收到一个ACK就增加Congwin总结:初始速率很低但速率的增长速度很快1/9/202347Monday,January9,202347TCP拥塞Monday,January9,202348TCP拥塞控制慢启动主机A1个报文段RTT主机B时间两个报文段四个报文段1/9/202348Monday,January9,202348TCP拥塞Monday,January9,202349TCP拥塞控制对超时事件的反应门限值设为当前CongWin的一半(门限值初始值65kB)将CongWin设为1个MSS大小;窗口以指数速度增大窗口增大到门限值之后,再以线性速度增大对收到3个重复ACK的反应将CongWin减为原来的一半线性增大拥塞窗口特别说明:早期的TCPTahoe版本对上述两个事件并不区分,统一将CongWin降为1。实际上,3个重复的ACK相对超时来说是一个预警信号,因此在Reno版中作了区分1/9/202349Monday,January9,202349TCP拥塞乘法减小
(multiplicativedecrease)
“乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。1/9/202350乘法减小
(multiplicativedecrease)加法增大
(additiveincrease)
“加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。1/9/202351加法增大
(additiveincrease)“加法增大强调说明
“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。1/9/202352强调说明“拥塞避免”并非指完全能够避免了拥塞。利用以上的措慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ssthresh=16。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202353慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时慢开始和拥塞避免算法的实现举例发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202354慢开始和拥塞避免算法的实现举例发送端的发送窗口不能超过拥塞慢开始和拥塞避免算法的实现举例在执行慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。
246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202355慢开始和拥塞避免算法的实现举例在执行慢开始算法时,拥塞窗口慢开始和拥塞避免算法的实现举例246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端可以接着发送M1和M2两个报文段。1/9/202356慢开始和拥塞避免算法的实现举例24681012141618慢开始和拥塞避免算法的实现举例接收端发回ACK2和ACK3。发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加1。现在发送端的cwnd从2增大到4,并可发送M3~M6共4个报文段。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202357慢开始和拥塞避免算法的实现举例接收端发回ACK2和A慢开始和拥塞避免算法的实现举例发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输次数按指数规律增长。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202358慢开始和拥塞避免算法的实现举例发送端每收到一个对新报文段的慢开始和拥塞避免算法的实现举例当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长ssthresh=16慢开始慢开始线性规律增长拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202359慢开始和拥塞避免算法的实现举例当拥塞窗口cwnd增长到慢开始和拥塞避免算法的实现举例假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202360慢开始和拥塞避免算法的实现举例假定拥塞窗口的数值增长到2慢开始和拥塞避免算法的实现举例更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202361慢开始和拥塞避免算法的实现举例更新后的ssthresh慢开始和拥塞避免算法的实现举例当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞避免发生超时指数规律增长线性规律增长ssthresh=16慢开始慢开始拥塞避免拥塞避免更新后的ssthresh=12进入拥塞避免1/9/202362慢开始和拥塞避免算法的实现举例当cwnd=12时改3.快重传和快恢复快速重传超时周期往往太长增加重发丢失分组的延时通过重复的ACK检测丢失报文段发送方常要连续发送大量报文段如果一个报文段丢失,会引起很多连续的重复ACK.如果发送收到一个数据的3个重复的ACK,它会认为确认数据之后的报文段丢失快速重传:
在超时到来之前重传报文段1/9/2023633.快重传和快恢复快速重传1/9/202363快重传举例M1,M2ACK2,ACK3M4主机A主机BB确认M1
和
M2A发送M1和M2A收到了三个重复的确认ACK3,就立即重传M3,而不必等待超时重传。M3丢失!A发送M3但丢失了A发送M4ACK3M5A发送M5ACK3B发送第二个重复确认
ACK3M6A发送M6ACK3M3B发送第三个重复确认
ACK3B只能再次确认
M2(因为M3没有收到)1/9/202364快重传举例M1,M2ACK2,ACK3M4主机A主机快恢复算法(1)当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresh。(2)与慢开始不同之处是拥塞窗口cwnd不是设置为1,而是设置为ssthresh+3MSS。(3)若收到的重复的ACK为n个(n>3),则将cwnd设置为ssthresh+n
MSS。(4)若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。(5)若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh。1/9/202365快恢复算法(1)当发送端收到连续三个重复的ACK时,TCP的重传机制重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。1/9/202366TCP的重传机制重传机制是TCP中最重要和最复杂的问题67TCP超时的设置如何设置TCP的超时应该大于RTT但RTT是变化的太短:造成不必要的重传太长:对丢包反应太慢TCP的重传机制1/9/20236767TCP超时的设置TCP的重传机制1/9/20236768如何估算RTT样本RTT(SampleRTT):对报文段从发出到收到该报文段的确认之间的时间进行测量忽略重传样本RTT会有波动,要使得估算RTT更平滑,需要将最近几次的测量进行平均,而非仅仅采用最近一次的SampleRTTEstimatedRTT=(1-)*EstimatedRTT+*SampleRTT参考值:=0.125TCP的重传机制1/9/20236868如何估算RTTEstimatedRTT=(1-往返时延RTT?往返时间的测量相当复杂
TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?发送一个TCP报文段超时重传TCP报文段收到ACK时间12往返时延RTT?是对哪一个报文段的确认?1/9/202369往返时延RTT?往返时间的测量相当复杂TCP报文段170RTT估计样本与RTT估计TCP的重传机制1/9/20237070RTT估计样本与RTT估计TCP的重传机制1/9/2071考虑RTT的波动,估计EstimatedRTT与SampleRTT的偏差DevRTT=(1-)*DevRTT+
*|SampleRTT-EstimatedRTT|(参考值,=0.25)TimeoutInterval=EstimatedRTT+4*DevRTTTCP中的超时间隔为TCP的重传机制1/9/20237171考虑RTT的波动,估计EstimatedRTT与SampTCP的连接管理-运输连接的三个阶段
运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
1/9/202372TCP的连接管理-运输连接的三个阶段运输连接就有三个阶段,客户/服务器方式
TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。1/9/202373客户/服务器方式TCP的连接和建立都是采用客户服务器方式用三次握手建立TCP连接SYN,SEQ=x主机BSYN,ACK,SEQ=y,ACK=x1ACK,SEQ=x+1,ACK=y1被动打开主动打开确认确认主机A连接请求1/9/202374用三次握手建立TCP连接SYN,SEQ=x主机建立TCP连接A的TCP向B发出连接请求报文段,其首部中的同步比特SYN应置为1,并选择序号x,表明传送数据时的第一个数据字节的序号是x+1。B的TCP收到连接请求报文段后,如同意,则发回确认。B在确认报文段中应将SYN置为1,其确认号应为x1,同时也为自己选择序号y。A收到此报文段后,向B给出确认,其确认号应为y1。A的TCP通知上层应用进程,连接已经建立。当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。1/9/202375建立TCP连接A的TCP向B发出连接请求报文段TCP连接释放的过程
FIN,SEQ=xACK,SEQ=y,ACK=x1ACK,SEQ=x+1,ACK=y1应用进程释放连接A不再发送报文FIN,ACK,SEQ=y,ACK=x+1主机B主机A通知主机应用进程①应用进程释放连接B不再发送报文②确认确认1/9/202376TCP连接释放的过程FIN,SEQ=xACK,SMonday,January9,2023776.2.2UDP协议一个最简单的运输层协议多路复用/多路分解服务差错检查适应C/S模式的简单请求/响应通信需要UDP保留各报文间的边界,不把应用进程多次发送的数据合并成一个包发出去,且发包后不对该包缓存,这对简单请求/响应很方便;“尽力而为”服务,UDP报文段可能会:丢失应用数据不按序到达1/9/202377Monday,January9,2023776.2.2Monday,January9,202378UDP处理数据的流程发送方从应用进程得到数据附加上为多路复用/多路分解所需的源和目的端口号及差错检测信息,形成报文段(数据报)递交给网络层,尽力而为的交付给接收主机接收方从网络层接收报文段(数据报)根据目的端口号,将数据交付给相应的应用进程UDP通信事先无需握手,是无连接的UDP报文段之间是相互独立的6.2.2UDP协议1/9/202378Monday,January9,202378UDP处理Monday,January9,202379UDP报文段的结构源端口#目的端口#32位应用数据(报文)长度检查和包括首部在内的UDP报文段长度,(以字节为单位)6.2.2UDP协议整个报文的校验和。1/9/202379Monday,January9,202379UDP报文Monday,January9,202380UDP的优势无需建立连接——建立连接会增加时延简单——发送方和接收方无需维护连接状态段首部开销小——TCP:20BytevsUDP:8Byte无拥塞控制——UDP可按需要随时发送6.2.2UDP协议1/9/202380Monday,January9,202380UDP的优Monday,January9,202381部分采用UDP协议的应用远程文件系统(NFS)流式多媒体因特网电话网络管理(SNMP)选路协议(RIP)域名解析(DNS)6.2.2UDP协议1/9/202381Monday,January9,202381部分采用U82UDP大量应用可能导致的严重后果路由器中大量的分组溢出显著减小TCP通信的速率,甚至挤垮TCP会话使用UDP的可靠数据传输在应用层实现数据的可靠传输增加了应用进程的实现难度6.2.2UDP协议1/9/20238282UDP大量应用可能导致的严重后果6.2.2UDP协议第六章
传输层协议及分析1/9/202383第六章
传输层协议及分析1/9/20231重点和难点重点传输层的功能TCP协议和UDP协议难点TCP协议的理解1/9/202384重点和难点重点1/9/20232OSI体系结构中的传输层Internet体系中的传输层1/9/202385OSI体系结构中的传输层1/9/202336.1OSI体系结构中的传输层传输层位于开放系统互连模型中的第四层。是衔接由物理层、数据链路层及网路层构成的通信子网和包含会话层、表示层及应用层的资源子网的桥梁,起到承上启下的作用。传输层对高层用户起到了屏蔽作用,使高层用户的同等实体在交互过程中不会受到下层数据通信技术细节的影响。1/9/2023866.1OSI体系结构中的传输层传输层位于开放系统互连模传输层与其上下层之间的关系的OSI表示法
传输实体传输实体传输协议传输层层接口传输服务用户(应用层实体)传输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B传输层服务访问点TSAP网络层服务访问点NSAP1/9/202387传输层与其上下层之间的关系的OSI表示法传输实体传输实体从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功能网络功能6.1OSI体系结构中的传输层1/9/202388从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务传输层为相互通信的应用进程提供了逻辑通信
54321传输层提供应用进程间的逻辑通信应用进程应用进程IP层AP1AP2AP4端口端口54321AP3主机A主机B路由器1路由器2AP1LAN2WANAP2AP3AP4LAN1IP协议的作用范围传输层协议TCP和UDP的作用范围1/9/202389传输层为相互通信的应用进程提供了逻辑通信5传输层提供应用进应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。传输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到传输层,再往下就共用网络层提供的服务。传输层提供应用进程间的逻辑通信,这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据。但事实上这两个传输层之间并没有一条水平方向的物理连接。1/9/202390应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用端口的概念端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。1/9/202391端口的概念端口就是运输层服务访问点TSAP。1/9/202端口在进程之间的通信中所起的作用应用层传输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方1/9/202392端口在进程之间的通信中所起的作用应传网TCP报文段UDP端口端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。1/9/202393端口端口用一个16bit端口号进行标志。1/9/20两类端口一类是熟知端口,其数值一般为0~1023,保留给诸如HTTP(80)、FTP(21)等熟知协议的。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。1/9/202394两类端口一类是熟知端口,其数值一般为0~1023,保留给插口(socket)TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP地址的关系是:IP地址3端口号15003,1500插口(socket)1/9/202395插口(socket)TCP使用“连接”(而不仅仅是“端口6.2Internet体系中的传输层在Internet网络上,传输层有两个并列的协议,一个是TCP,一个是UDP。TCP即传输控制协议,它是面向连接的,可提供高可靠的服务。UDP即用户数据报协议,它是面向无连接的,可提供高效率的服务。1/9/2023966.2Internet体系中的传输层在Internet网络传输层向上提供可靠的和不可靠的逻辑通信信道?应用层传输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程1/9/202397传输层向上提供可靠的和不可靠的逻辑通信信道?应传发接接数据6.2.1TCP协议TCP的主要功能完成对数据报的确认、流量控制和网络拥塞的处理。数据报自动检测、提供错误自动重发功能。将多条路径传送的数据报按照原序排列,并对重复数据进行择取。控制超时重发、自动调整超时值。提供自动恢复丢失数据的功能1/9/2023986.2.1TCP协议TCP的主要功能1/9/202316TCP的数据传送过程TCP是一种面向数据流的协议,操作过程分为三个阶段:建立TCP连接、传送数据和结束TCP连接。应用层传输层网络层网络接口层Ethernet用户报文TCP数据报IP数据报以太帧用户数据用户数据数据FTPH数据TCPHIPHTCPHTCPHIPH以太帧头FTPH数据FTPH数据FTPH数据TCP的报文传送目的地址源地址帧头包类型包数据CRC校验1/9/202399TCP的数据传送过程应用层传输层网络层网络接口层Ether100
TCP数据报的格式20字节的固定首部TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充1/9/202310018TCP数据报的格式20字节的TCP目的端101TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
TCP数据报的格式1/9/202310119TCP目的端口首部检验和选102TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节在整个报文字节流中的序号。
TCP数据报的格式1/9/202310220TCP目的端口首部检验和选103TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
TCP数据报的格式1/9/202310321TCP目的端口首部检验和选TCP的数据编号与确认
TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。1/9/2023104TCP的数据编号与确认TCP协议是面向字节的。TCP将TCP序列号和确认序列号示例主机A主机BSeq=42,ACK=79,data=‘C’Seq=79,ACK=43,data=‘C’Seq=43,ACK=80用户键入‘C’主机确认收到回显的‘C’主机确认收到’C’,回显’C’时间
TCP数据报的格式1/9/2023105TCP序列号和确认序列号示例主机A主机BSeq=43.5面向连接的传输:TCP—报文格式TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充首部长度——占4bit,它指示以32bit为单位的TCP首部长度。1/9/20231063.5面向连接的传输:TCP—报文格式TCP目的TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留为今后使用,但目前应置为0。3.5面向连接的传输:TCP—报文格式1/9/2023107TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充紧急比特URG——当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。(一般不使用)3.5面向连接的传输:TCP—报文格式1/9/2023108TCP目的端口首部检验和选项TCP首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保安部个人工作总结
- 中学竞选班长演讲稿
- 中外名著《培根随笔》读后感
- 模板幼师课件教学课件
- 松鼠儿童课件教学课件
- 机动车检验 零气源技术要求及测试方法 征求意见稿
- 绵绵土课件教学课件
- 2024浙江杭州市上城区望江街道社区卫生服务中心编外招聘1人笔试备考题库及答案解析
- 2025年高考语文复习知识清单第2章文学类文本阅读(一)小说专题06探究主旨、标题、作者意图(学生版+解析)
- 标养室和试件管理制度 附表-标准养护室温度、相对湿度测量记录表
- 一年级家长进课堂电的知识(课堂PPT)
- 《大梦想家》歌词--TFBOYS
- 厦门岛生活垃圾处置现状与未来工作展望
- 完整版用PLCs7-200实现接触器互锁的电动机正反转控制电路的编程安装与接线文档良心出品
- 《我运动、我参与、我快乐、我健康》主题班会课件.ppt
- 医疗学术会议工作人员分工明细表
- 事业单位出纳工作常见问题及对策
- 《电子政务项目运行维护经费指导意见》-深圳政府在线
- 阴道镜培训(课堂PPT)
- 《爬山虎的脚》教学课件
- 人教版英语选择性必修第四册UNIT 4 Sharing中英文对照
评论
0/150
提交评论