第五章 传输层.ppt
第五章第五章 传输层传输层目录5.1 传输层功能5.2 传输层服务5.3 传输层寻址5.4 用户数据报协议UDP5.5 传输控制协议TCP5.6 工程实例计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.1 传输层功能l传输层提供了不同主机上应用程序进程之间的端到端的逻辑通信 l所谓“端到端”(end to end)通信,即发送端和接收端之间的通信 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.1 传输层功能传输层的主要功能有:(1)分割与重组数据:将应用层的消息分割成若干子消息并封装为报文段。(2)按端口号寻址:标识不同的应用进程,实现多个应用进程对同一个IP地址的复用。(3)连接管理:完成端到端通信链路的建立、维护和管理。(4)差错控制和流量控制 总之,传输层要向应用层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等现象。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.2 传输层服务l传输层主要提供两种服务n n一种是面向连接的服务,由一种是面向连接的服务,由TCPTCP协议实现,它是协议实现,它是一种可靠的服务;一种可靠的服务;n n一种是无连接的服务,由一种是无连接的服务,由UDPUDP协议实现,是一种协议实现,是一种的不可靠服务。的不可靠服务。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院面向连接的服务l过程分为三步:(1)建立连接;(2)数据传输;(3)释放连接。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院面向连接的服务l面向连接服务的特点(1 1)在服务进行之前必须建立一条逻辑链路后再进行数据)在服务进行之前必须建立一条逻辑链路后再进行数据传输,传输完毕后,再释放连接。在数据传输过程,好象传输,传输完毕后,再释放连接。在数据传输过程,好象一直占用了一条这样的逻辑链路。一直占用了一条这样的逻辑链路。(2 2)由于所有的报文都在这个管道内传送,因此报文是按)由于所有的报文都在这个管道内传送,因此报文是按序到达目的地的,即先发送的报文先到达。序到达目的地的,即先发送的报文先到达。(3 3)通过可靠传输机制保证报文传输的可靠性,报文不易)通过可靠传输机制保证报文传输的可靠性,报文不易丢失。丢失。(4 4)由于需要管理和维护连接,因此协议复杂,通信效率)由于需要管理和维护连接,因此协议复杂,通信效率不高。不高。l适合于对数据的传输可靠性非常高的场合,如文件传输、网页浏览、电子邮件等 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院无连接的服务l无连接的服务就是通信双方不需要事先建立一条通信线路 l把每个带有目的地址的报文分组送到网络上,由网络(如路由器)根据目的地址为分组选择一条恰当的路径传送到目的地计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院无连接服务l无连接服务的特点(1 1)数据传输之前不需要建立连接;)数据传输之前不需要建立连接;(2 2)每个分组都携带完整的目的节点地址,各分组在网络中是独立)每个分组都携带完整的目的节点地址,各分组在网络中是独立传送的;传送的;(3 3)分组的传递是失序的,即后发送的分组有可能先到达目的地;)分组的传递是失序的,即后发送的分组有可能先到达目的地;(4 4)可靠性差,容易出现报文丢失的现象,但是协议相对简单,通信)可靠性差,容易出现报文丢失的现象,但是协议相对简单,通信效率较高。效率较高。l无连接的UDP是网络层“尽最大努力投递”服务在传输层的进一步扩展,无法保证报文能否正确到达目的地 l适用于局域网或光纤通信;连续的大数据量的传输并能容忍一定程度的数据丢失的应用;多播应用计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.3 传输层端口l端口就是应用进程的地址,16bit正整数 l给应用进程分配一个传输层的地址目的是为了实现在传输层对同一个IP地址的多路复用与多路分解。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.3 传输层端口l现实例子:n n一栋写字楼中,有多个公司,每个公司都和外界一栋写字楼中,有多个公司,每个公司都和外界有信函联系,每个公司占据一层楼(或房间号)有信函联系,每个公司占据一层楼(或房间号)n n每个公司相当于应用层的进程每个公司相当于应用层的进程 n n楼层号(或房间号)是传输层的端口地址楼层号(或房间号)是传输层的端口地址 n n写字楼的地址则相当于网络层的写字楼的地址则相当于网络层的IPIP地址地址 n n公司都使用写字楼的地址和外界通信公司都使用写字楼的地址和外界通信n n外界的信件到达写字楼后,再由相关人员按照楼外界的信件到达写字楼后,再由相关人员按照楼层号或房间号投递到相应的公司层号或房间号投递到相应的公司 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.3 传输层端口l端口只具有本地意义,即端口号是为了标志本主机应用层中的各个进程,因此两个不同主机的应用进程可以使用相同的端口 l端口分为两类:熟知端口(0-1023)和一般端口 l常用的熟知端口有:计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.4用户数据报协议UDPlUDP概述lUDP的数据报格式lUDP的应用计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院UDP概述lUDP协议由RFC768定义,是无连接的,即通信双方并不需要建立连接,这种通信显然是不可靠的。但是由于UDP简单,数据传输速度快、开销小。lUDP的优势(1 1)无需建立连接和释放连接,从而减少了连接管理开销。)无需建立连接和释放连接,从而减少了连接管理开销。而无需建立连接也减少了发送数据之前的时延。而无需建立连接也减少了发送数据之前的时延。(2 2)UDPUDP数据报只有数据报只有8 8个字节的首部开销,比个字节的首部开销,比TCPTCP的的2020个个字节的首部要短得多。字节的首部要短得多。(3 3)由于)由于UDPUDP没有拥塞控制,因此没有拥塞控制,因此UDPUDP的传输速度很快,的传输速度很快,即使网络出现拥塞也不会降低发送速率。这对实时应用如即使网络出现拥塞也不会降低发送速率。这对实时应用如IPIP电话,视频点播等是非常重要的。电话,视频点播等是非常重要的。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院UDP应用实例l下图是一个典型的UDP应用例子DNS lDNS是将域名地址转换为IP地址的常见UDP应用,DNS使用UDP传送报文,但DNS服务器和DNS客户所使用的端口是不一样的。DNS服务器进程是一直在运行着,其熟知端口是53,在此端口上等待DNS请求的到来。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院UDP的数据报格式 l用户数据报UDP的报文格式由两部分构成:首部和数据 l各字段意义如下:(1)源端口:即本主机应用进程的端口号;(2)目的端口:目的主机应用进程的端口号;(3)长度:UDP用户数据报的长度;(4)检验和:用于检验UDP用户数据报在传输中是否出错 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院UDP校验和计算l在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。l伪首部并不是UDP用户数据报真正的首部,仅用于计算检验和,既不向下传送也不向上递交。lUDP计算机检验和的方法和计算IP数据报首部检验和的方法相似。但网络层只校验IP分组首部,不对数据进行校验。而UDP则是首部和数据一起检验 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院UDP的应用 l由于UDP无需建立、简单高效且开销小的的特点,因此得到了广泛的应用 l流式多媒体这类数据流量大而连续,且能容忍数据丢失的应用 l多播应用l如果既想利用UDP简单高效的特性,又想提供一定程度上的传输保障,则可以通过在应用层增加相应的可靠传输机制来完成。应用应用应用层协议应用层协议传输层协议传输层协议域名服务域名服务DNSUDP简单文件传输简单文件传输TFTPUDP路由信息协议路由信息协议RIPUDP动态主机配置动态主机配置DHCPUDP简单网管简单网管SNMPUDPIP电话电话专用协议专用协议UDP流媒体通信流媒体通信专用协议专用协议UDP多播组管理多播组管理IGMPUDP电子邮件发送电子邮件发送SMTPTCP远程登录远程登录TELNETTCPWeb浏览浏览HTTPTCP文件传输文件传输FTPTCP计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.5传输控制协议TCPlTCP概述l可靠传输原理lTCP报文段格式lTCP连接管理lTCP的可靠传输lTCP流量控制lTCP拥塞控制计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP概述lTCP协议由RFC793定义,它是面向连接的,需要经历建立连接、数据通信和断开连接三个阶段。l这里的“连接”并不是电路交换中的物理连接,也不是像虚电路那样的逻辑连接n n它的连接状态信息完全保存在两个端系统中,即网络上的路由器它的连接状态信息完全保存在两个端系统中,即网络上的路由器并不知道哪两个端系统建立了并不知道哪两个端系统建立了TCPTCP连接。连接。lTCP连接是全双工的,即通信双方可以同时发送和接收数据。例如主机H1和H2通信,建立TCP连接后,H1向H2发送数据时,也能接收来自H2的数据。lTCP的数据传输是可靠的,它具有重传、确认等可靠机制,一旦数据丢失或出错,那么发送方将重新发送数据,确保数据的可靠到达。l相比于UDP,TCP还提供流量控制、拥塞控制机制,用于控制发送方的发送速率。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院可靠传输原理l传输不可靠的根源在于底层物理信道的误码率,其不可靠程度取决于误码率的大小。这种底层物理信道的不可靠性就需要上层的可靠传输协议来弥补。l可靠传输的基本协议(1)理想的传输协议(2)基本停等协议(3)增加序号机制的停等协议(4)增加超时机制的停等协议计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院理想的传输协议l基本假设:物理信道不会出错;网络层总是准备好发送数据;数据链路层处理速度无限快l显然,这是一种理想的数据传输,因为物理信道不会出错意味着本协议无需进行校验、纠错;而网络层和数据链路层的假设意味着无需进行流量控制和保序等操作。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院基本停等协议 l基本假设如下:物理信道会出错;网络层总是准备好发送数据;数据链路层处理速度有限l物理信道此时会出错,需要有校验功能,数据链路层处理速度有限,意味着发送方不能无限度的发送数据,必须要等到接收方确认(ACK)才能继续发送。一旦收到错误的确认,就要重新发送数据。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院增加序号机制 l基本假设和第2个协议相同l在具有确认机制的可靠传输协议中,仅仅一个模糊的确认是不够的,因为有重发数据的存在n n接收方无法分辨收到的数据是新发的数据还是重新发送的数据接收方无法分辨收到的数据是新发的数据还是重新发送的数据l需要给发送的数据编号,称为序号。有了序号后,就能够有目的的确认。接收方也就不会混淆新发帧和重发帧了。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院增加超时机制l物理信道除了会出错外,还有可能发送数据丢失的现象。l数据一旦丢失,就必须要进行重传。l要引入一个超时(Timeout)机制,当在定时器到期之前收到了来自接收方的确认,就取消定时器发送下一个数据。若定时器超时后仍未收到确认,则认为数据传输丢失(当然也有可能是确认信息丢失),发送方将重新发送数据。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院带确认、序号和超时机制的停等协议 l具有确认、序号和超时机制的停等协议已经可以比较好的进行数据的可靠传输了 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院带确认、序号和超时机制的停等协议计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院滑动窗口协议提高数据传输率l停等协议能够正确的工作,但是它的效率非常低下 l滑动窗口协议为接收方定义了一个接收窗口,用以容纳允许接收的帧序号;发送方定义了一个发送窗口,用以容纳已经发送但尚未收到确认的帧序号 l假设整个圆周所容纳帧的序号总数为Nn n接收窗口外的帧表示已经接收过的帧或者对方尚未发出的帧;接收窗口外的帧表示已经接收过的帧或者对方尚未发出的帧;n n接收窗口内的下界帧是是接收方期望收到的下一帧。当接收方收接收窗口内的下界帧是是接收方期望收到的下一帧。当接收方收到接收窗口以外的帧时,丢弃此帧,但要发送重复的确认帧。到接收窗口以外的帧时,丢弃此帧,但要发送重复的确认帧。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院滑动窗口协议提高数据传输率l在正常情况下,接收方总是收到接收窗口下界帧,去掉帧头帧尾提取出分组交给网络层,然后将接收窗口向前滚动一格(即上下界帧加1并对N求模),同时发送确认帧。l在不正常的情况下,接收窗口下界帧因为丢失、出错或延迟等原因而导致“尚未收到下界帧(序号i),就收到了窗口内非下界帧(序号j)”的情况出现。为了能按序提交数据给网络层,必须把这些帧缓存起来,并发送确认帧。l当下界帧(序号i)到达时,收方将从i到m序号的帧对应的分组按序交网络层,并释放相应缓冲区,接收窗口向前滚动(mi1)mod N格,并发送确认帧,其中m是缓冲区中与i相邻帧序号集合中的最晚序号。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院接收窗口例子l帧序号空间N=8,接收窗口大小w=6 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院发送窗口例子l序号空间序号空间N=8,发送窗口最大为,发送窗口最大为w=4,并假设发送方连续发送,并假设发送方连续发送0,1,2,3号帧号帧 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院回退N步法GBN协议l在GBN协议中,接收窗口大小为1,而发送窗口大于1。因此接收方的下界帧只有一个,相当于接收方只能按序接收数据l发送窗口为4,接收方收到0,1号帧后返回ACK 0和ACK 1确认帧。发送方收到ACK 0和ACK 1后可以继续发送4,5号帧。l假设2号帧在传输过程中丢失,因此接收方无法收到2号帧。若此时3号帧到达,接收方认为这是个非窗口内的帧,因此丢弃此帧,并再次发送ACK 1,表明已经收到1号帧以前的数据,下面需要2号帧。l当3,4,5号帧到达时,接收方都将返回ACK 1。发送方收到重复的ACK 1时,知道接收方还未收到2号帧,因此发送方重新从2号帧开始,发送2,3,4,5号帧,即回退了N步发送数据 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院选择性重传协议SR协议lGBN协议的效率较低,尤其是当发送窗口很大的时候。而选择性重传则可以提高传输效率。l在SR协议中,发送窗口和接收窗口都大于1。接收窗口在收到非下界帧的时候,不会将数据丢弃,而是缓存起来,并发送它对期望帧的确认。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院SR协议lSR的接收窗口尺寸应满足N/2,其中N为序号空间的大小 l若接收窗口尺寸N/2,那么在非下界帧均先到,下界帧最后到时,接收窗口将一次性向前滚动N/2个号,则滚动前后将有一部分窗口是重叠的 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP报文段格式lTCP报文段为首部和数据 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院l源端口和目的端口源端口和目的端口n n各占各占2 2个字节,用于应用进程的寻址个字节,用于应用进程的寻址l序号序号 n n占占4 4个字节个字节,不是给每个不是给每个TCPTCP报文编号,而是给每个字节编报文编号,而是给每个字节编号号 n n序号字段的值指的是本报文段所发送的数据的第一个字节序号字段的值指的是本报文段所发送的数据的第一个字节的序号的序号 l确认号确认号 n n占占4 4个字节,期望收到对方的下一个报文段数据中第一个个字节,期望收到对方的下一个报文段数据中第一个字节的序号字节的序号 l首部长度首部长度 n n占占4bit4bit,就是,就是TCPTCP报文段首部的长度,以报文段首部的长度,以4 4字节为单位字节为单位 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院l保留保留 n n占占6bit,6bit,保留为今后使用,但目前应置为保留为今后使用,但目前应置为0 0 l紧急比特紧急比特U(Urgent,URG)n nURGURG为为1 1紧急指针有效,它表示从本报文段的起始字符开始,到紧紧急指针有效,它表示从本报文段的起始字符开始,到紧急指针指出的序号之间的部分为紧急数据急指针指出的序号之间的部分为紧急数据 l确认比特确认比特A(Acknowledgement,ACK)n n只有只有ACK=1ACK=1时确认号字段才有效。当时确认号字段才有效。当ACK=0ACK=0时,确认号无效时,确认号无效 l推送比特推送比特P(PuSH,PSH)n n为为1 1表示带有表示带有PUSHPUSH标志的数据标志的数据 l重置比特重置比特R(ReSeT,RST)n n为为1 1表示出现主机崩溃等严重错误,当表示出现主机崩溃等严重错误,当TCPTCP软件收到此报文段时,软件收到此报文段时,必须立即释放连接必须立即释放连接 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院l同步比特同步比特S(SYNchronization,SYN)n n在连接建立时用来同步序号。当在连接建立时用来同步序号。当SYN=1SYN=1而而ACK=0ACK=0时,表明这是一时,表明这是一个连接请求报文段个连接请求报文段 l终止比特终止比特F(FINa1,FIN)n n用来释放一个连接。当用来释放一个连接。当FIN=1FIN=1时,表明此报文段的发送端的数据时,表明此报文段的发送端的数据已发送完毕,并要求释放传输连接已发送完毕,并要求释放传输连接 l窗口大小窗口大小 n n占占2 2字节,窗口字段用来控制对方发送的数据量,用于流量控制字节,窗口字段用来控制对方发送的数据量,用于流量控制 l校验和校验和 n n占占2 2个字节。检验和字段检验的范围包括首部和数据这两部分,需个字节。检验和字段检验的范围包括首部和数据这两部分,需要伪首部要伪首部l选项选项 n n长度可变。长度可变。TCPTCP只规定了一种选项,即最大报文段长度只规定了一种选项,即最大报文段长度MSS,MSS,默认默认536536字节字节 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP连接管理lTCP的连接管理有三个阶段,即连接建立、数据传送和连接释放。lTCP采用三次握手(three-way handshake)建立连接,即发送方和接收方之间要经历3次交互。l防止已失效的连接请求报文段突然又传送到了主机H2,因而产生错误 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP连接管理lTCP释放连接的过程与连接建立的过程类似,释放连接需要经历四次握手。双方都必须给对方发出一个断开连接的请求报文并对之确认计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的可靠传输lTCP则提供可靠的数据传输服务,确保收发双方的数据传输按序、可靠、正确的传输。l校验和、确认、滑动窗口协议、序号以及超时机制是确保数据可靠传输的基本技术 n n在在TCPTCP首部中,校验和字段用于检查首部中,校验和字段用于检查TCPTCP报文段是否在传报文段是否在传递的过程中出错递的过程中出错n n序号字段用于对字节流中的每一个字节编号,使接收方能序号字段用于对字节流中的每一个字节编号,使接收方能分辨收到的报文是新报文还是重复的报文分辨收到的报文是新报文还是重复的报文n n通过确认号字段,发送方知道接收方目前已经接收了哪个通过确认号字段,发送方知道接收方目前已经接收了哪个序号之前的数据,并根据此信息决定发送的下一个报文段序号之前的数据,并根据此信息决定发送的下一个报文段中第一个字节的序号中第一个字节的序号n n对某个序号的重复确认还用于报文的快速重传对某个序号的重复确认还用于报文的快速重传 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的确认机制lTCP的确认机制涉及到首部中的确认号字段。该字段是接收方希望收到发送方的下一个报文段中第一个字节的序号。发送方看到这个确认的序号,它就知道接收方已经正确接收了该序号之前的数据。l为了提高效率,降低网络开销,可以采取捎带确认,如下图(b)所示。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的确认机制l累积确认:接收方不必每个报文都要发送ACK报文。l推迟确认:TCP规定,一个ACK报文可以推迟500ms发出。若500ms内有其他的报文到达,那么只需发送一个累积确认;若没有报文到达,必须立刻发送一个ACK报文。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的确认机制l重复的确认(或冗余确认)l重复的确认发生在网络传输出现异常的情况n n网络延迟很大时和接收方收到失序的报文时网络延迟很大时和接收方收到失序的报文时计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的超时机制l发送方每发送一个TCP报文,将为该报文设置一个定时器,同时将报文缓存。在定时器到期之前若收到接收方的确认信息,则将取消定时器,并将缓存的报文删除。l超时机制的关键是定时器的超时时长n n定时器时间若太长,发送方必须要等待很长时间接收对方的定时器时间若太长,发送方必须要等待很长时间接收对方的ACKACK报报文,耗费主机资源,同时也降低了通信双方的交互性和传输效率。文,耗费主机资源,同时也降低了通信双方的交互性和传输效率。n n定时器时间若设置太短,又容易导致过早超时的现象。定时器时间若设置太短,又容易导致过早超时的现象。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的超时机制l定时器的时间间隔和网络的往返时延(Round Trip Time,RTT)有关l往返时延表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认)总共经历的时延 lTCP采用Jacobson提出的算法来估算往返时间RTT,RTT的计算公式如下:RTT=(old_RTT)(1-)SAMPLE 其中其中称为修正因子,表示称为修正因子,表示RTTRTT与历史值的相关程度。对于与历史值的相关程度。对于TCPTCP而言,而言,一般取为一般取为0.8750.875较为合适。较为合适。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP的快速重传机制l超时重传机制存在的一个问题是超时时间间隔(Timeout)往往太长n n当一个报文丢失时,发送当一个报文丢失时,发送方需要等待很长的超时时方需要等待很长的超时时间才重发丢失的分组,这间才重发丢失的分组,这增加了端到端延时。增加了端到端延时。l TCP采取了一种快速重传的机制n n即发送方一旦收到三个重即发送方一旦收到三个重复的复的ACKACK报文,就立刻重报文,就立刻重发报文,而不必等到定时发报文,而不必等到定时器到期。器到期。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院流量控制l流量控制就是控制发送方的发送速率不会超过接收方从缓冲区中处理数据的速率。l TCP使用滑动窗口机制来实现流量控制,滑动窗口接收方根据自己接收数据的能力来限制发送方数据的传输。lTCP对每个通信方都有一个接收窗口(Receive Window)参数,当发送方收到TCP报文段时,从窗口字段中它可以获知接收方目前可以接收的数据量,根据这个值来调整发送方的发送速率。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院流量控制l糊涂窗口综合症是指接收方向发送方通告只有少量的接收缓冲区可用空间,导致发送方传送多个短报文段的情况。n n例如接收方接收缓冲区已用完,如果应用程序从缓冲区读走一例如接收方接收缓冲区已用完,如果应用程序从缓冲区读走一个字符(例如在个字符(例如在TelnetTelnet运用时,就有这种情况),接收缓冲区运用时,就有这种情况),接收缓冲区可用空间为可用空间为1 1字节字节n n接收方就通过报文段向发送方通告一个字节的接收窗口,于是接收方就通过报文段向发送方通告一个字节的接收窗口,于是发送方就发送一个字节数据的报文段发送方就发送一个字节数据的报文段n n接收方又发送一个确认报文段。由于报文段是封装在接收方又发送一个确认报文段。由于报文段是封装在IPIP分组中分组中的,发送一个报文段至少需要的,发送一个报文段至少需要4040字节的字节的TCPTCP首部和首部和IPIP首部。因首部。因此,为了传送一个字节,需要三个报文段。此,为了传送一个字节,需要三个报文段。l糊涂窗口综合症的危害是:(1)浪费网络通信容量(2)带来不必要的计算负担 l避免糊涂窗口综合症可以采用推迟通知和组块技术 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP拥塞控制l拥塞:到达网络中某些路由器的分组数量过多过快,使得路由器来不及处理,从而导致分组丢失、分组延迟增大乃至整个网络性能下降的现象,严重时网络甚至完全崩溃瘫痪。l造成拥塞的原因n n路由器和主机的输入部分的处理速度慢路由器和主机的输入部分的处理速度慢n n网络的局部或整体带宽容量小会加快拥塞的发生网络的局部或整体带宽容量小会加快拥塞的发生 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP拥塞控制l拥塞控制的目的是为了减缓网络中的拥塞现象,本质是控制发送方减少发送到网络上的分组数量,即降低发送方的发送速率l拥塞控制 vs.流量控制n n拥塞控制是网络全局性的问题,它涉及到网络中所有主机的收发拥塞控制是网络全局性的问题,它涉及到网络中所有主机的收发行为行为 n n流量控制只与某对特定的发送方和接收方之间的通信有关,是一流量控制只与某对特定的发送方和接收方之间的通信有关,是一个局部性的问题个局部性的问题l常用的拥塞控制方法有两种:网络辅助的拥塞控制和端到端的拥塞控制。lTCP就是采用的是端到端的拥塞控制方法 n n慢启动(慢启动(Slow StartSlow Start)阶段)阶段 n n拥塞避免(拥塞避免(Congestion AvoidanceCongestion Avoidance)阶段)阶段 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP拥塞控制慢启动阶段l发送方以一个低速率发送数据(通常设置为一个MSS)n n如果发送方发出的报文得到了对方的确认,那如果发送方发出的报文得到了对方的确认,那么发送方认为网络能够承受这样的发送速率,么发送方认为网络能够承受这样的发送速率,因此它将发送速率加倍因此它将发送速率加倍 n n若此报文又收到确认,则再次将发送速率加倍若此报文又收到确认,则再次将发送速率加倍 ,如此反复,如此反复n n一旦拥塞窗口(当前发送速率)超过了临界窗一旦拥塞窗口(当前发送速率)超过了临界窗口,那么拥塞窗口值被设置为临界窗口的大小,口,那么拥塞窗口值被设置为临界窗口的大小,然后进入拥塞避免阶段。然后进入拥塞避免阶段。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP拥塞控制拥塞避免阶段l执行AIMD算法 n n在拥塞避免阶段,发送方发出报文得到确认后,发送在拥塞避免阶段,发送方发出报文得到确认后,发送速率线性递增,即拥塞窗口大小增加一个速率线性递增,即拥塞窗口大小增加一个MSS MSS n n增大到一定程度时(数据丢失)增大到一定程度时(数据丢失),拥塞窗口需减半,拥塞窗口需减半(乘性递减),快速降低发送速率(乘性递减),快速降低发送速率n n若下一个报文收到了确认,则拥塞窗口又线性递增,若下一个报文收到了确认,则拥塞窗口又线性递增,增加一个增加一个MSSMSSn n如此反复,使得拥塞窗口的变化呈现出锯齿形的形状如此反复,使得拥塞窗口的变化呈现出锯齿形的形状 计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院TCP拥塞控制l拥塞控制机制总结:(1)TCP连接建立时,拥塞窗口设置为1个MSS大小(CW=1),并进入慢启动阶段,每收到接收方的确认,拥塞窗口加倍。(2)在拥塞避免阶段,每收到一个报文的确认,拥塞窗口线性增加,直到出现报文丢失。报文一旦丢失,临界窗口变为当前拥塞窗口的一半(TW=CW/2),并如(3)一样调整拥塞窗口大小。(3)出现报文丢失后,若是由于超时事件而判断报文丢失,则拥塞窗口降为1个MSS,重新开始慢启动阶段;若是由于收到三个重复的ACK的事件而判断的报文丢失,则拥塞窗口将为当前拥塞窗口的一半(CW=CW/2),然后执行AIMD算法。计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院5.6 工程实例l传输层报文实例l网络编程及实例计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院传输层报文实例lUDP报文计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院传输层报文实例lTCP报文计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院网络编程模型l套接字 便于网络应用程序使用便于网络应用程序使用TCP/IPTCP/IP的网络服务,大部分系统都提供了的网络服务,大部分系统都提供了一组基于一组基于TCPTCP或者或者UDPUDP的应用程序编程接口(的应用程序编程接口(APIAPI)l常用套接字APIn nSocketSocket():创建套接字():创建套接字n nBindBind():为套接字绑定():为套接字绑定IPIP地址和端口地址和端口n nListenListen():服务器端侦听客户端的连接请求():服务器端侦听客户端的连接请求n nConnectConnect():客户端连接服务器():客户端连接服务器n nAcceptAccept():服务器端接受客户端的请求():服务器端接受客户端的请求n nSendSend()和()和recvrecv():收发数据,主用用于():收发数据,主用用于TCPTCP套接字套接字n nSendtoSendto()和()和recvfromrecvfrom():收发数据,主要用于():收发数据,主要用于UDPUDP套接字套接字n nCloseClose():关闭套接字,释放资源():关闭套接字,释放资源计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院网络编程模型lUDP编程模型计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院lTCP编程模型计算机网络技术计算机网络技术电子科大计算机学院,软件学院电子科大计算机学院,软件学院