2022年网络传输层 .pdf
《2022年网络传输层 .pdf》由会员分享,可在线阅读,更多相关《2022年网络传输层 .pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、332 完成本章内容以后,您将能够:理解 TCP的封装和工作原理理解 UDP的封装和工作原理了解常用的TCP和 UDP端口号对 TCP和 UDP首部能够进行分析在前面学习了网络层与路由,就已经能够应付小型企业网络组建与维护的需求。按照TCP/IP 参考模型的层次划分,接下来的这一章,将要讲解传输层的内容。那么传输层的作用是什么?传输层实现端到端的连接,端到端是什么概念呢?打个比方说,一个人用QQ与朋友聊天,网络层识别IP 地址,能够将信息送到正确的主机,而主机应该使用什么应用协议接收这个信息呢? 这个功能就需要传输层来完成,传输层实现进程到进程的连接。掌握了传输层的协议的封装,对学习后续的操作
2、系统、网络的高级应用以及安全等课程是非常必要的。传输层主要有TCP和 UDP协议,在本章中,将深入讨论这两个协议的工作原理和使用,并且能使用抓包工具对数据的封装进行分析。13.1 传输层概述本节主要包括以下两个内容:传输层的功能传输层的协议1传输层的功能(1) 网络层协议只提供了点到点的连接,而传输层协议提供一种端到端的服务,即应用进程之间的通信。(2) 网络层协议提供不可靠、无连接和尽力投递的服务,因此,如果对于可靠性要求很高的上层协议,就需要在传输层实现可靠性的保障。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
3、理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 第 13 章 传输层333 - 提示:进程是程序的一次执行。比如每个IE 浏览器的窗口都是一个进程实例,它们都是IE浏览器程序的一次执行。每台计算机上同一时刻有许多进程在工作,为使一端计算机发出的数据能够被另一端计算机正确的程序接收,引入了端口号。不同的端口号对应于不同的进程。- 2传输层协议主要有两个 TCP(Transmission Control: Protocol) UDP(User Datagram Protocol) TCP即传输控制协议,是一个可靠的、面向连接的协议。它允许网络间两台主机
4、之间无差错的信息传输。TCP协议还进行流量控制,以避免发送过快而发生拥塞。不过这一切对用户都是透明的。UDP即用户数据报协议,它采用无连接的方式传送数据,也就是说发送端不关心发送的数据是否到达目标主机,数据是否出错等。 收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。这两个协议针对不同网络环境实现数据传输,各有优缺点。 面向连接的TCP协议效率较低,但可靠性高,适合于网络链路不好或可靠性要求高的环境;UDP面向非连接,不可靠,但因为不用传送许多与数据本身无关的信息,所以效率较高, 常用于一些实时业务,也用于一些对差错不敏感的应用。这样就可以在不同的场合和要求下选用不同
5、的协议,达到预期通信目标。下面分别对TCP和 UDP进行详细介绍。13.2 TCP 协议TCP协议是为了在主机间实现高可靠性数据交换的传输协议。TCP协议是面向连接的端到端的可靠协议。它支持多种网络应用程序。TCP对下层服务没有多少要求,它假定下层只能提供不可靠的数据包服务,它可以在多种硬件构成的网络上运行。在本节中我们将详细讨论TCP协议, TCP是可靠的传输层协议,那么,TCP依靠什么来提供可靠的服务? 下面主要从以下几个方面讨论TCP的工作原理: TCP的封装格式连接与断开流量控制拥塞控制差错控制名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
6、 - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 第 13 章 传输层334 计时器13.2.1 TCP 的封装格式TCP 是面向连接的可靠协议,TCP 协议为实现可靠的数据传输而提供了一系列的方法和手段。首先,TCP的数据段采取编号的方式保证数据的正确顺序。TCP数据段被封装在IP 数据包中来完成传输, 而 IP 数据包经过的路径有可能不同,那么 IP 数据包到达时可能会失去原有顺序, 因而到达的TCP数据段也可能会失序。为了解决这个问题,TCP对数据段进行编号。对接收到的数据进行重新排序,然后以正确的顺序交给应用层
7、。其次,由于到达的IP 数据包有可能会发生重复,所以TCP的接收端必须有丢弃重复数据的功能。再次, TCP提供流量控制。TCP连接的每一方都有固定大小的缓冲空间,这就要求TCP的发送端只酋黾发送接收端缓冲区能接收下的数据。这将防止较快的主机导致较慢的主机缓冲区溢出。上面的每一个功能都是针对每一个问题而设计的,那么 TCP协议是如何实现这些功能的呢? TCP 协议的各种功能的实现依赖于它的首部数据结构。在TCP的首部中包含了许多TCP数据段的重要信息,图13.1 显示了 TCP首部的数据格式。如果不计任选字段,它通常是20个字节。下面就TCP的首部数据结构进行详细讲解。图 13.1 TCP 首部
8、数据格式 015 这 16 位称为源端口号;它是TCP数据段发送方进程对应的端口号,这个端口号是由发送方进程产生的随机数,它唯一地标识了发送端的一个进程。 1631 这 16 位是目标端口号,它对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。这样才能保证数据到达正确的地方。否则, 发给 A程序的数据有可能被送给B程序, 那么整个数据传输秩序就会变得很混乱。第 2 行是 32 位的序列号,它提供0 232-1 范围内的一个数字。TCP从应用程序取得数据后,会根据实际传输能力把数据划分成不同的数据段。TCP用这个数字来给数据段名师资料总结 - - -精品
9、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 第 13 章 传输层335 打上标记, 当数据到达目的地后,接收端会按照这个序列号把数据重新排列,保证数据的正确性。第 3 行是 32 位的确认序列号,它提供0 232-1 范围内的一个数字。被分成许多数据段的数据虽然被做了标记,但并不能保证这当中的所有段都会到达目的地。然而对接收端来讲, 只要有一个段没有接收到,就不能保证数据的正确性。使用确认号可以很好地解决这个问题。 确认号是对发送端的确认信息,用它来
10、告诉发送端这个序号之前的数据段都收到了,比如确认号是X,就是表示前X-1 个数据段都收到了。如果一个数据段一直没有被确认,它将会被要求重发。这样数据的完整性就得到了保证。第 4 行分为 4 个部分。第 1 部分是4 位首部长度,用它可以确定首部数据结构的字节长度。一般情况下TCP首部是 20 个字节,但当要扩展首部长度大小时可以使用这个字段,比如把这4 个位都置为 1 就得到 TCP首部长度的最大值60。4 位的最大值是1111 换算成十进制是l5 ,表示首部长度为l5 行。而每行数据有32 位即 4 个字节长,所以首部长度为154=60。第 2 部分是 6 个保留位。这部分保留位作为今后扩展
11、功能用,现在还没有使用到。第 3 部分是 6 个控制位。这6 位有很重要的作用,TCP的连接、传输和断开都是受这6个控制位的指挥。各位含义如下:URG :紧急指针有效位,它和第5 行的 16 位紧急指针配合使用,当URG=1 时, TCP根据 16 位紧急指针确定紧急数据的最后一个字节的位置。这样接收端就可以优先准确快速地获取紧急数据,确保紧急数据的即时到达。ACK :只有当 ACK=1时确认序列号字段才有效。当ACK=0时,确认号无效。PSH :标志位为 1 时要求接收方尽快将数据段送达应用层,这个标志位是为了加快特殊数据的处理速度。RST:值为 1 时通知重新建立TCP连接。SYN :同步
12、序号位。TCP需要建立连接时将这个位置为1。FIN: 发端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个位置为1。第 4 部分是 1 6 位的窗口大小,它说明本地可接收数据段的数目,这个值的大小是可变的,当网络通畅时这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP协议中的流量控制机制就是依靠变化窗口的大小实现的。第 5 行中的 16 位校验和是用来做差错控制的,在发送 TCP数据段时, 由发送端计算TCP数据段所有字节的校验和。当到达目的地时又进行一次校验和计算。若这两次的校验和一致则说明数据基本是正确的。否则将认为该数据已被
13、破坏,接收端将抛弃该数据。第 5 行中的 16 位紧急指针和URG 配合使用,当URG=1时有效。用来说明紧急数据的末尾字节的位置。第 6 行是可选项,只有当4 位首部长度大于20 时才有效,那时TCP的首部中会附加更名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 第 13 章 传输层336 多的信息,一般情况下没有可选项。第 7 行是数据,它是由应用层的数据分段而得到的一部分数据,是 TCP协议服务的对象。在传输前 TCP协
14、议会给这部分数据加上一个序号,来表示这个部分数据在数据整体中的位置。一个 TCP连接不仅需要端口,还需要IP 地址来确定通信的主机。故而IP 首部中的发送端 IP 地址加上发送端端口号就形成了连接的发送端;目标端 IP 地址再加上接收端端口号就确定了连接的接收端。这样就唯一地确定了一个TCP连接。在 TCP/IP 协议中, TCP协议是基于IP 协议的。 IP 协议是对应于网络层的协议,它是一个不可靠的协议。TCP协议的可靠性保证给IP 协议提供了可靠环境,从而使得IP 协议可以不必考虑传输的可靠性,专注于网络层的功能。这也是协议分层的初衷。TCP被认为是一种流式传输层服务。它表示 TCP发送
15、端从应用程序接收到字符流,并从这个流中提取适当的长度创建数据段,然后将其发送到网络上。TCP接收端则接收数据段,从中提取数据,若没有按序号到达还要对其进行排序,并将其作为字符流交付给接收端应用程序。这样就完成了数据的传输。为了进行流式交付,发送TCP和接收 TCP都要利用缓冲。发送TCP使用发送缓冲来存储从发送应用程序截取的数据。发送应用程序交付数据的速率是它产生数据的速率。例如,在使用网络登录、控制远程主机时,用户在键盘上输入的数据就是逐个字符地交付给TCP 的发送端的。13.2.2 TCP 的连接与断开 TCP是一个面向连接的服务,也就是说在数据通信之前,发送端与接收端要先建立连接。等数据
16、发送结束后,双方再断开连接。1TCP 建立连接 TCP在建立连接的时候使用端口号来完成与应用程序的对应。当一台计算机和其他计算机进行连接、 通信时使用IP 地址和端口号。 连接的每一方都是由一个IP 地址和一个端口号组成的。 比如通过IE 浏览器上网时, 通过解析输入的URL地址可以得到IP 地址,这时还有一个隐含的端口号80。这样就构成了连接的服务器方。同样,连接的客户端也会有自己的IP 地址和端口号。在计算机上可以通过命令netstat -n来查看目前存在的连接进程。TCP建立连接的过程称为 3 次握手。建立连接的过程如图13.2 所示。名师资料总结 - - -精品资料欢迎下载 - - -
17、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - 第 13 章 传输层337 图 13.2 TCP 3 次握手示意第 1 次握手是主机A通过将一个含有“同步序列号”(SYN)标志位的数据段发送给主机B而开始请求连接。 通过该数据段, 主机 A告知主机 B两点:主机 A希望建立连接请求,主机 B应答;主机A告诉主机B使用哪个序列号作为数据传输时数据段的起始号。第 2 次握手是主机B用一个带有“确认应答”(ACK)和“同步序列号”(SYN)标志位的数据段响应主机A 。它也有两个目的:
18、发送ACK通知主机A收到了数据段;通知A从哪个序列号开始给数据段做标记。第 3 次握手是主机A再次发送一个数据段,确认收到了主机B的数据段, 并可以开始传送实际数据。这样 3 次握手就全部完成了,数据将开始传输。 3次握手有如下特点:没有应用层数据。 SYN这个标志位只有TCP建立连接时才被置为1。握手完成后SYN标志位被置为0。2TCP 断开连接TCP建立一个连接时进行了3 次握手,而终止一个连接要经过4 次。这是由TCP的半关闭(half-close)造成的。什么是 TCP的半关闭呢 ? 因为一个TCP连接是全双工的( 即数据可在两个方向上同时传递) ,所以进行关闭时每个方向必须单独地进行
19、关闭。这个单方向的关闭都称为半关闭。关闭的方法是一方完成它的数据发送任务后,就发送一个FIN 来向另一方通告将要终止这个方向连接。当一端收到一个FIN, 它必须通知应用层TCP连接已经终止了那个方向的数据传送。发送 FIN 通常是应用层进行关闭的结果。TCP的断开要经过4 步,但后两步和前两步很相似,只是关闭连接的双方调换角色而已。 (1)TCP连接的一端A将控制位FIN 置为 1,提出停止TCP连接的请求。(2) 对端 B收到 FIN 后对其做出响应,确认这一方向上的TCP连接将关闭。(3) 由 B端再提出反方向的关闭要求,将FIN 置为 1。(4) 由 A端对 B提出的关闭做出应答,双方向
20、的关闭结束。这样一共经过4 个步骤后, TCP全双工的双向连接都得到了正常的关闭。其关闭过程如图 13.3 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 第 13 章 传输层338 图 13.3 TCP 断开连接在数据传输阶段,主机 A向主机 B发送了序列号为100 的数据段, 主机 B接收到后, 发送了序列号为300、确认号为10l 的确认数据段。这时,主机A与 B之间已经完成了数据的传输。主机 A主动断开连接, 向
21、主机 B发送序列号为101 的数据段, 其中将 FIN 标志位置为1,同时,确认前一个B发送来的数据段,确认号为301,并将 ACK置 1。主机 B接收到这个断连请求后,发送序列号为301、确认号为102 的确认数据段,执行被动关闭。这时,完成了AB的半关闭。接着主机B向 A发出了序列号为301、 FIN 置 1 的断连请求,要求断开BA方向的连接。主机 A收到这个FIN,应答了一个确认号为302 的确认序列,执行被动关闭。这时,完成了 TCP的断开连接的工作。- 提示:在图 13.3 标出的第3 步,主机 B发送的断连请求中,序列号、确认号与上一个数据段相同。- TCP使用面向连接的通信方式
22、,这大大地提高了数据传输的可靠性,使发送端和接收端在数据正式传输之前就有了交互,为数据正式传输打下了可靠的基础。但是单纯地连接并不能解决数据在传输过程中出现的问题,比如双方传输速度不协调、数据丢失、 数据确认丢失等。对于这些问题,TCP使用流控制、差错控制、拥塞控制、计时器等手段来保证数据的可靠性。下面将对 TCP协议在传输数据的过程中可能出现的问题予以解决。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 第 13 章 传输层
23、339 13.2.3 TCP 的流控机制为了解决发送与接收双方数据通信能力存在差异而带来的数据丢失问题,TCP引入了流量控制机制。TcP 使用滑动窗口来实现流量控制,图13.4 显示了滑动窗口的工作原理。图 13.4 滑动窗口的工作原理示意在 TCP建立连接的时候, 主机 A与 B之间就进行了窗口大小的协商,主机 A在发送连接建立请求的时候,就向主机B通告了自己发送窗口的大小,单位是字节( 在本例中,为了讲解简单,使用简单的数字来举例) 。主机 B缓冲区的大小为3,因此 B向 A发送确认的时候,宣告窗口大小为3。主机 A再次确认后,连接已经建立,开始发送数据。主机 A发送了 3 个数据段,主机
24、B接收到数据后,缓冲区由空变为满,这时,应用程序读取了 1 个数据段,为缓冲区清空了大小为l 的空间。主机 B向 A确认收到的数据,并根据缓冲区空间的大小宣告窗口为l 。如果 B的缓冲区大小为 O,B会向 A宣告窗口大小为0,如果 A接收到 B窗口大小为0 的确认, A会停止发送,等待B宣告一个非O的窗口时再发送数据。主机 A根据 B宣告的窗口大小来发送数据。13.2.4 TCP 的拥塞控制前面我们讨论了TCP的窗口机制,接收方可以根据其缓冲区的大小来指定窗口的大小,发送方遵守此窗口大小的限制,接收端不会发生缓;中区溢出的问题,但是有可能由于中间名师资料总结 - - -精品资料欢迎下载 - -
25、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - 第 13 章 传输层340 传输网络的带宽较小的原因,导致拥塞的发生,如图13.5 所示,接收方和发送方的窗口大小为 1O ,中间链路的带宽比较大,不会产生拥塞,发送方可以按照窗口为10 来发送数据。但是,如果中间链路的带宽比较小,实际发送数据时不能按照双方协商的窗口大小来传输数据,为了防止中间链路产生的拥塞,TCP引入了拥塞窗口(cwnd) 的概念,实际发送数据的窗口采用发送方和接收方协商的窗口与拥塞窗口中的最小值。图 13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年网络传输层 2022 网络 传输
限制150内