第七章传输层协议1、传输层的功能和服务运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。运输层对收到的报文进行差错检测。实现流量控制和拥塞控制运输层的两个主要协议UDP(UserDatagramProtocol)TCP(TransmissionControlProtocol)运输层协议和网络层协议区别应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网运输层协议与数据链路层协议区别运输层的环境是两个主机通过多个网络进行通信。分组在网络的各结点都要经过排队才能转发,有可能“存储”一些分组。使某些分组在迟延一段时间后突然又出现在收端。网络内同时存在多条连接,且连接的数目动态变化,因而流量控制和拥塞控制也较为复杂。2、运输层在层次体系结构中的地位2、TCP与UDPUDP不需要建立连接,不需要确认。报文不分段。不提供可靠交付,但是高效。支持广播和多播。TCP则提供可靠的、面向连接的服务,不支持广播或多播服务。数据单元的首部增大,占用处理机资源。UDP数据报与IP数据报有很大区别。IP数据报经过许多路由器的存储转发,但UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。3、端口的概念(1)使用端口的原因计算机中的进程是用进程标识符来标志的。运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。由于因特网上可使用不同的操作系统,而不同的操作系统使用不同格式的进程标识符。方法是在运输层使用协议端口号(16bits)端口号只具有本地意义。不同计算机的相同端口号是无关的。(2)三类端口熟知端口号:0~1023。分配给常用的应用程序登记端口号:数值为1024~49151。使用时须在IANA登记,以防止重复。动态端口:49151~65535。可由应用程序暂时使用11116169252123RPCSNMPTFTPSMTPFTPTELNETUDPTCPIP熟知端口(3)端口使用范例IP131.2.6.13Port500Port501IP130.42.6.13Port500IP131.2.6.14Port500ABC一个IP地址和一个端口port可以唯一的标识一个进程,称之为套接字(socket),即:Socket:={IP,port}(4)客户与服务器主动发起通信请求的进程叫做客户(client),而被动等待通信请求的进程叫做服务器(server)。服务器的端口应为熟知端口或确定的端口,客户端的端口可以是动态分配的。4、UDP协议UDP是面向报文的,发送前不分段IP数据报的数据部分IP首部IP层UDP首部UDP用户数据报的数据部分运输层应用层报文应用层(1)报文格式伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017字节44112122222字节发送在前数据首部UDP用户数据报IP数据报不上传,亦不下传,校验用伪首部+首部+数据(2)UDP的通信过程A:封装过程IP首部UDP首部数据MAC首部IP首部UDP首部数据MAC首部B:拆装过程(3)UDP队列Port=55566Client出队列入队列Port=13Server出队列入队列队列随同端口号一起建立UDP队列有限,可能溢出5、传输控制协议TCP768H发送TCP报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109H加上TCP首部构成TCP报文段TCPTCP字节流字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接TCP面向流(1)报文格式源端口目标端口顺序号确认号或回复应答报头长度保留控制项窗口发送方:拥塞接收方:通知校验和紧急指针选择项与填充数据域URGACKPUSRSTSYNFIN31161505-15,以4B为单位,TCP的编号与确认编号:不按传送的报文段,按字节编号。连接建立时,商定初始序号。TCP首部是欲传送第一个数据字节的序号确认:对接收到的数据的最高序号,但首部是最高序号加1。即:期望下次收到的第一个数据字节的序号。注意:不必专门发送确认报文段,传送数据时顺便确认对方信息(2)TCP传输的三个阶段连接建立۩要使每一方能够确知对方的存在。۩要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。۩能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。数据传送连接释放①三次握手建立TCP连接确认报文段确认报文段AB客户服务器CLOSED主动打开被动打开CLOSED请求连接报文,首部SYN=第一个数据字节的序号是xSYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHED用三次握手建立TCP连接的各状态CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器②TCP连接释放通信的双方都可释放连接。主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器收到连接释放报文后,必须发出确认。closedclosedclosedCLOSEDFIN-WAIT-1CLOSE-WAITFIN-WAIT-2LAST-ACK等待2MSLTIME-WAIT主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器CLOSED③TCP连接必须经过时间2MSL后才真正释放掉原因:第一,为了保证A发送的最后一个ACK报文段能够到达B。第二,防止“已失效的连接请求报文段”出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。(3)流量控制流量控制:通过一定的机制使发送方的发送速率适中,保证让接收方来得及接收和网络不发生拥塞的情况下,尽可能提高发送速率。TCP采用滑动窗口协议进行流量控制:连续传送:发送窗口确定可连续传送的数据量累积确认:每收到两个报文段确认一次,对最后成功、有序接收的字节确认。但当收到时序报文时,应立即发送确认报文①发送窗口的确定发送窗口=min{通告窗口,拥塞窗口}通告窗口:是接收方可用缓冲区大小,即:接收方当前能够接收的最大字节数。保证接收方缓冲区不溢出。在确认报文首部给出。拥塞窗口:不发生拥塞的管道容纳的数据量。即,未被确认的数据量。seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节A发送了序号101至200,还能发送200字节A发送了序号301至400,还能再发送100字节新数据A发送了序号1至100,还能发送300字节A发送了序号401至500,不能再发送新数据了A超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节A发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)丢失!通告窗口应用举例②拥塞窗口确定:拥塞窗口(cwnd)根据当前网络状况动态更新,算法为:慢启动:建立连接之初,拥塞窗口设置为1MSS,正常收到ACK后,拥塞窗口加1MSS。加法增大:窗口大于慢启动门限ssthresh(上次发生拥塞窗口一半或65535,但最少应为2个MSS)时,每收到一个正常的ACK,窗口增加1/cwnd个MSS。(拥塞避免)乘法减小:超时:更新ssthresh,并令cwnd=1,3个重复的ACK:快速重传③快速重传与快速恢复当收到小于三个的重复的ACK时,ssthresh和cwnd不变当收到第三个重复的ACK时,ssthresh=cwnd/2,cwnd=ssthreth+3MSS,重传丢失报文每次收到另一个重复ACK时,cwnd=cwnd+1MSS,并发送一个分组收到下一个新数据的ACK时,cwnd=ssthresh,进入拥塞避免阶段(4)交互式数据传送:数据字节为1Byte每个数据产生41字节的分组会增加拥塞的可能性Nagle算法:一个TCP连接上只能有一个未被确认的小分组。“小”是指小于报文段大小ClientServer数据字节确认回显确认Rlogin6、服务质量(QOS)(1)技术要求应用可靠性时延抖动带宽电子邮件高低低低文件传输高低低中Web访问高中低中远程登录高中中低音频点播低低高中视频低低高高电话低高高低视频会议低高高高(2)相关技术A:提供足够的带宽和缓冲区:消除抖动B:流量整形和漏桶算法流量整形:在服务器端或主机端调整数据发送的平均速率。C:资源预留预留带宽预留缓冲区路由器的CPU周期