数据通信与计算机网络(第二版)课件:传输层_第1页
数据通信与计算机网络(第二版)课件:传输层_第2页
数据通信与计算机网络(第二版)课件:传输层_第3页
数据通信与计算机网络(第二版)课件:传输层_第4页
数据通信与计算机网络(第二版)课件:传输层_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

传输层9.1传输层提供的服务9.2传输控制协议TCP9.3一个SOCKET程序实例9.4用户数据报协议UDP9.1.1传输层概述传输层位于网络体系结构的第四层,是整个网络体系结构的核心部分之一。传输层的目标是利用网络层提供的服务向其用户(应用进程)提供有效、可靠且价格合理的服务。9.1.1传输层概述在通信子网中没有传输层,它只存在于通信子网以外的各主机中。9.1.1传输层概述如果将整个网络体系结构从网络功能和用户功能角度来划分,传输层是网络功能部分的最上层。9.1.2提供给高层的服务传输层位于收发两端的主机上,以独立的传输层实体存在,并通过相应接口向上层提供服务9.1.3传输层要素传输层需要完成几个工作:传输层寻址连接管理差错控制流量控制1.传输层寻址传输层对主机上的不同网络进程进行了编号,用不同的数字区分不同的网络进程。传输层标识网络进程的数字称为传输层地址或端口号。通过该方法,传输层可以使多对进程间的通信复用到一个网络连接上,以此来完成多对应用程序间的通信。2.连接管理通过连接管理,传输层保证了数据按顺序、不重复地传输。传输层在发送数据之前需要先建立连接。在连接建立过程中,进行初始序号协商和分配资源等工作。连接建立后,传输层才开始发送数据。在数据发送过程中,数据的序号在初始序号的基础上依次递增3.差错控制传输层一般使用确认和超时重传的机制保证数据正确传输。因为线路原因,数据在传输时可能出错;因为路由器负载过重的原因,数据在传输时可能丢失。为使发送端知道数据是否正确传输,传输层实体使用确认机制,接收端正确收到数据后向发送端回发确认。4.流量控制与缓冲机制中间网络负载过重造成数据丢失4.流量控制与缓冲机制接收缓冲区溢出造成数据丢失4.流量控制与缓冲机制为了防止发送方发送速度过快,加重网络负担或“淹没”接收方,需要调整发送方的发送速度,称为流量控制。与数据链路层类似,传输层会限制对发送缓冲区的使用,即使用滑动窗口方法。不同的是,传输层会动态调整可用发送缓冲区的大小,即使用可变大小的发送窗口9.1.4TCP/IP协议中的传输层TCP/IP协议栈的传输层包括两个协议:UDP(UserDatagramProtocol,用户数据报协议)和TCP(TransmissionControlProtocol,传输控制协议)。9.1.4TCP/IP协议中的传输层TCP是可靠的、面向连接的。TCP进行传输层寻址、连接管理、差错控制和流量控制。如果IP分组的传输出现错误、丢失或乱序,TCP会进行处理,从而保证应用程序得到的是可靠的数据。TCP与UDP相比提供了较多的功能,但是相对的报文格式和运行机制也较为复杂。UDP是不可靠、无连接的,即在进行数据传输之前不需要建立连接,而目的主机收到数据报后也不需要发回确认。这种协议提供了一种高效的传输服务,用于一次传输少量数据报文的情况,其可靠性由应用程序来提供。9.1.4TCP/IP协议中的传输层为了防止发送方发送速度过快,加重网络负担或“淹没”接收方,需要调整发送方的发送速度,称为流量控制。与数据链路层类似,传输层会限制对发送缓冲区的使用,即使用滑动窗口方法。不同的是,传输层会动态调整可用发送缓冲区的大小,即使用可变大小的发送窗口9.1.5端口当信息包通过网络层的传输到达目的地后,如果目的计算机上有多个应用程序正在同时运行,应该确定信息包上传给哪个应用程序。传输层可以通过协议端口(ProtocolPort,简称端口)来标识通信的应用进程。传输层通过端口与应用层的应用程序进行信息交互,而应用层的各种用户进程通过相应的端口与传输层实体进行信息交互。9.1.5端口常见的熟知端口号协议端口号关键字描述UDP42NAMESERVER主机名字服务器UDP53DOMAIN域名服务器UDP67BOOTPClient客户端启动协议服务UDP68BOOTPServer服务器端启动协议服务UDP69TFTP简单文件传输协议UDP111RPC微系统公司RPCTCP20FTPData文件传输服务器(数据连接)TCP21FTPControl文件传输服务器(控制连接)TCP23Telnet远程终端服务器TCP25SMTP简单邮件传输协议TCP80HTTP超文本传输协议9.1.5端口通过SMTP进行通信的主机9.2传输控制协议TCP特点:可靠的传输面向连接数据流式传输全双工9.2.1TCP的报文格式

TCP报文封装在IP分组中,一个TCP报文分为两个部分:首部和数据。TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部源端口和目的端口字段——各占2字节,分别标识连接两端的两个通信的应用进程。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部发送序号:占4个字节。TCP对每一个字节进行编号,在这个字段中给出的数字是本报文段所发送的数据部分的第一个字节的序号。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部接收序号:又称作确认序号,占4个字节。期望收到的下一个报文段的首部中的发送序号,同时确认以前收到的报文。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部数据偏移:占4位,指出在TCP数据报内实际的数据到TCP报文段的起始位置的距离。“数据偏移”字段存储的数值的单位是32位的字。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部保留字段与标志位:占6位,设置的值为0,供功能扩展使用,新的TCP版本有些位已被启用。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部紧急比特位(URG)。当为1时,表明此报文段为紧急数据段,需要马上传送出去,而不要按照原来的排队顺序来传送,具有加速数据传送的功能。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部确认比特(ACK):标志着首部中“确认序号”字段是否可用,当设置此位为1时,确认序号才有意义。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部紧迫比特(PSH):为紧急报文段,当为1时,表明请求远地目的主机的TCP要将本报文段立即向上传递给其应用层进行处理。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部复位比特RST(ReSeT):当为1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部同步比特(SYN):在建立连接时使用,与ACK配合使用:当SYN=1,ACK=0时,表明一个请求建立连接的报文段;若对方同意建立连接,则在发回的确认报文段中会将SYN设置为1,ACK设置为1。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部终止比特FIN(FINal):用来释放一个连接。当FIN

1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部窗口:占2字节,用来控制对方发送的数据量,单位为字节。所设定的值既是自己的接收窗口,也是对方发送窗口的上限。TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。检验和(伪首部)伪首部既不向下传送也不上交,第三个字段全为0,第四个字段是IP首部中的协议字段值,TCP协议的编号值为6,第五个字段给出整个TCP数据报的长度。源IP地址06TCP长度44112字节目的IP地址检验和检验和就是按照这个过渡的数据报格式进行计算的。TCP的检验和字段首先设置为0,并且当数据长度是奇数时数据字段附加填空一个0字节,检验和算法是简单地将所有16位字以补码形式相加,然后再对相加后的和取补,因此当接收方对整个数据段,包括检验和字段进行运算时,结果应为0。接收端在收到报文段后,仍然要加上伪首部进行检验和的计算。在检验和计算过程中,包括了伪首部,有助于检测传送的分组是否正确,但这样做却违反了协议的分层规则。TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部紧急指针:与紧急比特配合使用处理紧急情况,指出在本报文段中的紧急数据的最后一个字节的序号。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部单字节选项:选项结束和无操作;多字节选项:最大报文段长度、窗口扩大因子以及时间戳

最大报文段长度MSS(MaximumSegmentSize)

:定义可以被目的站接收的TCP报文段的最长数据块,定义了数据的最大长度。这个字段是16位长,因此这个值在0到65535之间。默认值是536。最大数据长度是在连接建立阶段确定的,这个大小是由报文段的目的站而不是源站确定的。

TCP首部目的端口数据偏移检验和选项(长度可变)源端口发送序号紧急指针窗口接收序号(确认号)保留FINSYNRSTPSHACKURG比特08162431填充20字节固定首部填充字段:这是为了使整个首部长度是4字节的整数倍。9.2.2TCP的编号与确认TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。

TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。9.2.3TCP拥塞控制Internet的复杂性、网络流量的不可预知及不可控性、网络故障的不可避免性、算法不可能完美等等因素决定了网络拥塞的不可避免。当加载到某个网络上的载荷超过其处理能力时,拥塞现象便会出现。TCP是端到端的可靠的、面向连接的服务。它必须解决三层以下的不可靠问题。一般的,TCP依靠确认、超时重传来保证可靠传输。然而,无节制的重传造成第三层更加严重的拥塞后果。因此,TCP采用特定的算法,与IP协同作用,尽最大努力来避免拥塞或减缓拥塞的发生。9.2.3TCP拥塞控制为了同时反映网络的问题,TCP依据两个窗口来协同工作:接收方准许的窗口(rwnd–receiverwindow)和拥塞窗口(cwnd-congestionwindow)。每个窗口都反应了发送方可以传输的字节数。取两个窗口的最小值作为可以发送的字节数。这样,有效窗口便是发送方和接收方分别认为合适的窗口中最小的那个。即: 发送的窗口大小=min(rwnd,cwnd)9.2.3TCP拥塞控制当建立连接时,发送方将拥塞窗口大小初始化为该连接所用的最大数据段的长度值。通常情况下,此时的拥塞控制窗口会小于接收窗口,然后发送一个最大长度的数据段。如果该数据段在定时器超时之前得到了确认,那么发送方会在原拥塞窗口的基础上再增加一个数据段的字节值,使其为两倍最大数据段的大小,然后发送两个数据段。当这些数据段中的每一个都被确认后,拥塞窗口大小就再加倍。实际上,每次成功地得到确认都会使拥塞窗口的大小加倍.9.2.3TCP拥塞控制TCP在执行拥塞控制算法时除了接收窗口(rwnd)和拥塞窗口(cwnd)外还要设定一个参数,就是临界值(threshold)。传输伊始,临界值初始化为64KB。然后从一个最大数据段大小开始,逐渐增大拥塞窗口,如果发生数据传输超时,将临界值设置为当前拥塞窗口大小的1/2,并使拥塞窗口恢复为最大数据段的大小,重新开始慢启动过程。当窗口增大到临界值仍然没有发生超时,也不能再按指数增大窗口,而是按线性增加(对每个字符组按最大数据段的值增加)。这一阶段又称为拥塞避免(CongestionAvoidance)。9.2.3TCP拥塞控制开始时拥塞窗口为64KB,但此时出现了超时,因此将临界值设置为32KB,传输号0的拥塞窗口为1KB。之后拥塞窗口按指数规律增大直到临界值(32KB)。并由此开始按线性规律增大。传输号13发生了定时器超时,临时界值被设置为当前窗口的1/2(当前为40KB,因此1/2为20KB),慢启动又从头开始。传输号18前面四次传输每次均是按指数增量增大拥塞窗口,但这之后,窗口又将按线性增大。9.2.4显式拥塞指示上述拥塞控制算法是建立在所有传输超时都是由于拥塞引起的这样的假设基础上的。它将网络当做一个黑匣子,根本不知道网络中到底发生了什么情况。能否将网络的状态明确的“告知”连接的两个端系统呢。2001年9月IETF网络工作组发布了RFC3168--在IP中增加显式拥塞指示(ECN-ExplicitCongestionnotification),旨在报告传输路径上的拥塞状况。9.2.4显式拥塞指示ECN功能涉及到IP数据报头格式和TCP报头格式定义的变化。在IPv4数据报头中,RFC3168定义了新的TOS字段格式9.2.4显式拥塞指示DS字段为区别服务码点,是为IP数据报通过路由器时选择不同类型的服务之用。位6和位7用于拥塞的显示指示(ECNFIELD)。位状态状态名称功能描述Bit6Bit700Not-ECT本数据包不使用ECN功能01ECT(1)数据包使用ECN功能传输10ECT(0)数据包使用ECN功能传输11CE路由器拥塞指示9.2.4显式拥塞指示由主机和路由器协同完成的IP的ECN功能只是实现了传输路径上的拥塞状况指示,对拥塞的处理需要传输层协议的支持。对TCP而言,首先要确定连接的两个端点都支持ECN;其次,接收端能对收到的CE数据包做出反应以通知发送端;再次,发送端接到通知后,要对拥塞做出应对。这将要求TCP增加三项功能:第一:在连接建立阶段协商两端点是否均支持ECN(ECN-Capable);第二:在TCP报头增加ECN-Echo(ECE)标志,以使得接收端有能力通知发送端其收到了带有CE标志的数据包;第三:在TCP报头增加拥塞窗口减小标志CWR(CongestionWindowReduced)使得发送方能够通知接收方已经对出现的拥塞做出应对。这里有必要说明的是,支持ECN功能的TCP源端在应对拥塞时,仍然采用传统的拥塞控制算法即:慢启动、拥塞避免、快速恢复等机制。9.2.4显式拥塞指示TCP包头部第13和14字节的新定义9.2.4显式拥塞指示TCP实体是否支持ECN功能要靠连接建立阶段双方协商来确定。如果发起连接请求的一方称为HostA,响应的一方称为HostB,连接协商支持ECN的过程如图9.2.5TCP的差错控制TCP是一个可靠的运输层协议。这里的可靠指数据是按序的、没有差错、也没有任何一部分丢失或重复。TCP使用差错控制提供可靠性。1.差错检测和纠正TCP中的差错检测是通过三种简单工具来完成的:检验和、确认和超时。

2.受损伤的报文段3.丢失的报文段

与受损报文段的情况完全一样。

4.重复的报文段

当含有同样序号的分组作为另一个收到的报文段到达时,目的TCP只要丢弃这个分组就行了。

5.失序的报文段TCP使用IP数据报的服务,而IP数据报是不可靠的无连接网络层协议。TCP对失序的报文段不确认,直到收到所有它以前的报文段为止。6.丢失的确认在TCP的确认机制中,丢失的确认甚至不会被源TCP发现,TCP使用累计确认系统。9.2.6TCP的定时机制重发机制是TCP协议中最重要和最复杂的问题之一。

关键在于如何设置定时器的时间,定时器的时间应该等于数据报文段往返时延,也就是等于从数据发出到收到对方确认所经历的时间。TCP采用了一种自适应算法来计算重发超时时间。这种算法把每次每个报文段发出的时间和收到此报文段确认的时间都记录下来,两时间之差称为报文段的往返时延。9.2.6TCP的定时机制TCP所面临的是完全不同的情况。发送者和接收者之间要跨过若干个网络,经过n个路由器。不但其网络环境是复杂的,而且网络状况还在不断地变化之中,并且,同一个连接内的不同报文段还可能选择不同的路由。其确认返回所需时间的概率密度函数接近于图中所示的曲线。记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延

RTT。每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT:平均往返时延RTT

(旧的RTT)

(1

)

(新的往返时延样本)在上式中,0

1,通常

取7/8。往返时延的自适应算法计时器的重传时间RTO计时器的重传时间应略大于上面得出的RTT,即:

RTO

RTT这里

是个大于1的系数。若取

很接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高。但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。因此TCP原先的标准推荐将

值取为2。计时器的重传时间RTO1988年,Jacobson提出一种动态的确定超时重发时间的方法,他提出β的变化要与确认到达时间的概率密度函数的标准偏差大致成比例,并建议采用平均偏差作为对标准偏差的粗略估计。计时器的重传时间RTO在这种算法中,需要保存另一个修正因子D(RTT与M之间的偏差),按照下列公式进行计算RTO:

RTT=αRTT+(1-α)MD=αD+(1-α)|RTT-M|RTO=RTT+4D其中,修正D的α与用于修正RTT的值可以相同也可以不同(有些程序中选择α=3/4)9.2.7TCP的传输连接管理TCP是面向连接的,在进行数据通信之前需要在两台主机间建立连接,通信完毕后要释放连接。TCP以连接为单位对数据的传输进行统一管理。TCP在为数据分配序号时对一个连接中的数据统一编号,不同连接的数据编号不相关;在分配缓存和计时器等资源时,也以连接为单位进行分配。传输层连接管理的主要工作包括传输连接的建立和释放。1.TCP连接的建立TCP在连接建立阶段主要完成下面工作:(1)决定双方的初始序号。(2)每一方确定对方的存在(可正常工作)。(3)双方协商一些参数(如最大TCP段长度、最大窗口等)。(4)对一些传输过程中需要用到的资源(如收发缓冲区、记录状态的变量等)进行分配。1.TCP连接的建立TCP采用“三次握手”方式来建立连接,这种方式可以有效地防止已失效的连接请求报文段突然传送到接收端。2.连接的释放当双方数据传送结束后,需要释放目前的连接。TCP在连接释放过程中释放如缓存等资源,同时不再继续收发数据。TCP的连接释放采用对称的释放方式,即双方都需要释放连接,并且双方任意一方都可以发出释放连接的请求。连接的释放需要逐步完成,首先停止一方对另一方的数据传输,然后再停止反方向上的数据传输。2.连接的释放一般来说,连接释放的过程采用“四次握手”的方式。第一次握手:当一方将停止数据传输时,需向对方发出释放连接的请求。第二次握手:对方收到此请求后,会发送确认报文段。发出请求的一方收到确认报文段后停止数据传输。此时,连接是“半关闭”的,即另一方仍可发送数据。第三次握手:当另一方要停止数据传输时,也需发出释放连接的请求。第四次握手:收到释放连接请求的一方回发确认报文段。当收到确认报文段后,整个连接释放完毕。2.连接的释放TCP连接的释放过程3.连接复位TCP可以请求将一条连接复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论