第6章 传输层_第1页
第6章 传输层_第2页
第6章 传输层_第3页
第6章 传输层_第4页
第6章 传输层_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 传输层6.1 传输层概述 6.2 UDP 协议6.3 TCP协议 6.1 传输层概述 6.1.1 传输层的位置 6.1.2 传输层的服务 6.1.3 传输层的相关机制 6.1.4 TCP/IP体系中的传输层 6.1.1 传输层的位置传输层的位置 图6.1给出了传输层在计算机网络体系及操作系统中所处的位置,这一特殊的位置决定了传输层在网络系统中的核心作用。 图6.1分层网络体系结构中的传输层传输层位置的特殊性体现在:传输层位置的特殊性体现在:l从计算机网络通信的角度来看,负责数据传输的通信子网中没有传输层,传输层属于面向用户功能的一部分,它位于用户的主机中; l从计算机网络中各层提供服务

2、的角度来看,传输层及其以下的网络层、数据链路层和物理层共同完成了数据的端到端传输,为应用层中的各个应用程序提供数据传输服务,因此传输层及其以下各层又构成了整个计算机网络系统的传输服务提供者。l从操作系统的角度看,应用层的各个协议是属于应用程序的范畴,而传输层协议则属于操作系统的有机构成部分 。 6.1.2 传输层的服务传输层的服务 为了能够应用层提供一个高效的、功能完备的传输服务,传输层具备以下主要功能: 1. 端到端的服务端到端的服务 每一台计算机上都可以有多个进程并发执行。这些并发执行的进程中可能有多个进程同时在和其它计算机中的进程进行通信。这种进程和进程之间的通信称为端端到端(到端(en

3、d-to-end)的通信。它负责将报文从一台主机上的某个进程完整的传送到另一台主机上的对等进程。 传输层端到端的通信和数据链路层以及网络层的通信方式有本质的区别 ,图6.2给出了它们之间的关系:图6-2 各层协议的作用范围和数据传输类型2. 全双工的通信全双工的通信 对于一个传输服务用户而言,这种全双工的通信服务包括了两个独立的、传输方向相反的数据传输,并且传输层协议允许在一个方向上没有数据传输的情况下,而在另一个相反的方向上继续保持数据传输。 3. 面向连接和无连接的服务面向连接和无连接的服务 传输层提供了两种类型的通信服务:面向连接的通信和无连接的通信。 l 面向连接的通信:面向连接的通信

4、: 提供一个可靠的数据流通信,整个通信过程包括建立连接、数据传输和释放连接三个阶段。 l 无连接的通信:无连接的通信: 提供一个不可靠的数据报通信,它不存在连接的建立和释放。 4. 可靠和不可靠服务可靠和不可靠服务 对应于面向连接和无连接的服务,传输层提供了可靠通信和不可靠通信两种服务。 l可靠通信可靠通信 它是建立在确认和重传机制上的,它有效解决了数据传输中的丢失、乱序和重复等问题,从而提供了一个端到端的无差错的数据流服务。l不可靠通信不可靠通信 它就像网络层的IP协议所提供的服务那样,仅仅提供一个“尽力而为”的通信服务。 图6-3给出了可靠通信和不可靠通信的模型。 图6-3 传输层提供的可

5、靠通信和不可靠通信6.1.3 传输层的相关机制传输层的相关机制 传输层提供了端口机制、连接机制、确认和重传机制、流量控制和拥塞控制机制等来实现传输层的功能。1. 端口机制端口机制 在计算机网络的不同层次上需要标识的实体类别是不一样的,因此采取的标识方法也就有所不同。在传输层引入了端口的概念,端口作为传输层服务访问点唯一的标识了应用层中的进程。 图6-4给出了网络中各层的地址标识以及传输层端口的作用。 图6-4 网络中各层的地址标识以及传输层的复用和分用l传输层协议端口号的取值传输层协议端口号的取值 在Internet体系中,端口号是用一个16位的二进制数来表示的,其取值范围是065535,需要

6、特别说明的是端口号仅具有本地意义:一台主机中不同进程的端口号是不能重复的,不同主机中的端口号可以相同。端口号在01023范围内的称为熟知(公认、永久)端口,大于1023的端口号称为一一般(临时)端口 。图6-5给出了一个基于客户/服务器模式应用的端口分配示意图。 图6-5 基于客户/服务器模式的端口分配l在在Internet通信模型中通信模型中 的端口机制的端口机制 在Internet通信模型中,端到端的通信连接是由发送端的套接字地址和接收端的套接字地址来唯一标识的。而套接字地址是由标识主机的IP地址和标识主机上特定进程的端口号组成的一个二元组。因此连接和套接字可以表示为:端到端的连接端到端的

7、连接 (发送方套接字地址,接收方 套接字地址);套接字地址套接字地址 (IP地址,端口号)。 连接、套接字、IP地址和端口号的关系可由图6-6所示的一个实例来说明。现在以图中服务器端的套接字为例来进一步说明IP地址和端口号。图6-6 连接、套接字、IP地址和端口的关系IP地址和端口号的作用如图6-7所示 图6-7 IP地址和端口号的作用2. 连接机制连接机制 在数据传送之前,发送进程和接收进程都要与各自的操作系统交互,以通知他们要进行数据传输。在双方的操作系统中,协议实体通过网络层发送报文来进行通信,确认连接的合法性、正确性,在相关的参数都设置好之后,协议模块通知应用程序连接已经建立,接下来就

8、可以发送数据了。 在应用层进程看来,连接机制所提供的功能就像一个专用的硬件电路,但实际上仅仅是传输层实体所维护的一个“虚电路”。 3. 差错控制机制差错控制机制 传输层采用了一种称之为“确认重传”的差错处理机制。它要求发送端在发送一个报文的同时要保存该报文的备份并启动一个定时器,在发送下一个报文之前等待两个事件的发生:接收端发回的确认消息或定时器超时。接收端在正确收到数据之后向发送端发回一个确认消息。当确认消息到达发送端后,发送端就开始发送下一个报文;如果定时器超时,则会重发备份的报文。 数据链路层和传输层的差错控制机制如图6-8所示。 图6-8 两种不同的差错控制机制 图6-9 和图6-10

9、 分别给出了在没有错误发生情况下数据的传送过程和发生分组丢失或出错情况下的“确认重传机制”。 图6-9 发送方在发送下一个报文之前要等待上一个报文的确认 图6-10 分组数据出错或是丢失时的确认重传机制4. 流量控制流量控制 要想保证通信的正常进行,双方主机上的进程必须分配并占有足够的资源,一旦资源不足就有可能发生数据的溢出。为了避免数据溢出,在传输层协议中引入了流量控制机制。所谓流量控制通常是指在给定的发送端和接收端之间的点到点的通信量控制,由接收端根据自身资源的占有情况控制发送端发送数据的速率,以保证慢的接收方不被快的发送方淹没 。 一般来说,通信并不仅仅是收发双方的事情,它还涉及到中间的

10、路由器、交换机以及链路等。这时链路的带宽、中间结点的缓存大小以及处理速度等都成为共享资源,所有分组都将竞争这些资源,如果资源不够的话,分组就会在路由器的缓存中排队,当排队的分组过多时就会被路由器抛弃。对于被抛弃的分组,发送方唯一能做的就是重发该分组,这样网络的负载逐渐增大而吞吐率却越来越低,我们称这种情况为拥塞。图6-11显示了一个可能产生拥塞的网络。 5. 拥塞控制拥塞控制图 6-11 一个可能产生拥塞的网络6.1.4 TCP/IP体系中的传输层体系中的传输层 针对不同的网络环境,人们设计了不同的传输层协议,其中使用最为广泛的是当前Internet采用的网络协议TCP/IP协议。在具体实现时

11、,TCP/IP在传输层有两个不同的协议:传输控制协议TCP(Transmission Control Protocol) 和用户数据报协议UDP(User Datagram Protocol),它们在TCP/IP协议族中的位置如图6-12所示。针对应用层的不同需求,TCP提供面向连接的、可靠的数据流服务;UDP提供无连接的、不可靠的数据报服务。 图 6-12 TCP/IP协议族中TCP、UDP的位置 6.2 TCP/IP的用户数据报协议:UDP 6.2.1 UDP概述 6.2.2 UDP协议 6.2.3 UDP的应用 6.2.1 UDP概述概述 UDP是一个非常简单的传输层协议,它只是把底层I

12、P网络的主机到主机的传输服务通过引入端口机制扩展到进程到进程的通信服务。它提供的是一种“尽力而为”的服务,只能够满足应用进程间发送数据报的基本要求:应用进程将产生的数据通过端口传给UDP,UDP协议附加一个短小的UDP首部,然后向下交给IP协议封装成待发送的IP数据报,数据的传递封装过程如图6-13所示。 图6-13 UDP数据报的封装 使用使用UDP协议的通信模式具有如下基本特征:协议的通信模式具有如下基本特征: 1. 无连接无连接 UDP提供的通信方式是属于无连接的,不存在建立连接及连接的释放问题。应用进程可以随时发送数据,一旦用户数据发送完毕,整个通信也就结束了,不需要任何控制报文。 2

13、. 端到端端到端 作为传输层协议,UDP提供端到端的通信服务,使得 进程到进程的通信成为可能。 3. 面向报文面向报文 如图6-13所示,用户进程的每一次输出都被 封装成一个单独的UDP数据报,并通过IP协议进行单独传送。4. 尽力而为尽力而为 UDP像IP一样提供“尽力而为”的通信。唯一能做的就是一个简单的端到端校验,一旦发现报文出错就丢弃该报文。 5. 多种通信模式多种通信模式 由于UDP的无连接性,因此可以实现单播、组播和局域网内的广播通信。图6-14显示了这三种通信模式。 图6-14 UDP支持的三种通信模式(a) 一对一的单播 (b) 一对多的组播 (c) 局域网内的广播6.2.2

14、UDP协议协议 UDP所提供的功能是非常有限的,这是由UDP协议的简单性决定的。 UDP协议的功能主要体现在其报文首部的各个字段中。1. UDP报文首部格式报文首部格式 UDP首部的格式如图6-15所示。共有4个字段8个字节构成,它们分别指出报文从哪里来、到哪里去、报文的总长度以及可选的UDP校验和。 图6-15 UDP报文首部 理解UDP报文首部中各个字段的含义是理解UDP协议的关键。首部中各字段的含义如下:源端口号和目的端口号源端口号和目的端口号 字段各用一个16位的正整数来表示。它们用来识别发送端主机和接收端主机上的特定进程,这是UDP协议的核心功能。常见的UDP熟知端口如表6-1所示。

15、 表6-1 常见的UDP熟知端口协议协议端口号端口号应应 用用EchoEcho7 7将收的数据报送回发送方将收的数据报送回发送方DaytimeDaytime1313返回日期和时间返回日期和时间RPCRPC111111远程过程调用远程过程调用DHCPsDHCPs6767动态主机配置协议动态主机配置协议SNMPSNMP161161简单网络管理协议简单网络管理协议UDP报文长度报文长度 字段指出以字节(8位组)为单位的UDP数据报的长度。该长度值的计算包含UDP的首部以及用户数据部分。校验和校验和 字段用来实现端到端的校验功能,防止传输过程中出现错误的数据提交给应用层进程。 2. UDP的伪首部及其

16、校验和计算的伪首部及其校验和计算 UDP采用二进制的反码来计算校验和,同时在计算UDP校验和时引入了伪首部的概念。这样UDP的校验和就涉及到三个部分:UDP伪首部、UDP首部和用户数据,图6-16给出了这三个部分的详细构成。 所谓伪首部就是指为了计算UDP校验和而从IP数据报首部提取了若干个字段,在计算校验和时这些字段附加在UDP首部的前面一起参与运算,但是它们既不计算在UDP报文的长度之内也不随UDP数据报向下传递一起传输 。图6-16 UDP校验和的构成UDP计算校验和的过程如图6-17所示。3. UDP的端口实现及复用机制的端口实现及复用机制 应用进程和UDP协议之间数据的交换是通过队列

17、来实现的,如图6-18所示。 图6-18 UDP协议的端口实现机制 和端口紧密相连的是传输层的复用和分用机制。如图6-19所示,有三个进程需要使用UDP提供的服务来发送和接收数据,这就意味着UDP要进行复用和分用。 图6-19 UDP的复用和分用 6.2.3 UDP的应用的应用 UDP是一个简单的、轻量级的传输层协议,下面以RTP为例讨论UDP的典型应用。 实时传输协议RTP(Real-time Transport Protocol)是针对Internet上多媒体数据流的一种传输协议,它提供时间信息、数据包的编号和流同步机制,为具有实时特征的流媒体传输提供服务。它使用UDP提供的服务来实现流媒

18、体的实时传输,RTP在协议栈中的位置及RTP的封装如图6-20所示。 图6-20 RTP在网络协议栈中的位置及其数据封装 6.3 TCP/IP的传输控制协议:的传输控制协议:TCP6.3.1 TCP概述 6.3.2 TCP协议 6.3.3 TCP的连接管理 6.3.4 TCP的差错控制和流量控制 6.3.5 TCP的拥塞控制 6.3.6 TCP的糊涂窗口综合症 6.3.7 TCP的定时器管理 6.3.1 TCP概述概述 为了使传输层能够提供可靠、高效的传输服务,TCP协议应运而生。TCP的服务具有如下几个特征 : 1)面向连接)面向连接 对于TCP而言,为了传输数据必须先建立一个可靠的端到端的

19、连接,然后在该连接上传输数据,最后需要友好的关闭连接。TCP提供了“三次握手”机制来保证双方通过交换报文建立一个可靠的连接;同时TCP也提供了“三次握手”或“四次握手”机制来友好的释放一个连接。2)可靠的顺序流)可靠的顺序流 TCP协议实体以字节流的形式从应用层进程接收数据并对其逐字节编号,然后把这些字节流划分为大小合适的报文段交付给IP层传输;接收端的TCP协议实体确保这些报文段按发送时的顺序全部正确的交付给应用层进程。这种流式传输不维护原始数据的结构和边界:所有数据都是平等的字节流,用户进程产生的报文边界和实际传输中TCP报文段的边界没有任何联系。数据的传输过程和TCP报文段的封装如图6-

20、21所示。图6-21 TCP的数据传输和报文段封装 3)端到端的全双工通信)端到端的全双工通信 TCP的端到端通信是建立在连接基础之上的,连接是用一对套接字地址来标识的。4)单一的通信模式)单一的通信模式 TCP只提供单一的通信模式:单播通信。6.3.2 TCP协议协议1. TCP报文首部报文首部 TCP协议的精髓都体现在该首部的各个字段中,因此只有深入掌握每个字段的含义才能把握TCP相关功能的实现原理。TCP报文首部如图6-22所示。 6-22 TCP报文段的首部 l源端口号源端口号 占16位,它标识了位于主机上的发送该报文段的应用进程,源端口号和源IP地址一起构成TCP连接的发送端点。l目

21、的端口号目的端口号 占16位,它标识了位于主机上的接收该报文段的应用进程,目的端口号和目的IP地址一起构成TCP连接的接收端点。 这样发送端点和接收端点就唯一的标识了一个TCP连接。l序号序号 占32位,在TCP连接上传输的每一个字节数据都分配了唯一的编号,该编号指明了相应的字节在整个流中的位置。接收端利用该序号来重构发送的字节流。l确认号确认号 占32位,它指明了希望收到的下一个TCP报文段首字节的编号,同时也通知对方该确认号以前的所有字节都已经正确收到。图6-23显示了TCP报文段的序号和确认号。l首部长度首部长度 占4位,它指明了TCP报文段首部的长度,单位是4字节,也就是TCP首部一共

22、有多少个32位字长。 图6-23 TCP的序号和确认号l保留位保留位 占6位,保留为今后扩展用。l控制字段控制字段 占6位,每一位代表了一个控制或标志,置1有效。这些位用在连接的建立和释放、流量控制等,可以同时设置其中的若干位。TCP协议实体根据这些位的设置情况来解释报文段中其它字段的作用和整个报文的用途。l窗口大小窗口大小 占16位,接收方用该字段通知发送方从确认序号起还可以发送多少字节的数据。l校验和校验和 占16位,和UDP一样TCP的校验和包含三个部分:伪首部、TCP首部和数据。l紧急指针紧急指针 占16位,只有当URG位置1时该字段才有效。l可选项和填充可选项和填充 长度可变,占用0

23、40字节,选项字段使TCP可以提供一些首部中没有包含的功能,可以根据实际情况选用0个或多个。 2. TCP校验和的计算校验和的计算 TCP校验和的计算方法和原理与UDP是一样的,图6-24给出了TCP校验和的校验范围和相关字段的值。需要指出的是TCP的校验和是必须的。 图6-24 TCP校验和的计算范围和伪首部6.3.3 TCP的连接管理的连接管理 TCP是面向连接的全双工传输协议。TCP协议一次传输过程应包含三个阶段:连接建立、数据传输和连接释放。 1. 连接建立连接建立 连接建立的过程其实是访问授权、参数协商和资源分配的过程。TCP采用著名的“三次握手”协议来保证连接的正确建立,图6-25

24、显示了基于客户/服务器模式的“三次握手”协议工作过程。 图6-25 基于客户/服务器模式“三次握手”协议工作过程 “三次握手”协议主要完成了以下几个功能: 确保连接的双方都知道对方已经做好了传送数据的准备工作; 对一些关键参数进行协商,并达成一致意见,如初始序列号、窗口大小MSS等; 合理分配传输中用到的资源,如缓存大小。 上面讨论的“三次握手”协议是基于客户/服务器模式的。在实际应用中还有另外一种模式:双方同时主动发出连接请求,这称为同时打开。图6-26显示了这一过程。 图6-26 对等程序同时建立连接的“三次握手”过程2. 数据传输数据传输 图6-27给出图6-25所示的连接建立之后一次正

25、常的数据传输过程 。 3. 连接释放连接释放 当任何一方发送完数据后都可以通过关闭操作友好的释放连接,TCP协议提供了两种释放连接的方式:三次握手或四次握手(半关闭)协议来释放连接。图6-27连接建立后的一次正常数据传输过程图6-28显示了TCP用“三次握手”协议释放连接的情况。 图6-28 TCP用三次握手协议释放一个连接 TCP还提供了另外一种关闭连接的方法:通过半关闭来释放连接,这主要是为了适应一些特殊情况:当一方没有数据传输时,而另一方还有数据需要继续传输。图6-29 给出了TCP用四次握手协议释放连接的过程。 图6-29中的虚线显示了客户端到服务器端的连接关闭后服务器继续发送数据的情

26、形:利用服务器到客户端的连接继续发送数据。图6-29 TCP用四次握手协议释放连接 6.3.4 TCP的差错控制和流量控制的差错控制和流量控制1. TCP中的编号和确认机制中的编号和确认机制 TCP通过编号和确认机制保证端到端字节流的完整性。当发送方要发送数据时,它将所有的数据按字节从随机产生的初始序列号开始顺序编号,这样每一个要发送的字节根据编号就可以确定其在整个字节流中的位置了,发送方从缓存中顺序取出数据组装成TCP报文段,并将该报文段首字节的编号填入TCP首部中的序号字段以标记该报文段,然后将组装的TCP报文依次发出。 在接收端采用的是对数据累积确认的方法,每一次返回的确认值ack都表示

27、该序号之前的数据已正确收到,期望发送方从编号为ack的字节发送下一个报文段。由于TCP是封装在IP中传输的,因此报文段可能出现乱序、丢失,接收方对此的处理是每收到一个报文段时就对顺序收到的最高字节给出确认,并缓存乱序到达的后继的报文段。这样当丢失的报文段到达时就可以一起给出确认。图6-31给出了一个编号和确认的实例:要传送的数据大小为5840字节,第一个字节编号为1853184000,每一个报文段数据长度不大于1000字节。斜体表示确认信息。 图6-31 TCP的编号和确认机制2. TCP的流量控制:滑动窗口协议的流量控制:滑动窗口协议 TCP是采用由接收方(或交换结点)根据自身的实际情况来调

28、控发送方的发送速率。具体实现时TCP的流量控制采用滑动窗口协议,该协议较好的解决了流量控制问题,并且实现了高效传输。我们通过图6-32来讨论滑动窗口协议的工作原理。 图6-32 TCP滑动窗口协议 从实现上来讲它是由三个指针来定义:P1、P2、P3。P1指针给出了已发送并且已确认和已发送但还没有确认数据的分界线;P3指针给出了允许发送和不能发送数据的分界线;P2指针给出了已经发送和即将发送数据的分界线。P1和P3将整个发送缓存分为三大部分:位于P1和P3中间的是发送窗口,其大小在建立连接时由双方协商一致,并且在通信过程中由接收端根据资源使用情况随时调整发送窗口的大小,凡是发送窗口覆盖区域内(进

29、入发送窗口)的数据都是允许发送的;在窗口左侧是已经发送并且被确认的数据;在窗口右侧是还没有进入窗口,不能发送的数据。 图6-33 显示了一个滑动窗口工作过程的例子。 图6-33 滑动窗口实例注:阴影覆盖的范围为发送窗口,其大小size由接收方通告3. TCP的差错控制:的差错控制:超时超时重传机制重传机制1)TCP的超时重传工作原理的超时重传工作原理 所谓超时重传是指发送方在发出每一个报文段的同时为其设置一个定时器,如果在定时器超时后还没有收到确认信息,则重发该报文段。TCP差错控制的核心是超时重传机制。这里采用图6-34给出的示例来讨论TCP的差错控制技术,在该示例中假设每一个报文段长100

30、字节。 图6-34 TCP的差错控制机制:超时重传2)TCP超时重传中的定时器设置超时重传中的定时器设置 如何为一个报文段设置定时器超时重传时间RTO呢?TCP采用的是自适应的超时重传机制,也就是说每一个报文段定时器的超时值都是根据当前网络的实际情况来设定的。曾经使用过多种计算RTO的算法,现在大多数的实现采用公式6-4来计算RTO的值。 RTORTT4RTTD 6-4 公式(6-3)给出了RTTD的计算方法。 RTTD RTTD (1)RTTRTTM 6-3算法6-4要求测量RTT的值,正常情况下测量该值是比较简单的:用接收到确认的时间Tack减去该报文的发送时间Ts即可。但是对TCP而言问

31、题就不那么简单了:这可以通过图6-35 来说明在出现超时重传时RTT测量的困难之处。 针对TCP确认的二义性,Karn提出了一个非常简单有效的解决办法:在计算加权平权RTT时,TCP不为重传的报文段更新加权平权RTT,只对没有重传的报文段才计算新的加权平权RTT。并且一旦发生重传RTO的数值就加倍,直到成功传输为止。这称为Karn算法。 图6-35 在出现重传时RTT的测量问题3)快速重传)快速重传 为了使TCP具有更高的发送效率,引入了一种叫做“快速重传”的机制:它规定当发送方连续收到4个重复的确认信息后马上触发一次重传,而不管定时器是否超时。 6.3.5 TCP的拥塞控制的拥塞控制 如果网

32、络传送数据的速率低于发送方向网络“注入”数据的速率,则它必须告知发送方放慢发送速率,否则数据就会被网络中相关的交换结点抛弃,从而引起网络拥塞,为此引入了拥塞控制机制。 图6-36给出了流量控制和拥塞控制的形象表示及其产生的原因。 图6-36 a、快速网络向小容量接收器输送; b、慢速网络向大容量接收器输送 为实现拥塞控制,我们引入拥塞窗口的概念。所谓拥塞窗口是指发送端根据自己“感知”到的网络拥塞程度而设置的窗口值。发送窗口的大小是由接受端可用缓存大小和网络拥塞程度共同决定的,并且窗口的实际大小是两者中较小的那一个:实际的发送窗口值min(rwnd,cwnd) 6-5 其中的rwnd是接收方通告的窗口,cwnd是拥塞窗口大小,它们分别代表了来自接收方的流量控制和发送方流量控制。 有了拥塞窗口的概念就可以讨论TCP的拥塞控制机制了,TCP的拥塞控制算法主要有:慢启动、拥塞避免和快恢复。 1. 慢启动慢启动 慢启动

温馨提示

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

评论

0/150

提交评论