传输层
- 传输层是OSI模型中第 4 层。
- 传输层的主要作用是直接向在不同主机上运行的应用程序进程提供通信服务。
- 传输层在不同主机上运行的应用程序进程之间提供逻辑通信。尽管不同主机上的应用程序进程没有物理连接,但应用程序进程使用传输层提供的逻辑通信来相互发送消息。
- 传输层协议在终端系统中实现,但不在网络路由器中实现。
- 计算机网络向网络应用程序提供多个协议。例如,TCP和UDP是两种传输层协议,它们为网络层提供不同的服务集。
- 所有传输层协议都提供多路复用/多路分解服务。它还提供其他服务,如可靠的数据传输,带宽保证和延迟保证。
- 应用程序层中的每个应用程序都能够使用TCP或UDP发送消息。应用程序使用这两种协议之一进行通信。然后,TCP和UDP都将与互联网层中的互联网协议进行通信。应用程序可以读取和写入传输层。因此,我们可以说沟通是双向的。
传输层提供的服务类似于数据链路层的服务。数据链路层在单个网络内提供服务,而传输层通过由许多网络组成的互联网络提供服务。数据链路层控制物理层,而传输层控制所有较低层。
传输层协议提供的服务可以分为五类:
- 端到端交付
- 寻址
- 可靠的交付
- 流量控制
- 多路复用
传输层将整个消息传输到目的地。因此,它确保从源到目的地的整个消息的端到端传递。
可靠的交付
传输层通过重传丢失和损坏的数据包来提供可靠性服务。
可靠的交付有四个方面:
- 错误控制
- 序列控制
- 损失控制
- 复制控制
- 可靠性的主要作用是错误控制。实际上,没有传输将是100%无差错交付。因此,传输层协议被设计为提供无差错传输。
- 数据链路层还提供错误处理机制,但它确保只有节点到节点的无错误传递。但是,节点到节点的可靠性并不能确保端到端的可靠性。
- 数据链路层检查每个网络之间的错误。如果在其中一个路由器中引入了错误,则数据链路层将不会捕获此错误。它仅检测在链接的开头和结尾之间引入的那些错误。因此,传输层端到端地执行错误检查,以确保数据包已正确到达。
- 可靠性的第二方面是在传输层实现的序列控制。
- 在发送端,传输层负责确保较低层可以使用从上层接收的分组。在接收端,它确保可以正确地重新组装变速器的各个部分。
损失控制
损失控制是可靠性的第三个方面。传输层确保传输的所有片段到达目的地,而不是其中的一些。在发送端,传输的所有片段由传输层给出序列号。这些序列号允许接收器的传输层识别丢失的段。
复制控制
复制控制是可靠性的第四个方面。传输层保证没有重复数据到达目的地。序列号用于识别丢失的数据包; 类似地,它允许接收器识别并丢弃重复的段。
流量控制
流量控制用于防止发送者压倒接收器。如果接收器过载了太多数据,则接收器丢弃数据包并要求重传数据包。这会增加网络拥塞,从而降低系统性能。传输层负责流量控制。它使用滑动窗口协议,使数据传输更加高效,并控制数据流,使接收器不会变得不堪重负。滑动窗口协议是面向字节的而不是面向帧的。
多路复用
传输层使用多路复用来提高传输效率。
多路复用可以通过两种方式进行:
- 向上多路复用:向上多路复用意味着多个传输层连接使用相同的网络连接。为了更具成本效益,传输层沿同一路径发送绑定到同一目的地的若干传输; 这是通过向上多路复用实现的。
寻址
- 根据分层模型,传输层与会话层的功能交互。许多协议将会话,表示和应用层协议组合到称为应用层的单个层中。在这些情况下,传递到会话层意味着传递到应用程序层。由一台机器上的应用程序生成的数据必须传输到另一台机器上的正确应用程序。在这种情况下,传输层提供寻址。
- 传输层提供指定为站或端口的用户地址。端口变量表示指定站的特定TS用户,称为传输服务访问点(TSAP)。每个站只有一个传输实体。
- 传输层协议需要知道哪些上层协议正在通信。
传输层协议
- 传输层由两个协议表示:TCP和UDP。
- 网络层中的IP协议将数据报从源主机传递到目标主机。
- 如今,操作系统支持多用户和多处理环境,执行程序称为进程。当主机向其他主机发送消息时,表示源进程正在向目标进程发送进程。传输层协议定义了与各个端口的连接,称为协议端口。
- IP协议是主机到主机协议,用于将数据包从源主机传送到目标主机,而传输层协议是端口到端口协议,它们在IP协议的顶部工作,以便从源端发送数据包端口到IP服务,从IP服务到目标端口。
- 每个端口由正整数地址定义,为16位。
- UDP代表用户数据报协议。
- UDP是一种简单的协议,它提供非序列传输功能。
- UDP是一种无连接协议。
- 当可靠性和安全性不如速度和大小重要时,使用这种类型的协议。
- UDP是一种端到端传输级协议,它将传输级地址,校验和错误控制和长度信息添加到来自上层的数据中。
- UDP协议产生的数据包称为用户数据报。
用户数据报(UDP)格式
用户数据报有一个16字节的标题,如下所示:
传输层协议- 源端口地址:它定义已传递消息的应用程序进程的地址。源端口地址是16位地址。
- 目标端口地址:它定义将接收消息的应用程序进程的地址。目标端口地址是16位地址。
- 总长度:它定义用户数据报的总长度(以字节为单位)。这是一个16位字段。
- 校验和:校验和是一个16位字段,用于错误检测。
UDP协议的缺点
- UDP提供端到端传输所需的基本功能。
- 它不提供任何排序或重新排序功能,并且在报告错误时不指定损坏的数据包。
- UDP可以发现发生了错误,但是没有指定丢失了哪个数据包,因为它不包含特定数据段的ID或序列号。
传输控制协议(TCP)
- TCP代表传输控制协议。
- 它为应用程序提供完整的传输层服务。
- 它是面向连接的协议,意味着在传输的两端之间建立连接。为了创建连接,TCP在传输期间在发送器和接收器之间生成虚拟电路。
TCP协议的特点
-
流数据传输: TCP协议以连续的字节流形式传输数据。TCP以TCP段的形式对字节进行分组,然后将其传递到IP层以传输到目的地。TCP本身将数据分段并转发到IP。
-
可靠性: TCP为发送的每个字节分配一个序列号,并期望来自接收TCP的肯定确认。如果在超时间隔内未收到ACK,则将数据重新发送到目的地。
接收TCP使用序列号重新组合段,如果它们无序到达或消除重复段。 -
流控制:当接收TCP时,向发送方发送一个确认,指示它可以接收的字节数,而不会溢出其内部缓冲区。在ACK中以最高序列号的形式发送字节数,它可以毫无问题地接收。该机制也称为窗口机制。
-
多路复用:多路复用是一种接受来自不同应用程序的数据并转发到不同计算机上的不同应用程序的过程。在接收端,数据被转发到正确的应用程序。此过程称为多路分解。TCP使用称为端口的逻辑信道将数据包传输到正确的应用程序。
-
逻辑连接:套接字,序列号和窗口大小的组合称为逻辑连接。每个连接由发送和接收进程使用的一对套接字标识。
-
全双工:
TCP提供全双工服务,即同时在两个方向上的数据流。要实现全双工服务,每个TCP都应具有发送和接收缓冲区,以便这些段可以在两个方向上流动。TCP是面向连接的协议。假设进程A想要从进程B发送和接收数据。发生以下步骤:
- 在两个TCP之间建立连接。
- 数据在两个方向上交换。
- 连接已终止。
TCP段格式
传输层协议- 源端口地址:用于定义源计算机中应用程序的地址。这是一个16位字段。
- 目标端口地址:用于定义目标计算机中应用程序的地址。这是一个16位字段。
- 序列号:数据流分为两个或多个TCP段。32位序列号字段表示原始数据流中数据的位置。
- 确认号码: 32字段确认号码确认来自其他通信设备的数据。如果ACK字段设置为1,则它指定接收器期望接收的序列号。
- 标头长度(HLEN):它以32位字指定TCP标头的大小。标题的最小大小为5个字,标题的最大大小为15个字。因此,TCP报头的最大大小为60字节,TCP报头的最小大小为20字节。
- 保留:它是一个6位字段,保留供将来使用。
- 控制位:控制字段的每个位单独和独立运行。控制位定义段的使用或用作其他字段的有效性检查。
控制字段中共有六种类型的标志:
-
URG: URG字段表示段中的数据是紧急的。
-
ACK:当设置ACK字段时,它验证确认号。
-
PSH: PSH字段用于通知发送方需要更高的吞吐量,因此如果可能,必须以更高的吞吐量推送数据。
-
RST:当序列号中出现任何混淆时,复位位用于复位TCP连接。
-
SYN: SYN字段用于同步三种类型的段中的序列号:连接请求,连接确认(设置ACK位)和确认确认。
-
FIN:
FIN字段用于通知接收TCP模块发送方已完成发送数据。它用于三种类型的段中的连接终止:终止请求,终止确认和终止确认确认。
- 窗口大小:窗口是一个16位字段,用于定义窗口的大小。
- 校验和:校验和是一个用于错误检测的16位字段。
- 紧急指针:如果URG标志设置为1,则该16位字段是序列号的偏移量,表示它是最后一个紧急数据字节。
- 选项和填充:它定义了将附加信息传递给接收器的可选字段。
TCP和UDP差异
比较的基础 | TCP | UDP |
---|---|---|
定义 | TCP在传输数据之前建立虚拟电路。 | UDP将数据直接发送到目标计算机,而无需验证接收器是否准备好接收。 |
连接类型 | 它是一种面向连接的协议 | 这是一个无连接协议 |
速度 | 慢 | 高 |
可靠性 | 这是一个可靠的协议。 | 这是一个不可靠的协议。 |
标题大小 | 20个字节 | 8个字节 |
承认 | 它等待数据确认,并能够重新发送丢失的数据包。 | 它既不接受确认,也不重新传输损坏的帧。 |
网友评论