net课件第4章运输层.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章运输层本章知识点运输层的功能和任务端口机制UDP协议特点、UDP报文结构TCP协议特点、TCP报文结构、TCP连接管理、可靠性传输、流量控制、差错控制概述运输层为应用进程提供逻辑通道。Internet局域网局域网路由器路由器应用层运输层AP1网络层数据链路层物理层应用层运输层AP2网络层数据链路层物理层逻辑通道概述网络层、运输层和应用层关系。Internet局域网局域网路由器路由器应用层运输层网络层数据链路层物理层datadataH4dataH4H3网络层数据链路层物理层网络层数据链路层物理层dataH4H3应用层运输层网络层数据链路层物理层dataH4H3datadataH4主机主机概述网络层不能直接为应用层服务,因为分组交换技术可能会带来数据的丢失、乱序、重复等问题。另外如何确定应用程序的地址也是网络层所不能解决的。运输层的功能运输层要为应用层提供一条逻辑通道,好像在两个应用进程间连接了一个管道,数据从管道的一端进去,从另外一端出来。运输层的主要功能应用进程寻址提供数据的可靠传递流量控制拥塞控制TCP/IP的运输层在TCP/IP协议体系中,运输层有两个协议:传输控制协议(TransferControlProtocol,TCP)用户数据报协议(UserDatagramProtocol,UDP)TCP/IP的运输层UDP只提供应用进程寻址和简单的差错检测功能,它不能向应用层保证数据传输的可靠性。TCP除了应用进程寻址的功能外,还能为应用层提供可靠的数据传输服务,并具有流量控制和拥塞控制的能力。端口机制——应用进程寻址运输层是为应用层服务的,多个应用层协议可能会使用同一个运输层协议。运输层如何将收到的数据交给正确的应用层进程?TCP/IP提供了端口机制来解决这个问题。端口机制端口是一种软件结构,是运输层协议和应用层协议交互时的接口,每个端口有一个唯一的端口号,并且有相应的输入和输出缓存。一个应用进程通过系统调用可以绑定到运输层协议(UDP或TCP)的一个端口上。端口和应用进程是一一对应的,通过端口号能确定主机内的一个应用进程。端口机制AP1AP2运输层协议Data1Data2AP3AP4运输层协议Data1Data2Data2HData1Hport1port2port3port4发送数据时,传输层首部中包含源端口号(发送方进程端口号)和目的端口号(接收方进程端口号)。端口机制接收方的运输层根据目的端口号将数据交给正确的应用进程。对于知名的服务,如Web服务、FTP服务等,使用的运输层协议和端口号都是固定的,这些端口称为熟知端口,其数值一般都小于1024。而对于客户进程,操作系统通常会随机给它分配一个大于1024的端口号。端口机制TCP/IP协议体系中,每个端口都有一个端口号,这个端口号是一个16比特的数字,所以最多可以有64K个端口。TCP和UDP的端口是各自独立的,TCP可以有64K个端口,UDP也可以有64K个端口。UDP用户数据报协议(UDP)是TCP/IP协议体系中运输层协议之一,在RFC768中定义。UDP为应用层提供了无连接的数据传输服务,利用端口机制为应用程序提供多路复用和多路分解,并支持简单的差错检测。UDP不能向应用层提供可靠的数据传输,也没有流量控制和拥塞控制的功能。UDP数据报UDP接收应用层的数据,加上UDP首部后封装成UDP数据报,UDP数据报是UDP的传输单元。应用层数据UDP首部应用层数据UDP首部IP首部UDP数据报IP报文UDP特点UDP不提供可靠的数据服务,数据可能会丢失、乱序和重复。UDP采用无连接的工作方式,UDP比较简单,应用层的数据能够被迅速、及时地发送出去。UDP的效率比较高,适合于对实时性要求高,但能够容忍部分数据丢失的应用,如视频会议,音频数据传输等。使用UDP的应用层协议应用应用层协议运输层协议域名解析DNSUDP网络管理SNMPUDP路由信息交换RIPUDP简单文件传输TFTPUDP网络文件系统NFSUDPIP电话专有协议UDP流式多媒体专有协议UDPUDP数据报格式UDP数据报由UDP首部和其封装的应用层数据组成,是UDP协议的传输单元。应用层数据UDP首部UDP数据报源端口目的端口22长度校验和22字节UDP首部UDP数据报格式源端口是指发送方应用进程对应的端口号。目的端口是指接收方应用进程对应的端口号。长度字段的值给出了UDP数据报(包括首部和数据)的字节数。校验和用来检测UDP报文在传输中的错误。UDP报文的校验是可选的,如果校验和的值为0,则表示没有校验。UDP的差错检测UDP提供了首部校验和字段来检测UDP数据报在传输过程中的错误。一旦检测出错误,UDP会丢弃出错的UDP数据报。UDP首部校验和的计算比较特殊,在计算校验和之前,要在UDP报文前面添加一个伪首部。应用层数据UDP首部目的IP地址4417UDP长度12字节0源IP地址1伪首部源端口目的端口长度校验和TCPTCP是TCP/IP协议体系中运输层的重要协议。TCP为应用层提供面向连接的、可靠的数据传递服务。在提供数据可靠性的同时,TCP还为应用层提供了全双工的数据传输服务。TCP还具有流量控制和拥塞控制的功能。TCP报文段的组成和封装TCP接收应用层的数据,添加TCP首部后形成TCP报文段。TCP报文段需要被下层的IP协议封装,发送到目的地。应用层数据TCP首部TCP报文段IP报文应用层数据TCP首部IP首部TCP报文段结构源端口(src_port)序号(seq)确认号(ack)窗口大小FINSYNRSTPSHACKURG保留字段数据偏移目的端口(dst_port)校验和紧急指针可选项应用层数据TCP首部32比特20字节长度可变填充项TCP连接TCP提供面向连接的传输服务。利用TCP通信的两个应用进程要首先建立连接。这个连接是软件意义上的连接,并不是一条实际的物理线路。建立连接的目的是使通信双方在开始传输数据前建立联系,使双方都确定对方愿意与之通信;同时在建立连接的过程中传递和协商一些必要的参数(如发送字节的起始编号和MSS),为后面的数据传递打下基础。建立连接的过程是两端的TCP交换一些特殊的TCP报文段来完成的。使用TCP传输数据的过程1.建立连接。2.传输应用层数据。3.关闭连接。TCP建立连接过程TCP建立连接的过程称为“三次握手”(three-wayhandshanke)src_port=p1,dst_port=p2SYN=1,seq=xsrc_port=p2,dst_port=p1,SYN=1,ACK=1,seq=y,ack=x+1src_port=p1,dst_port=p2ACK=1,seq=x+1,ack=y+1客户端服务器1.CLOSEDLISTEN2.SYN_SENDSYN-RECEIVED3.ESTABLISHEDSYN-RECEIVED4.ESTABLISHEDESTABLISHEDTCP关闭连接过程FIN=1,seq=xACK=1,seq=y,ack=x+1FIN=1,seq=y,ack=x+1客户端服务器ACK=1,seq=x+1,ack=y+1保活定时器一个TCP连接建立后,可能会长时间处于空闲状态,没有任何数据交换。服务器需要知道客户端是否已经关闭或是重启,需要确认是否有必要继续保留这个连接。服务器通过设置保活定时器(keepalivetimer)来达到这个目的。保活定时器保活定时器的时间一般设为2小时。如果服务器在2小时内收到了客户端的信息,那么定时器就复位,重新计时。如果2小时内没有收到任何数据,那么服务器TCP就会给客户端发送一个探测报文。保活定时器客户端可能处于以下的4个状态:(1)客户端依然活跃,并且收到了服务器的探测报文。客户端的TCP便会发出响应报文,使服务器知道自己仍然处于活动状态。服务器的TCP会将保活定时器复位,保持这个连接。(2)客户端已经崩溃,并且已经关机。此时服务器TCP不会收到任何响应。然后服务器TCP每隔75秒发送一个探测报文,如果发送了10个探测报文仍没有回应,那么服务器就关闭连接,释放相应的资源。保活定时器客户端可能处于以下的4个状态:(3)客户端已经重启,这时客户端的TCP不会保留原来连接的信息。当收到服务器的探测报文后,客户端TCP会发送一个复位(RST)的响应,服务器收到后便会关闭连接。(4)客户端依然活跃,但是始终都无法收到服务器的探测报文(可能是由于网络拥塞造成的)。这种情况同(2)类似,服务器收不到响应,也会关闭连接。数据的可靠性传输TCP报文段需要封装在IP的报文中才能到达目的地。应用层协议TCPIP应用层报文IP首部应用层报文TCP首部应用层报文TCP首部IP首部应用层报文TCP首部应用层报文应用层报文TCP首部应用层协议TCPIP数据的可靠性传输IP协议不能提供可靠的数据传输服务,IP报文可能会丢失、重复或者乱序。TCP报文段也会遇到同样的问题。TCP主要使用确认、重传机制实现数据的可靠性传输。确认和重传机制每一方的TCP都要为所传输的数据编号,编号以字节为单位。如果收到了编号正确的数据,那么就要给对方发送确认。确认也可能在中途丢失,从而造成对方无法收到确认的情况。在发出一个TCP报文段后,就启动一个定时器,如果定时器时间到了但确认还没有来,那么就重传一次这个报文。确认和重传机制seq=1Data(400字节)seq=401Data(400字节)ack=801seq=801Data(400字节)seq=801Data(400字节)丢失超时ack=1201时间轴时间轴发送方接收方数据出错的四种情况和处理(1)TCP报文段丢失。发送方定时器超时,重传。(2)TCP报文段里的数据出错。接收方丢弃出错报文段,不发送确认。发送方定时器超时,重传。(3)TCP报文段的重复。接收方直接丢弃重复报文段,同时发送确认。(4)TCP报文段的乱序。TCP通常会选择缓存这些乱序的报文,将其排序再上传给应用进程。重传定时器在发送一个TCP报文后,就会启动重传定时器。如果在定时器截止时间之前收到了确认,就撤销这个定时器。如果定时器时间到了,确认还没有收到,就重传该报文并将定时器复位。随着网络情况不断在发生变化,重传定时器的时间设定也会跟随变化。重传定时器计算RTT4*RTTT重传估计偏差7/8RTTRTT(1)RTT估计估计样本RTT1RTTRTTRTT偏差偏差估计样本0.25推荐值为流量控制在建立连接时,TCP连接的每一端都会为这个连接分配一定数量的缓存。当收到正确的字节后,就会将数据放入缓存。如果发送进程发送数据的速度超过接收进程取走数据的速度,那么接收缓存就会被充满,最后溢出。需要有一种机制来控制发送方发送数据的速度,保证接收缓存不溢出,这种机制称为流量控制。流量控制TCP利用首部中的窗口字段将自己接收缓存大小通知对方,从而保证数据不会溢出。流量控制接收缓存空02048seq=01024字节数据ack=1024,WIN=10241024空应用进程取走512字节seq=10241024字节数据1536空ack=2048,WIN=512seq=2048100字节数据1636空512空ack=2148,WIN=412应用进程写入1024字节应用进程写入1024字节应用进程写入100字节接收方发送方流量控制中的两个问题零窗口通告使用坚持定时器解决。糊涂窗口症状解决方案:接收方不发送接收窗口太小的通告,等到接收缓存有了合适的空余(如一半空闲)再发送窗口更新的通告。发送方也要暂时缓存一下要发送的数据,等数据达到合适的数量(如至少达到接收方窗口的一半)再发送出去。拥塞当大量的数据涌入网络时,网络中的部分路由器就会因为过载而被迫丢弃一些分组,就产生了拥塞。发送方会因为定时器超时重传那些被路由器丢弃的分组,从而

1 / 45
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功