版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章运输层5.1运输层提供的服务5.2用户数据报协议(UDP)5.3传输控制协议(TCP)5.4实验运输层就是利用网络层提供的服务向应用层提供有效的、可靠的端到端即进程到进程之间的通信服务。所以运输层协议也被称为端到端协议(End-to-EndProtocol)。5.1运输层提供的服务5.1.1运输层的功能运输层的基本功能可以概括为以下几点。(1)实现端到端即进程到进程的数据通信。(2)数据的封装/解封。(3)可靠数据传输即差错控制,避免报文出错、丢失、延迟时间紊乱、重复、乱序。(4)流量控制、拥塞控制。(5)连接的建立与释放。5.1.2运输层端口与套接字运输层的重要功能之一就是提供了面向进程的通信机制。因此,运输层协议必须提供某种方法来标识通信应用进程。TCP/UDP协议采用端口(Port)概念来标识通信应用进程。端口用一个16位端口号进行标识。端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。端口分类:(1)熟知端口,其数值一般为0~1023。当一种新的应用程序出现时,必须为它指派一个熟知端口。(2)登记端口,其数值为1024~49151。这类端口是ICANN控制的,使用这个范围的端口必须在ICANN登记,以防止重复。(3)动态端口,其数值为49151~65535。这类端口是留给客户进程选择作为临时端口的。运输层最常用的熟知端口是TCP20文件传输协议(FTP)的数据连接、TCP21文件传输协议的控制连接、TCP23远程登录服务(Telnet)、TCP25简单邮件传输(SMTP)、TCP80HTTP、TCP110电子邮件接收(POP3)、UDP23域名服务(DNS)等。查看本机正在运行的服务和已经建立的连接,以及对应的端口,可以在命令窗口(运行cmd)下用netstat–an查看。应用层通过运输层进行数据通信时,TCP和UDP会遇到同时为多个主机上的应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。为了区分不同的网络应用服务,就必须把主机的IP地址和端口号进行绑定后使用。主机IP地址和端口号的绑定组成了套接字。主机IP地址、端口号和套接字的对应关系如图5-2所示。图5-2主机IP地址、端口号和套接字的对应关系5.1.3无连接的服务与面向连接的服务运输层的基本服务又可分成两种,分别是面向连接的服务和无连接的服务。面向连接的服务具有基于连接的流量控制、差错控制和分组排序功能,数据在这种服务方式下的传递是有序的和可靠的,但是这种服务的实现需要进行连接的建立、维护和终止,开销较大。面向连接服务以电话系统为模式。无连接的服务不能保证可靠地按顺序提交,开销较小。因此在选择这两种服务时要根据具体的应用需求来决定。TCP/IP的运输层有两个不同的协议:(1)用户数据报协议(UserDatagramProtocol,UDP)。(2)传输控制协议(TransmissionControlProtocol,TCP)。两种协议共同构成TCP/IP协议的运输层,如图5-3所示。图5-3运输层的两种协议5.2用户数据报协议(UDP)5.2.1
UDP特点UDP协议有以下主要特点。(1)UDP在传送数据之前不需要先建立连接。对方的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。(2)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但不允许数据有太大的时延。UDP正好适合这种要求。5.2用户数据报协议(UDP)5.2.1
UDP特点UDP协议有以下主要特点。(3)UDP是面向报文的。这就是说,UDP对应用程序交给的报文不再划分为若干个分组来发送,也不把收到的若干个报文合并后再交付给应用程序。应用程序交给UDP一个报文,UDP就发送这个报文;而UDP收到一个报文,就把它交付给应用程序。应用程序必须选择合适大小的报文。(4)UDP支持一对一、一对多、多对一和多对多的交互通信。用户数据报只有8字节的首部开销,比TCP的20字节的首部要短。5.2.2
UDP数据报结构UDP协议的数据报报文结构如图5-4所示。用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和的。图5-4
UDP协议的数据报报文结构5.3传输控制协议(TCP)TCP提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。5.3.1
TCP特点TCP协议有以下一些主要特点。(1)通信是全双工方式。(2)发送方的应用进程按照自己产生数据的规律,不断地把数据块陆续写入到TCP的发送缓存中。TCP再从发送缓存中取出一定数量的数据,将其组成TCP报文段(Segment)逐个传送给IP层,然后发送出去。(3)接收方从IP层收到TCP报文段后,先把它暂存在接收缓存中,然后让接收方的应用进程从接收缓存中将数据块逐个读取。(4)由于运输层的通信是面向连接的,因此TCP每一条连接上的通信只能是一对一的,而不可能是一对多、多对一或多对多的。(5)TCP的报文段的长度是不确定的。(6)TCP可以在发送自己的数据报文段的同时,捎带地把确认信息附上。为了提高通信传输效率,发送数据报文段的一方,可以连续发送多个数据报文段,而不需要在收到一个确认后才发送下一个报文段。5.3.2
TCP可靠传输的工作原理数据传输的可靠性就是要实现差错控制,避免报文在传输过程中出错、丢失、延迟时间紊乱、重复、乱序等。TCP协议实现可靠性传输的基本方法除用“检验和”进行报文差错检测外就是确认与重传、连接管理、流量控制和拥塞控制机制。以下介绍确认与重传机制,其他机制后续详述。1.确认与重传机制的基本原理确认与重传机制的基本思想是每一方都要为所传输的数据编号,编号以字节为单位。如果收到了编号正确的数据,那么就要给对方发送确认。在发出一个报文段后,就启动一个定时器,如果定时器时间到了但确认还没有来,那么就重传一次这个报文。2.数据传输的正常和异常情况及处理在确认与重传机制中,对于数据传输过程可能出现的几种情况及相应的处理如图5-5所示。图5-5
TCP数据传输的情况和处理1)正常情况。接收端正常接收到数据报文后向发送端发回确认报文,发送端收到后继续发送下一数据报文。2)报文段丢失。发送方定时器超时,重传。3)报文段里的数据出错。接收方丢弃出错报文段,不发送确认。发送方定时器超时,重传。4)确认报文在中途丢失,从而造成发送方无法收到确认的情况。发送方定时器超时,重传,接收方将收到重复的报文段。接收方直接丢弃重复报文段,同时发送确认。3.重传定时器在发送一个报文后,就会启动重传定时器。如果在定时器截止时间之前收到了确认,就将这个定时器复位。如果定时器时间到了,确认还没有收到,就重传该报文并将定时器复位。随着网络情况不断发生变化,重传定时器的时间设定也会跟随变化。5.3.3
TCP数据报结构TCP数据报结构如图5-6所示。图5-6
TCP数据报结构下面是对TCP数据报报文结构主要字段的解释。1.源端口和目的端口源端口和目的端口就是用于对应发送端和接收端应用进程的。这两个值加上IP首部中的源端IP地址和目的端IP地址就可以唯一确定一个TCP连接。2.序号在每条TCP通信连接上传送的每个数据字节都有一个与之相对应的序号,这是TCP协议实体的重要概念之一。以字节为单位递增的TCP序号主要用于数据排序、重复检测、差错处理及流量控制窗口等TCP协议机制,从而保证了传输任何数据字节都是可靠的。3.确认号确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。4.数据偏移数据偏移占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,单位是字。5.标志位TCP协议根据报文的不同功能设置6个标志位UAPRSF。U表示紧急位(URG)。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。A表示确认位(ACK)。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号字段无效。P表示推送位(PSH)。TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。R表示复位位(RST)。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。S表示同步位(SYN)。当SYN=1时,表示这是一个连接请求或连接接受报文。F表示终止位(FIN)。用来释放连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。6.窗口2个字节,由接收方通知发送方自己目前能够接收的数据量(由缓冲区空间限制),发送方据此设置发送窗口。窗口是TCP实现流量控制的依据,将在本章5.4节详细介绍。在数据传输过程中,发送方按接收方通告的窗口尺寸和序号发送一定的数据量。接收方可根据接收缓冲区的使用状况动态地调整接收窗口,并在输出数据段或确认号字段时捎带着将新的窗口尺寸和起始序号(在确认号字段中指出)通告给发送方。发送方将按新的起始序号和新的接收窗口尺寸来调整发送窗口,接收方也用新的起始序号和新的接收窗口大小来验证每一个输入数据段的可接收性。7.检验和检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,必须是由发送端计算和存储,由接收端进行验证的。8.紧急指针紧急指针占16位。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。9.选项选项字段长度可变。TCP只规定了一种选项,即最大报文段长度(MaximumSegmentSize,MSS)。10.填充填充字段是为了使整个首部长度是4字节的整数倍。5.3.4
TCP的流量控制与滑动窗口协议在建立连接时,TCP连接的每一端都会为这个连接分配一定数量的缓存。当收到正确的字节后,就会将数据放入缓存。如果发送方继续快速地发送数据,缓存就会被充满,最后溢出。因此需要有一种机制来控制发送方发送数据的速度,保证接收缓存不溢出,这种机制称为流量控制。上一节介绍的确认重传机制不仅实现了可靠数据传输,实际上也是一种简单的流量控制协议。发送方每发给接收方一个数据报文,就等待接收方确认收到的应答(ACK),在没有收到这个ACK之前,发送方不能发送第2个数据报。对发送方而言,如果在一段设定的时间内没有收到ACK,则重新发送数据报。虽然这种方式传输数据可靠,但对带宽的利用率不高。因此TCP协议按以下所谓滑动窗口方式一次发送一组数据报,更加有效地利用了带宽。(1)发送方可以连续发送窗口中的所有数据包而不必等待ACK,同时每发送一个数据包启动一个计时器。(2)接收方每当成功接收一个数据报时,要向发送方发送一个ACK。(3)对于发送方而言,每收到一个ACK则窗口将滑动一次。发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待接收方的确认。(4)累积确认:接收方对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都已正确收到了。(5)Go-Back-N(回退N):表示需要再退回来重传已发送过的N个分组。在图5-7中,一个窗口大小为5的滑动窗口,在连续发送5个数据报时不必等待应答信号。若在连续发送时收到了ACK1,则窗口向前移动一格,此时可以发送第6个数据报。图5-7滑动窗口正常变化如果第2个数据报在发送过程中丢失,而其他数据报都顺利发送,那么接收方只发出ACK2,对于成功接收到的第3、4、5、6个数据报,对发送方的应答也是ACK2,也就是说,接收方只对连续收到的数据报进行应答。发送方一直等待ACK3,直到定时器超时,重新发送第2个数据报。当第2个数据报成功发送给接收方后,接收方将直接产生并发送ACK7,发送方的滑动窗口移动到seq6,如图5-8所示。图5-8数据丢失滑动窗口停止变化,丢失的数据超时重传TCP协议利用首部中的窗口字段动态通知对方自己的接收缓存大小,使发送窗口根据接收方的调节而变化。窗口通告值增大时,发送方扩大发送窗口的大小,以便发送更多的数据。窗口通告值减小时,发送方缩小发送窗口的大小,以便接收方能够来得及接收数据。窗口通告值减小至零时,发送方将停止发送数据,直到窗口通告值重新调整为大于零的数值。5.3.5
TCP的拥塞控制拥塞(Congestion)是指互联网中的数据报过多,超过了中间节点(如路由器等)的最大容量,从而导致时延急剧增加,网络性能急速下降的现象。而解决拥塞问题所采用的机制和采取的措施称为拥塞控制(CongestionControl)。拥塞控制算法主要用于避免拥塞现象的发生。拥塞控制可以限制TCP向网络中注入数据的大小和速率。流量控制中的接收窗口值rwnd是接收方通告值,只反映接收方的接收能力,不能体现中间节点的处理能力。TCP引入拥塞窗口(CongestionWindow,cwnd),由发送方根据网络的情况设置,表示发送方允许发送的最大报文段。从流量控制的角度,发送窗口一定不能超过接收窗口,实际的发送窗口的上限值应该等于接收窗口(rwnd)与拥塞窗口(cwnd)中最小的一个:Min(rwnd,cwnd)。rwnd与cwnd中较小的一个限制发送端的报文发送速率。TCP通常综合采用慢开始、拥塞避免、快速重传和快速恢复等拥塞控制算法。下面只对慢开始和拥塞避免算法做简要介绍。慢开始算法要点:1)建立连接后,准备发送数据时,拥塞窗口的大小初始值设置为1(1个报文段);2)收到确认后,将拥塞窗口大小设为2;收到2个确认后,将拥塞窗口大小设为4;3)随后慢开始算法中的拥塞窗口cwnd会以指数方式快速增长,所以慢开始只是初值小,增长速度却很快。为避免cwnd过快增长引起网络拥塞,设置慢开始阈值(ssthresh)。cwnd<ssthresh时采用慢开始算法;cwnd>ssthresh时采用拥塞避免算法,减慢窗口增长速度。拥塞避免算法:每经过一个往返时延RTT,只有当发送方收到对所有报文段的确认后,才将拥塞窗口的大小增加一个报文段。拥塞避免算法按照线性方式缓慢增长,与慢开始算法相比,其增长速度放慢,直到网络出现拥塞为止。如图5-10是一个拥塞控制实例,初始设定阈值为16,前5次往返用慢开始算法,窗口的变化是1、2、4、8、16,接着改用拥塞避免算法,窗口的值依次变成17、18、19、20、21、22、23、24,是线性增长的,当窗口值达到24时出现超时,重新采用慢开始算法,但新的阈值改为出现超时时的窗口阈值24的一半12。图5-10拥塞控制实例1.连接的建立TCP连接采用三次握手方法,所谓三次握手是指通信双方三次交换报文,如图5-12所示。首先发送方向接收方发送报文,报文中的同步位SYN=1,表示向接收方提出连接请求,同时报文中的初始序号seq=x,是发送方为自己选取的初始序列号。接收方收到此报文后,若同意连接,作为第2次握手,接收方向发送方回送同步位SYN=1、确认位ACK=1、初始序列号seq=y,以及确认序号ack=x+1的报文段,对发送方的连接请求进行确认。最后一次握手,发送方向接收方发送确认位ACK=1、确认序号ack=y+1的报文段,对第2次握手时接收方发来的SYN=1的报文进行确认,完成连接的建立。通常接收方主机的TCP服务器进程被动地等待连接建立请求,而发送方主机的TCP客户进程主动地发出建立连接的请求。5.3.6
TCP的运输连接管理图5-12
TCP连接建立的过程下面的图5-13~图5-15是用协议分析软件Wireshark记录的TCP连接建立过程的实例。客户机IP地址是13,源端口是1139,服务器IP地址是1,目的端口是80。图5-13客户机向服务器发出连接请求(三次握手第一步SYN置位)图5-14服务器应答(三次握手第二步SYN、ACK置位)图5-15客户机应答(ACK置位)2.关闭连接同样也是基于网络服务的不可靠性,必须考虑到在释放连接时,可能由于数据包的失序而使释放连接请求的数据包会比其他数据包先到达目的端。此时,如果目标由于收到了释放连接请求的数据包而立即释放该连接,则势必造成那些先发而后至的数据包丢失。为了解决这些问题,可以把TCP看成是一对单工连接来处理连接的释放,每个单工连接独立地释放。当一方想释放连接时,向对方发送一个FIN=1的报文段,表示本方已无数据可发送。当FIN报文段被确认后,那个方向上的连接就关闭。但在另一个方向上数据还可以继续传输,直到该方向的连接也被关闭为止。两个方向上的连接都关闭后,TCP连接就被释放。其过程如图5-16所示。图5-16关闭连接的过程5.3.7
TCP连接管理协议缺陷TCP存在多种安全缺陷,会对网络造成潜在的危害。这里以SYNFlood攻击为例给以说明。这是一种利用TCP协议的固有缺陷对目标实施拒绝服务攻击(DoS)的一个典型实例。面向连接的TCP三次握手是SYNFlood存在的基础。TCP连接的三次握手过程如图5-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国大蒜种子数据监测研究报告
- 2024至2030年中国集中协调式交通信号控制机数据监测研究报告
- 2024至2030年中国草酸铵行业投资前景及策略咨询研究报告
- 2024至2030年中国组合式船用冷库数据监测研究报告
- 2024至2030年中国直流电动埋弧焊机行业投资前景及策略咨询研究报告
- 2024至2030年中国工业用装配式热电偶行业投资前景及策略咨询研究报告
- 2024至2030年中国地柜铝合金型材行业投资前景及策略咨询研究报告
- 农村医疗知识讲座
- 医疗管理职能介绍
- 《电工基础(第二版)》 课件 模块五 单相交流电路
- 比赛中的行为经济学
- 代持股份免责协议书
- 2024年成都电子信息产业功能区建设发展有限责任公司招聘笔试冲刺题(带答案解析)
- 做一个有温度的护士课件
- 锂离子电池制造中的安全问题与防范措施
- 生鲜超市供货超市供货服务方案
- 体育器材登记台账
- DB32T 4401-2022《综合医院建筑设计标准》
- 高考一轮复习理数课件第三章第三节导数与函数的极值最值
- 中高考姓名代码
- (正式版)HGT 4148-2024 工业用三正丙胺
评论
0/150
提交评论