跳转到内容

CCNA 认证/传输层

来自维基教科书,开放书籍,开放世界

传输层

[编辑 | 编辑源代码]

传输层是 TCP/IP 参考模型中的第二高层。它响应来自应用层的服务请求,并向网络层发出服务请求。它也是七层OSI 模型中第四层的名称,在这里它响应来自会话层的服务请求,并向网络层发出服务请求。在这两个模型中,传输层的定义略有不同。以下文本主要指的是 TCP/IP 模型。

传输层提供主机之间数据的透明传输。它通常负责端到端连接、错误恢复、流量控制和确保完整的数据传输。在 Internet 协议套件 (TCP/IP) 中,此功能最常通过面向连接的传输控制协议 (TCP) 实现。数据报类型的传输,用户数据报协议 (UDP),既不提供错误恢复也不提供流量控制,将这些功能留给应用程序。传输层的目的是在最终用户之间提供透明的数据传输,从而使上层不再需要关注提供可靠且经济高效的数据传输。

传输层通常将网络层提供的不可靠且非常基本的服务转变为更强大的服务。此级别可以可选地提供许多服务。其中任何一项都不是强制性的,因为并非所有应用程序都需要所有可用的服务。在某些情况下,某些服务可能会浪费开销,甚至适得其反。

面向连接
这通常比无连接模型更容易处理,因此在网络层仅提供无连接服务的情况下,通常会在传输层之上构建面向连接的服务。
相同顺序交付
网络层通常不能保证数据包的到达顺序与发送顺序相同,但这通常是一个理想的功能,因此传输层提供了此功能。实现此功能的最简单方法是为每个数据包分配一个编号,并允许接收方对数据包进行重新排序。
可靠数据
由于网络拥塞,路由器、交换机、网桥和主机上的数据包可能会丢失,当数据包队列已满时,网络节点必须删除数据包。由于干扰和噪声,数据包可能会丢失或损坏,例如在以太网中,因为以太网不会重传损坏的数据包。数据包可能被底层网络以错误的顺序传递。一些传输层协议,例如 TCP,可以解决此问题。通过错误检测码,例如校验和,传输协议可以检查数据是否损坏,并通过向发送方发送 ACK 消息来验证数据。自动重传请求方案可用于重传丢失或损坏的数据。通过在传输层数据包报头中引入段编号,可以按顺序对数据包进行排序。当然,无错误是无法实现的,但可以大幅减少未检测到的错误数量。
流量控制
计算机上的内存量是有限的,如果没有流量控制,较大的计算机可能会向计算机发送如此多的信息,以至于在处理这些信息之前无法存储所有信息。如今,这已经不是什么大问题,因为内存很便宜,而带宽相对昂贵,但在早期,流量控制更为重要。流量控制允许接收方在被淹没之前说“慢点!”。有时,这已经由网络提供,但如果网络没有提供,传输层可以添加此功能。
拥塞避免
网络拥塞发生在网络节点的队列缓冲区已满并开始丢弃数据包时。自动重传请求可能会使网络处于拥塞状态。通过在流量控制中添加拥塞避免,包括慢启动,可以避免这种情况。这会在传输开始时或数据包重传后将带宽消耗保持在较低水平。
字节方向
传输层可能不再以逐个数据包的方式处理数据,而是提供将通信视为字节流的能力。这比随机数据包大小更容易处理,但是,它很少与通信模型相匹配,通信模型通常是用户定义大小的消息序列。
端口
(TCP/IP 模型中的传输层的一部分,但在 OSI 模型中是会话层的一部分) 端口本质上是地址同一个位置的多个实体的方法。例如,邮政地址的第一行类似于端口,它区分同一房屋的不同住户。每个计算机应用程序将在自己的端口上监听信息,这就是为什么你可以同时使用多个基于网络的应用程序的原因。

在 Internet 上,有各种各样的传输服务,但最常见的两种是 TCP 和 UDP。TCP 更加复杂,它提供面向连接的字节流,该流几乎没有错误,并具有流量控制、多个端口和相同顺序交付。UDP 是一个非常简单的“数据报”服务,它提供有限的错误减少和多个端口。TCP 代表传输控制协议,而 UDP 代表用户数据报协议。其他选项包括数据报拥塞控制协议 (DCCP) 和流控制传输协议 (SCTP)。

一些功能,例如面向连接,可以在传输层或网络层实现。其理念是网络层实现最容易实现的一组选项:对于一些底层网络来说,最容易实现无连接通信,而对于其他网络来说,最容易实现面向连接的通信。传输层使用这组最简单的选项来实现实际需要的各种选项组合。

传输协议比较表

[编辑 | 编辑源代码]
TCP UDP SCTP
数据包报头大小 20 字节 8 字节
数据包实体 数据报
错误检查
端口编号
面向连接
自动重传请求 (ARQ)
段编号
流量控制
拥塞避免


传输控制协议 (TCP) 是 Internet 协议套件的核心协议之一,通常简称为 TCP/IP。使用 TCP,联网主机上的应用程序可以彼此建立连接,通过这些连接,它们可以使用流套接字交换数据流。该协议保证从发送方到接收方可靠且有序地传递数据。TCP 还通过在同一主机上运行的并发应用程序 (例如,Web 服务器和电子邮件服务器) 区分数据。

TCP 支持 Internet 上最流行的许多应用程序协议和由此产生的应用程序,包括万维网、电子邮件、文件传输协议和安全外壳。

在 Internet 协议套件中,TCP 是位于 Internet 协议 (IP) 之上、应用程序之下的中间层。应用程序通常需要彼此之间的可靠管道式连接,而 Internet 协议不提供此类流,而是仅提供尽力而为的交付 (,不可靠的数据包)。TCP 在简化的计算机网络 OSI 模型中执行传输层的功能。另一个主要的传输级 Internet 协议是 UDP。

应用程序将字节流(8 位字节)发送到 TCP,以便通过网络传递,TCP 将字节流划分为适当大小的段(通常由连接计算机的网络的 数据链路层 的最大传输单元 (MTU) 大小来划分)。然后,TCP 将生成的包传递给互联网协议,以便通过网络传递到另一端实体的 TCP 模块。TCP 通过给每个包分配一个序列号来检查确保没有包丢失,序列号也用于确保数据以正确的顺序传递到另一端的实体。远端的 TCP 模块会为成功接收到的包发送一个确认;发送方 TCP 的一个计时器会在合理往返时间 (RTT) 内没有收到确认的情况下触发一个超时,然后将(可能丢失的)数据重新传输。TCP 使用校验和来检查没有字节损坏;在发送数据块之前,会在发送方为每个数据块计算一个校验和,并在接收方进行检查。

用户数据报协议 (UDP) 是互联网协议套件的核心协议之一。使用 UDP,联网计算机上的程序可以相互发送短消息,有时称为数据报。UDP 有时被称为通用数据报协议或不可靠数据报协议。

UDP 不提供 TCP 提供的可靠性和排序。数据报可能会无序到达,出现重复,或在没有通知的情况下丢失。在没有检查每个数据包是否实际到达的开销的情况下,UDP 对于许多轻量级或时间敏感的目的更快、更高效。此外,它的无状态特性对于从大量客户端回答小型查询的服务器来说非常有用。与 TCP 相比,UDP 是广播(发送到本地网络上的所有用户)和组播(发送到所有订阅者)所必需的。

使用 UDP 的常见网络应用程序包括域名系统 (DNS)、IPTV 等流媒体应用程序、网络电话 (VoIP)、简单文件传输协议 (TFTP) 和在线游戏。

UDP 利用端口来允许应用程序之间的通信。端口字段为 16 位,因此有效范围为 0 到 65,535。端口 0 保留,但如果发送进程不期望响应消息,则允许使用它作为源端口值。

端口 1 到 1023 被称为“众所周知”端口,在 Unix 派生操作系统上,绑定到这些端口之一需要 root 权限。

端口 1024 到 49,151 为注册端口。

端口 49,152 到 65,535 为短暂端口,主要用作客户端与服务器通信时的临时端口。

[编辑 | 编辑源代码]
华夏公益教科书