版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 六 章,传 输 层,本章主要内容,传输层的功能 传输层协议要素 Internet的传输层: 用户数据报协议(UDP) 传输控制协议(TCP) Berkeley Sockets,1 传输层的功能,传输层提供进程进程的数据交付服务: 为运行在不同主机上的应用进程提供逻辑通信功能,使得从应用程序看来这些主机是直接相连的。 传输实体 传输层上实现传输服务的硬件或软件。 传输实体可能位于操作系统内核、单独的用户进程内、应用程序库中或网络接口卡上。,网络层、传输层和应用层的关系,设置传输层的两个目的,为端系统上运行的多个进程提供多路复用和解多路复用的功能: 多路复用(multiplex):在源主机上,
2、多个进程的数据被封装在不同的数据包中送入网络; 解多路复用(demultiplex) :在目的主机上,从数据包中取出的数据被交给相应的进程处理。 为应用进程提供所需的数据传输服务: 面向连接的服务 无连接服务,传输层服务接口,传输服务原语(transport service primitives): 传输层向应用程序提供的一组操作,以方便应用程序调用传输层服务。 在TCP/IP协议栈中,传输层服务接口称为套接字(socket),是目前网络应用编程接口的工业标准。,2 传输层协议要素,传输层协议要解决的主要问题: 编址:一个进程必须显式指出它要与之通信的另一个进程。 建立连接和释放连接:由于数据
3、包在穿过通信子网时会丢失、重传、失序,这使得可靠地建立和释放传输连接非常困难。 流量控制和存储管理。,2.1 传输层编址,为指明将数据包交给哪个进程处理,每个进程需要一个标识。 在网络环境中标识进程的方法是为每个进程指定一个传输地址,源进程向目的进程的传输地址发送消息,目的进程在自己的传输地址上接收消息。 传输地址是传输层通信的端点,其一般性的术语称为传输服务访问点(transport service access point,TSAP)。,TSAP、NSAP和传输实体的关系,每个TSAP上绑定一个应用进程,应用进程通过各自的TSAP调用传输层服务。 传输实体通过本地的NSAP调用网络层服务,
4、与远程的对等传输实体通信。,举例,源进程如何获知目的进程的TSAP?,在客户-服务器模式中,客户进程如何知道服务器进程的TSAP? 常用的标准服务:使用众所周知的地址 不常用的服务:使用进程服务员 需要特殊硬件的服务:使用目录服务 TSAP只是一种抽象,通常可由一个消息队列实现。,进程服务员的使用,2.2 建立传输连接,当应用程序要求传输层保持消息发送顺序时,传输层必须提供面向连接的服务。 所谓建立连接,就是在收发两端为通信过程分配好资源,并初始化相关的数据结构。 在一个不可靠的网络中可靠地建立传输连接是一件困难的事情。,问题之一:过时消息的干扰,重复的连接请求及响应消息对正常的连接建立过程产
5、生干扰。 解决办法之一: 给每个连接指定一个连接标识,每个主机记录已用过的连接标识。 资源消耗大,不可靠。 解决办法之二: 限制每个数据包的寿命。,问题之二:起始序号的选取,主机崩溃后可能丢失所有的状态信息,包括每个连接上要分配的下一个TPDU序号。主机恢复工作后,新连接上的TPDU序号可能和过时连接上的序号相同,产生混淆。 解决办法之一: 主机重启后至少等待时间T再建立连接,确保崩溃前的分组均已消失。 解决办法之二:基于时钟的起始序号选取算法 每个主机使用一个时钟,以二进制计数器的形式工作,每隔T计数器加1。当一个连接建立时,以计数器当前值的最低k位(TPDU的序号长度)作为起始的TPDU序
6、号。 该方法确保连接的起始序号随时间单调增长。,问题之三:序号的增长速度,主机发送速度过快或过慢,都会导致主机崩溃前后的序号空间发生重叠。 解决办法: 选取较小的T,确保发送序号的增长速度不会超过起始序号的增长速度。 选择较长的TPDU序号,确保序号回绕的时间远大于T。,问题之四:如何可靠地传递起始序号?,可靠建立传输连接的三次握手算法,2.3 释放传输连接,不对称释放:任何一方释放连接,连接即被释放(即分配给连接的资源被回收)。,释放传输连接(续),对称释放: 一条传输连接被看成是两个方向上的单工连接,一方释放连接只是表示它数据发完了,但它仍可以在另一个方向上接收数据。 两个方向均释放连接,
7、连接才能被释放。,两军问题,三次握手法释放连接,三次握手法释放连接(续),三次握手法释放连接(续),正常释放: 主动方发出DR,响应方收到一次DR。 异常: 主动方发出DR,响应方从未收到DR,形成半开的连接。 异常处理: 引入不活动定时器,定时器超时(长时间未收到数据)后自动释放连接。 引入哑TPDU,处理长时间没有数据发送的情形。,2.4 流量控制,流量控制是一种由接收端控制发送速度的反馈机制,通常采用滑动窗口机制实现。 数据链路层和传输层上的滑动窗口机制: 数据链路层上的滑动窗口机制采用固定缓冲区分配策略(缓冲区大小及数量都固定),这在传输层上做不到。 数据链路层上发送端和接收端都必须缓
8、存,而在传输层上有多种缓存方案可供选择。,传输层上的缓存策略,发送方缓存还是接收方缓存? 若通信子网是不可靠的,发送方一般必须缓存,而接收方可以选择: 缓存:长时间、大数据量的通信业务,如文件传输 不缓存:低速且数据量较小的交互式会话应用 若通信子网是可靠的,视接收方为连接预留的缓冲空间大小,发送方可以选择: 缓存:若接收方没有预留足够的缓冲空间 不缓存:若接收方预留了足够的缓冲空间,缓冲区分配方案,各种缓冲区分配方案: 以TPDU为单位还是以连接为单位分配? 缓冲区大小固定还是可变? 缓冲区静态分配还是动态分配? 动态缓冲区分配: 发送端可以向接收端请求需要的缓冲区数量。 接收端可以根据实际
9、情况分配并动态调整预留的缓冲空间,并显式通知发送端。,动态缓冲区分配示例,3 用户数据报协议UDP,UDP的服务,UDP的主要作用是向应用程序提供使用IP服务的接口,并利用端口号解复用多个应用进程。 UDP只提供检错功能,不负责出错重传和流量控制等功能。 UDP提供的是一种不可靠、无连接的服务。 UDP的优点: 延迟小:不需要建立连接 资源占用少:不需要维护状态 通信开销小、包头开销小,UDP的应用之一:远程过程调用RPC,RPC(remote procedure call)的基本思想 允许调用远程计算机上的过程,并使这种调用看起来象本地调用一样,方便客户-服务器应用软件的编写。 RPC的实现
10、 客户进程绑定到一个客户桩(client stub),服务器进程绑定到一个服务器桩(server stub); 客户进程调用客户桩,参数通过压栈的方式传递; 客户桩将参数封装成一个消息,执行一个系统调用发送消息; 内核通过调用传输层服务将消息发送到服务器桩; 服务器桩用传过来的参数调用服务器例程,将返回的结果封装到一个消息中,执行一个系统调用将消息发送给客户桩; 客户桩将结果返回给客户进程。,RPC执行过程,UDP的应用之二:实时多媒体传输,多媒体通信要求实时和按顺序交付数据,但能容忍少量数据丢失。 从本质上说,TCP和UDP都不适合多媒体通信: TCP:可保证顺序,但实时性不好(差错控制,拥
11、塞控制)。 UDP:实时性好,但不保证顺序。 目前的解决方案是在UDP上面再运行一个RTP(Real Time Protocol),解决包序维持等问题。,RTP的位置,RTP头,The RTP header.,4 传输控制协议TCP,TCP提供的服务 TCP协议 TCP段结构 TCP连接的建立和释放 TCP 流量控制 TCP拥塞控制 无线TCP,4.1 TCP提供的服务,TCP协议被设计为在不可靠的网络中提供可靠的、有序的字节流服务。 UDP提供的是数据报服务: 应用程序的每一次输出被封装到一个UDP包中传输;每收到一个UDP包,接收端从包中取出数据交给应用程序。因此,UDP保留报文的边界。
12、TCP提供的是字节流服务: 应用程序的每一次输出被不加区分地放入发送缓冲区中,TCP实体将缓冲区中的数据划分成不超过64KB的段,每一段封装在一个IP包中传输。 接收端从收到的TCP段中取出数据,按字节顺序不加区分地放入接收缓冲区中,在适当的时候交给应用程序。因此,TCP不保留报文的边界。,TCP不保留报文的边界,(a) Four 512-byte segments sent as separate IP datagrams. (b) The 2048 bytes of data delivered to the application in a single READ CALL.,TCP服务
13、模型,TCP使用连接进行通信。 每条TCP连接有两个端点(称套接口,socket): 每个套接口使用一对整数来标识,其中host是主机的IP地址,port是该主机上TCP的端口号(TSAP)。 如 和 唯一标识一条TCP连接。 由于TCP使用两个端点来识别连接,因此一个套接口可以用于多个连接,如服务器进程可以在一个套接口上同时为很多客户进程服务。 TCP连接是全双工的,数据可以在两个方向上同时传输。 TCP连接是点到点的,即每条连接只能有两个端点,所以TCP不支持多播或广播。,端口与服务,小于1024的端口号称为众所周知的端口号,保留给标准服务使用。 UNIX使用一个Internet守护进程i
14、netd监听连接请求: 系统启动时只有inetd在多个端口上监听连接请求。 当对某个服务的连接请求到来时,inetd创建该服务的一个守护进程为客户服务。 inetd从一个配置文件中获悉它要监听的端口号,因此管理员可以让系统在繁忙的端口(如80)上使用永久的守护进程,而让inetd监听其余的端口。,4.2 TCP协议,TCP的传输单元称为段(segment)。 TCP段的组成: 20字节的固定头 (可能的)选项头 零个或多个数据字节(每个字节都有一个32比特的序号) TCP使用滑动窗口协议传输数据。,(1)TCP段结构,TCP伪头结构,Maximum Segment Size(MSS),MSS指
15、TCP段允许携带的最大载荷长度,受IP包数据域长度的限制: 若IP包的最大长度为L,则MSS = L20(IP固定头)20(TCP固定头) 为避免数据报分片和重组的开销,也有人提出基于路径MTU设置MSS: MSS = MTU 40 以太网的MTU为1500,所以常见的MSS = 1460字节,重要的TCP选项,MSS: 建立连接时,每个主机可以声明自己能够接受的MSS。 该选项缺省为536字节(所有路由器实现必须支持576字节的IP包)。 窗口比例因子(window scale): 建立连接时,双方可以协商一个窗口比例因子。 实际接收窗口大小 = window size * 2window
16、scale。 选择重传: 最初的TCP实现采用go back n滑动窗口协议。 后来引入NAK,允许接收端在选项中指明要重发的段。,(2)建立和释放TCP连接,TCP使用三次握手建立连接: H1发送SYN=1、ACK=0的TCP段,给出自己的起始连接序号x。 H2发送SYN=1、ACK=1的TCP段,给出自己的起始连接序号y,并对x进行确认。 H1发送SYN=0、ACK=1的TCP段,对y进行确认。 起始序号采用基于时钟的方法确定,T = 4s。,释放TCP连接,TCP采用对称释放法释放连接: H1发送FIN=1的TCP段; H2发送确认,一个方向的连接释放。 H2发送FIN=1的TCP段;
17、H1发送确认,另一个方向的连接释放。 中间两个TCP段也可以合成一个。,SYN-Flood攻击,TCP实现的问题: 服务器在收到SYN段后,发送SYN+ACK段; 若未收到ACK段,服务器超时后重试; 服务器等待一段时间(称SYN超时)后丢弃未完成的连接,SYN超时的典型值为30秒120秒。 SYN-Flood攻击: 攻击者采用伪造的源IP地址,向服务器发送大量的SYN段,并且不会发出第三个ACK段。 服务器为维护一个非常大的半连接表而消耗很多的资源,并导致请求队列溢出,无法处理正常客户的连接请求。,端口扫描,扫描程序利用与目标机器建立或释放TCP连接过程中获得的响应消息来收集信息。 典型的T
18、CP端口扫描过程如下: 发送端向目标端口发送TCP连接请求(SYN=1)。 若收到SYN=1、ACK=1的TCP段,表明该目标端口上有服务在监听,否则表明没有服务在运行。 发送端向目标端口发送释放连接的请求(FIN=1)。 缺点: 扫描行为被日志记录 大多数防火墙会过滤由外部主动发起的TCP连接请求,TCP半程扫描,TCP半程扫描过程如下: 向目标端口发送SYN段 若收到SYN+ACK段,表明有服务在监听 发送RST=1的TCP段(复位连接) 优点: 不会被日志记录(不是一个完整的TCP连接过程) 缺点: 仍然可能被防火墙过滤,FIN扫描,FIN扫描过程如下: 发送端向目标端口发送释放连接的请
19、求(FIN=1)。 若收到ACK=1、RST=1的TCP段,表明目标端口上没有服务在监听;若没有响应表明有服务在监听。(RFC 973的规定) 优点: 防火墙不会过滤 缺点: 有些系统的实现不符合RFC 973规定,如在Microsoft的TCP实现中,总是返回ACK=1、RST=1的TCP段。,(3)TCP的流量控制,TCP使用滑动窗口协议进行数据传输: 发送方每发送一个段后,启动一个定时器; 接收方收到后返回一个包含确认序号的段,确认序号指出接收方准备接收的下一个字节序号; 发送方定时器超时后重发这个段。 TCP采用可变长度的滑动窗口进行流量控制: 接收方在返回给发送方的段中报告接收窗口的
20、大小(TCP头中的window size域),该字段表示发送方从确认序号开始可以发送的字节数。,可变长滑动窗口示例,当窗口为0时一般必须停止发送,但以下两种情况例外: 可以发送紧急数据,例如终止在远端计算机上的运行进程。 可以发送一个1字节的段,以触发一个包含接收窗口大小的响应。,零窗口通告和坚持定时器,当发送端收到零窗口通告时,启动一个坚持定时器(persistence timer)。 定时器超时后,发送端发送一个零窗口探测报文段(序号为上一个段中最后一个字节的序号)。 接收端在响应的报文段中通告当前窗口大小。 若发送端仍然收到零窗口通告,重新启动定时器。,传输效率的考虑,发送端: TCP并
21、不要求发送端在收到应用程序的数据后就立即发送。 发送端可以将数据存放在发送缓冲区中,等累积到一定数量之后再组成TCP段发送,以提高传输效率。 接收端: TCP也不要求接收端在收到数据后立即发送确认。 接收端可以推迟一小段时间,以便将确认捎带在一个返回的数据段中。,糊涂窗口综合症(silly window syndrome),接收方不断发送具有微小增量窗口的通告,引起发送方不断发送小数据分组,导致大量带宽浪费。 当收发双方的处理速度严重失衡时会出现这种现象。,接收方启发式策略,接收端避免糊涂窗口综合症的策略: 通告零窗口之后,仅当窗口大小显著增加之后才发送更新的窗口通告。 显著增加:窗口大小达到
22、缓冲区空间的一半或者一个MSS,取两者的最小值。 实现该策略的两种手段: TCP对收到的报文段进行确认,但要等到窗口大小满足以上策略要求时再通告新的窗口大小。 当窗口大小不满足以上策略时,推迟发送确认。(TCP标准推荐采用推迟确认),推迟确认,推迟确认的优点: 能够降低通信量。 推迟确认的缺点: 当确认延迟太大时,会导致不必要的重传。 TCP使用确认的到达时间来估计往返时间,推迟确认造成估计值的混乱。 TCP标准规定: 推迟确认的时间限度最多为500ms。 接收方至少每隔一个报文段使用正常方式进行确认。,发送方启发式策略,发送方避免糊涂窗口综合症的策略: 发送方应积聚足够多的数据,以防止发送太
23、短的报文段。 发送方TCP应该等待多长时间? 如等待时间不够,报文段会太短。 如等待时间过久,应用程序的时延会太长。更重要的是,TCP不知道应用程序会不会在最近的将来生成更多的数据。,Nagle算法,Nagle算法: 当应用数据到来时,组成一个TCP段发送(那怕只有一个字节)。 在收到确认之前,后续到来的数据放到缓冲区中,等到数据足以填满一个最大长度的段,或上一次传输的确认到来(取两者的最小时间),用一个TCP段将缓存的字节全部发走。 Nagle算法的优点: 适应不同的网络延时、不同的MSS以及不同应用程序速度的组合情况。 常规情况下不会降低网络的吞吐量。,流量控制的总结,接收端使用显式的窗口
24、通告来通知可用的缓存空间大小。 接收端在发送了零窗口通告后,仅当窗口大小显著增加后,才发送更新的窗口通告。 发送端使用Nagle算法确定发送时机,并使用接收窗口来限制发送的数据量。,(4)TCP拥塞控制,TCP拥塞控制的基本思想是让每一个发送方根据自己感知的网络拥塞程度来调整发送速度: 如果发送方感觉到从它到目的节点的路径上没什么拥塞,就增加发送速度; 如果感觉到有拥塞,就降低发送速度。 问题: 发送方如何知道从它到目的节点的路径上发生了拥塞? 当发送方检测到拥塞时,采用什么算法来调整发送速率? 发送方如何限制发送速率?,如何检测拥塞?,TCP利用段的超时事件来检测拥塞,即当发送端发送的某个段
25、发生了超时,就认为网络中出现了拥塞。 采用这种假设的原因是: 对于端系统而言,拥塞表现为确认不能按时到达。 对于固定(有线)网络而言,超时大多是由拥塞造成的。,如何限制发送速率?,TCP使用拥塞窗口和发送窗口一起限制发送速率: 接收窗口反映接收端的缓冲能力 拥塞窗口反映网络当前的处理能力 发送窗口等于接收窗口和拥塞窗口的较小值,如何调整发送速率?,TCP拥塞控制算法包括三个部分: 加性增/乘性减原则 慢启动算法 快速重传和快速恢复机制,加性增/乘性减(AIMD),乘性减(multiplicative decrease): 每发生一次超时,就将当前拥塞窗口减半(最小不低于1个MSS)。 因此,当
26、发送端持续出现超时时,拥塞窗口按指数递减,以显著减少通信量。 加性增(additive increase): 当拥塞窗口内的段都在预定的时间内被确认(没有超时发生)时,拥塞窗口增大一个MSS。 在实际操作时,每当收到一个确认,就在拥塞窗口上加一个增量。 若拥塞窗口用CongWin表示,则每次收到一个确认后,拥塞窗口的增量按如下公式计算:= MSS (MSS/CongWin)。,慢启动(slow start),在刚建立的TCP连接上,发送端以一个MSS作为拥塞窗口的初始值。 每当收到一个确认,就将拥塞窗口增加1个MSS,直至发生超时。 因此,初始阶段拥塞窗口是按指数增长的。,慢启动在两种情况下使
27、用,连接刚建立的时候 超时后重新启动数据传输的时候,因为这时通常有一个较大的接收窗口: 当一个TCP段丢失后,接收端在某个时间点后不再发送确认(零窗口通告除外),也不再接收新的数据。 发送端在发送完规定数量的数据段后停下来等待确认,至超时发生;这期间没有数据发送。 在此期间,接收方应用程序可能取走大部分甚至全部的数据,并通告一个较大的接收窗口。,拥塞避免,1)发生超时时,将当前拥塞窗口的一半作为拥塞阈值。 2)将拥塞窗口初始化为1个MSS,使用慢启动发送。 3)当拥塞窗口达到阈值时,按照加性增继续增加拥塞窗口(称拥塞避免) ,直至发生超时,回到1)。 4)若在拥塞窗口达到阈值前就发生了超时,回
28、到1)。,快速重传,试图区分是单纯的段丢失还是拥塞,并加快丢失段的重发: 接收方对于每个到达的TCP段都要给予响应。 对于未按正常顺序到达的段,接收并缓存,然后发送一个重复确认(将上一次发过的确认信息再发一次)。 发送方在收到3个重复确认后开始重传丢失的段。 接收方收到重传的数据段后,对已正确接收的数据发送累积确认。 若发送方在收到3个重复确认前发生超时,按超时事件处理。,快速恢复,发送端在收到3个重复确认后进入拥塞避免阶段(而不是慢启动阶段)。 具体来说, 当发送端收到少于3个重复确认时,拥塞窗口和拥塞阈值均不变。 当收到第3个重复确认时,将拥塞阈值设为拥塞窗口的一半,并令拥塞窗口等于拥塞阈
29、值,此后拥塞窗口按线性增长。,TCP拥塞控制算法的仿真结果,(5)TCP重传定时器,TCP主要使用超时来触发重传: TCP实体每发送一个TCP段,就启动一个重传定时器,定时器超时后重发该段。 重传定时器的值对TCP的性能影响很大: 该值设置太大,导致较长的端到端延迟。 该值设置太小,导致许多不必要的重传;更为严重的是会启动拥塞控制机制,导致发送速率急剧下降。 问题: 重传定时器的值(超时间隔)设为多长合适?,Round Trip Time(RTT),直观上考虑,超时间隔应与TCP段的平均来回时间及方差有关。 来回时间的估算: TCP对每条连接维护一个变量RTT,这是对来回时间的估计值。 在发送了一个段后启动重传定时器,若在超时前得到确认,终止定时器,计算出当前的来回时间M。 根据以下公式修正RTT值,其中是比例因子: RTT = * RTT + (1-) * M,RTT的平均偏差,TCP实体维护另一个变量D,它是来回时间的测量值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆财经学院《物流工程学》2022-2023学年第一学期期末试卷
- 重庆财经学院《美学基础》2021-2022学年第一学期期末试卷
- 茶叶公司公司管理方案
- 茶业小店经营方案
- 重庆财经学院《大数据仓库与建模技术》2023-2024学年期末试卷
- 白沟阻燃型聚苯板施工方案
- 仲恺农业工程学院《文化市场营销学》2021-2022学年第一学期期末试卷
- 灿瑞科技深度研究报告
- 仲恺农业工程学院《食品工厂机械与设备》2023-2024学年第一学期期末试卷
- 测距传感器课程设计
- 广西2024年广西交通职业技术学院招聘笔试历年典型考题及考点附答案解析
- YYT 0654-2017 全自动生化分析仪
- 新兴材料对造纸业的影响
- 2024年05月泰山职业技术学院引进博士研究生20人笔试历年高频考点(难、易错点)附带答案详解
- 2024年高考数学 直线与圆(解析版)
- 临时入场人员安全告知书
- 新融合大学英语(II)智慧树知到期末考试答案章节答案2024年江西理工大学
- 抖音直播知识培训考试题库(含答案)
- 2024年广东省广州市荔湾区中考一模英语试题(无答案)
- MOOC 数学文化十讲-南开大学 中国大学慕课答案
- (高清版)WST 347-2024 血细胞分析校准指南
评论
0/150
提交评论