第7章传输层2本章学习要求掌握:传输层的基本功能与服务质量。掌握:用户数据报协议UDP。掌握:传输控制协议TCP。第一部分传输层概述41、传输层在协议层次结构中的位置传输层也称为端到端协议层,是负责数据通信的最高层,是位于面向网络通信的高3层和面向信息处理的低3层的中间层。传输层在网络分层结构中起着承上启下的作用,它利用低3层提供的服务向高3层提供可靠的端到端的报文传输服务。OSI模型规定了传输层是通信子网和资源子网的接口,屏蔽了各类通信子网的差异,向用户提供了一个通用的接口使得用户只需了解该接口,便可方便地在任何网络上使用网络资源和进行通信。应用层表示层会话层传输层网络层数据链路层物理层51、传输层在协议层次结构中的位置传输层要达到两个目的:通过执行传输层协议,屏蔽通信子网在技术、设计上的差异和服务质量的不足,向高层提供(1)可靠的端到端通信服务(2)独立于网络的传输服务应用层表示层会话层传输层网络层数据链路层物理层6传输层的端-端通信传输层端-端通信协议数据链路层网络层物理层传输层应用层数据链路层网络层物理层网络层协议数据链路层网络层物理层传输层应用层通信子网主机A主机B数据链路层协议物理层协议网络层协议数据链路层协议物理层协议7传输层的功能在不同的网络中有着不同的内容,通信子网所提供的功能越多,传输层的功能就越少,反之亦然。例如在TCP/IP网络中,由于网络层提供的功能很少,所以很多保障数据可靠传输的机制事实上都是在传输层来实现的。传输层的作用主要是弥补了网络层提供的服务较之OSI高层要求的服务之间的不足。2、传输层的功能82、传输层的功能1、弥补剩余差错率和信号失败率所谓剩余差错率是指在传输过程中丢失的、出错的和重复的数据单元和传输的数据单元总量之比。所谓信号失败率是指未能成功建立连接的次数和要求建立连接的次数之比。92、传输层的功能OSI标准根据剩余差错率和信号失败率将网络服务质量分成A、B、C三个类别。A类网络提供近乎可靠的网络服务,其分组丢失、出错、重复以及信号失败的概率可以忽略不计。公用广域网很少能够提供A类服务,但是一些局域网可以提供接近该类型的服务。B类网络提供的网络服务具有可接受的剩余差错率和信号失败率。C类网络提供的网络服务相当不可靠,剩余差错率和信号失败率比较高,所以使用这样类型的网络必须使用比较复杂的协议来保障数据的传输。公用广域网、无线网络等属于该类。102、传输层的功能对于不同类型的网络,传输层应提供与之相适应的服务以满足高层的需求。换言之,网络本身服务质量越高,则传输层提供的服务就可以越少,实现协议就可以越简单;反之,网络本身服务质量越差,则传输层提供的服务就可以越多,实现协议就越复杂。112、传输层的功能2、弥补数据传输速率、吞吐量和传输时延如果通信子网所提供的服务,如数据传输速率、吞吐量和传输时延等不能满足高层的要求时,传输层通过数据的多路复用/分割、分段/组段、组块/分块等方法来弥补通信子网在上述几个方面的不足。122、传输层的功能分段/组段由于网络层所传送的数据单元的大小是有限的,而高层的数据单元通常要比网络层协议数据单元大。OSI标准规定传输层可通过其分段/组段的功能,在传输层将高层数据分割成若干段再形成报文。组块/分块组块/分块可以将多个小报文组合成一个大报文进行传输。132、传输层的功能3、传输连接的建立与释放传输层要为高层提供可靠的端到端的数据传输,必然要提供面向连接的服务。而传输连接的建立与释放的功能正是在面向连接的服务中用于传输连接的建立与释放。144、传输层协议为了适应各类通信子网所提供的服务,ISO定义了5种类型的传输协议,每一种协议对应一种传输服务级别。0类协议(简单级)A类网络1类协议(基本差错恢复级)B类网络2类协议(多路复用级)A类网络3类协议(差错恢复和多路复用级)B类网络4类协议(差错检测和恢复级)C类网络15传输层协议ISO定义了10种传输层的传输协议数据单元,用于实现传输连接的建立和拆除、数据传输、流量控制等。TCP/IP协议中仅定义了TCP和UDP两种传输层协议,以及TCP和UDP两种报文。16传输协议数据单元传输层之间传输的报文又叫做传输协议数据单元(TransportProtocolUnit,TPDU);TPDU头部TPDU有效载荷分组头部帧头部分组有效载荷帧有效载荷第二部分TCP/IP传输层18TCP/IP传输层及其协议由于TCP/IP网络层提供的是无连接的、不可靠的数据传输服务,所以传输层在不可靠的网络层的基础上提供可靠的数据传输服务。传输层上定义了两个协议:传输控制协议TCP和用户数据报协议UDP。传输控制协议TCP(TransmissionControlProtocol)是一个可靠的、面向连接的协议,它允许从一台机器发出的数据顺序、无差错地发往互联网上的其他机器。TCP协议采用了三次握手机制、确认/重发机制、滑动窗口机制(流量控制)。TCP协议主要用于对数据传输可靠性、正确性要求较高的应用。19TCP/IP传输层及其协议用户数据报协议UDP(UserDatagramProtocol)是一个不可靠的、无连接协议,用于不需要TCP排序和流量控制,而是自己完成这些功能的应用程序。它被广泛地应用于快速递交比准确递交更重要的应用程序,如传输语音或影像。20一、端口在一台主机上,多个应用程序进程同时使用TCP或UDP协议进行通信。传输层协议接收到数据后,如何区分发送给哪个应用进程,所以TCP/UDP中引入了端口(port)的概念。每个端口由一个16比特的无符号整型值(0-65535)来标识,被称作端口号,它用来标识传输层协议和应用进程之间的数据接口。我们可以简单地认为在本地主机中,一个应用进程对应着唯一的一个端口号。TCP/UDP使用IP地址标识主机,用端口号来标识应用进程,协议、端口号和IP地址合起来,即三元组(协议,IP地址,端口号),可以唯一地标识一个通信的端点(应用进程)。而一个通信则可以用五元组(协议,本地IP地址,本地端口号,远程IP地址,远程端口号)来标识。21一、端口端口号的分配有两种方式:全局分配和本地分配。TCP/UDP将所有的端口号(0-65535)分为两个部分:范围为0-1023的端口号为保留端口,采用全局分配的方式分配给一些网络服务进程,例如TELNET(23)、FTP(20、21)、SMTP(25)、HTTP(80)等等。每一个标准服务进程都有固定的公认的端口,所以这些端口也称为熟知端口。范围为1024-65535的端口号为临时端口,以本地分配方式临时分配给需要进行网络通信的应用进程。22二、传输控制协议TCPTCP协议的主要特点:TCP是一种面向连接的、可靠的传输层协议;TCP协议建立在不可靠的网络层IP协议之上,IP协议不能提供任何可靠性机制,TCP的可靠性完全由自己实现;TCP采用的最基本的可靠性技术是:三次握手机制确认/重发机制滑动窗口机制(流量控制)。231、TCP协议--TCP报文结构TCP报文又称为报文段,分为报文头和数据两部分。241、TCP协议--TCP报文结构源端口和目的端口:都是16比特,分别表示发送方和接收方的端口号。发送序号和确认序号:都是32位的无符号整数,发送序列号表示发送数据部分第一个字节的序列号,而确认号表示该数据报的发送者希望对方发送的下一个字节的序号。头长度:表示TCP报文头的长度。长度以4个字节为单位来计算。所以如果选项部分的长度不是4个字节的整数倍,则要进行填充。保留域:紧接在头长度字段后有6个比特,应该把它设置为0。251、TCP协议--TCP报文结构6个控制位,其含义为:URG为紧急数据标志位。如果它为1,则表示本数据报中包含紧急数据。此时紧急数据指针表示的值有效。ACK为确认标志位。如果ACK为1,则表示报文中的确认号是有效的。否则,报文中的确认号无效,接收端可以忽略它。PSH为推标志位。被置为1后,要求发送方的TCP协议软件马上发送该数据报,接收方在收到数据后也应该立即上交给应用程序。RST为复位标志位。用来复位一条连接。RST标志置位的报文称为复位报文。一般情况下,如果TCP收到的一个报文明显不是属于该主机上的任何个连接,则向远端发送一个复位报文。SYN为同步标志位。用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据报为连接请求,如SYN=1而ACK=1则表示是接受连接。FIN为最后段号标志位。表示发送方已经没有数据要传输了,希望释放连接。261、TCP协议--TCP报文结构窗口字段:窗口表示的是从被确认的字节开始,发送方最多可以连续发送的字节的个数。接收方通过设置该窗口值的大小,可以调节源端发送数据的速度,从而实现流控。校验和:是TCP协议提供的一种检错机制。紧急指针:与URG标志位配合使用,当URG标志位为1时,指出了紧急数据的末尾的位置。272、TCP协议--连接的建立和释放TCP是面向连接的协议,采用“三次握手”方式来建立连接。(1)主机A向B发送一个同步命令,即SYN=1的一个TCP连接请求报文,同时为该报文生成一个发送序号SEQ,例如SEQ=x,放在报文头中一起发送出去。(2)如果主机B接收本次连接请求,则返回一个同步加确认报文(SYN=1且ACK=1),这就是“第二次握手”。其中,序号主机B生成,例如SEQ=y,与x的值无关。用第一个报文序号值加1来作为对它的确认。(3)最后,主机A再向B发送第二个报文(序号加1,即SEQ=x+1),同时还要对从主机B发来的报文进行确认。282、TCP协议—连接的建立和释放TCP协议采用与“三次握手”类似的方式来释放连接。在数据传输结束后,通信双方都可以主动发出释放连接的请求。通信双方可以依次地先后关闭一个连接,也会同时提出关闭连接的请求。主机A向B发送一个FIN报文(即TCP报文头中的FIN标志位置为1)来请求关闭一个连接。主机B在收到FIN报文后,应该马上发出确认报文,A收到后关闭主机A到B方向上的连接。主机B可以象主机A一样释放主机B到A方向上的连接。293、TCP协议—流量控制TCP采用长度可变的滑动窗口,来进行流量控制,窗口大小的单位是字节。TCP协议中滑动窗口的含义是指发送方在未收到接收方返回的确认信息的情况下,最多能发送多少字节的数据。实际上,在每个TCP报文头中的窗口字段的值就是当前设定的接收窗口的大小。303、TCP协议—流量控制上图表示发送端需要发送的数据总共有800字节,分为8个报文。假设事先约定好窗口大小为500字节,即允许发送端在未收到确认之前最多可以连续发送500个字节的数据。图中,发送窗口当前的位置表示前两个报文(其字节序号为1-200)已经发送过,并收到了接收端的确认。假如发送方又发送了两个报文但未收到确认,则现在它最多还能发送3个报文。发送端在收到接收方返回的确认后,就可以将发送窗口向前滑动。实际上,发送窗口在建立连接时由通信双方商定,更重要的是,在通信过程中,接收端可以根据本地资源的情况动态地调整自己的接收窗口的大小,并通知对方,使对方的发送窗口和自己的接收窗口一致。314、TCP协议—确认/重发机制当TCP发送数据时,发送方通过一种重发方案来补偿包的丢失,且通信的双方都要参与。当接收方TCP收到数据时,它要回发给发送方一个确认。当发送方发送数据时,TCP就启动一个定时器。在定时器到点之前,如果没有收到一个确认,则发送方重发数据。32报文段出错序号:1201,200B报文段1序号:1401,200B报文段2序号:1601,200B报文段3确认:1601序号:1601,200B报文段3:重传确认:1801超时时间时间发送端接收端报文段3受损伤4、TCP协议—确认/重发机制33丢失报文段序号:1201,200B报文段1序号:1401,200B报文段2序号:1601