TCP是否使用虚拟电路模型?

网络工程 通讯协议 UDP 传输协议 第4层
2021-07-31 22:06:38

先来一些资料:

在虚拟电路模型(位于网络层)中,分为三个阶段:

1) 连接建立 => 在这一步中选择了一条路径。简单来说,使用id为4,9,12的路由器到达目的地。

2) 数据传输 => 在这一步中,数据包(IP 数据包)被转发。

3) 连接拆除 => 从路由器中删除电路信息。

所以在这个模型中,数据包只需要知道它们在什么电路上。所以他们不需要完整的地址。如果一个数据包只携带它在 9454 电路上的信息,路由器将能够知道将数据包转发到哪里,因为连接已经建立,并且路由器保存了必要的信息......

现在让我们向上移动一层,到传输层.. TCP(传输控制协议)使用连接!这是否意味着 TCP 在网络层使用虚拟电路模型?还是网络层仍然使用数据报模型,而TCP在传输层建立自己的连接?

我的问题也适用于传输层中的 UDP 和网络层中的数据报模型。我们可以说UDP连接将始终使用网络层中的数据报模型吗?

3个回答

我会给出“不,但它非常相似”的答案。

这里有一些历史和大致完整的解释。

电路 101

信息网络基本上可以根据电路交换或分组交换来路由流量。电路交换提供比分组交换更多的保证,但这是有代价的,因此电路交换网络不能优雅地降级。经典的电路交换网络是 PSTN,而虚拟电路类似于 PSTN 上的 DS0。

DS0 基本上作为连接束的一部分工作,通常在 DS1 中。在 DS1 中,您将拥有一束 DS0,它们以时分方式逐帧传输在一起,因此每个 DS0 由底层网络传输保证特定的带宽、及时性等。

看待这一点的另一种方式是,物理电路类似于在两个终端之间运行的六类电缆。您可以以保证的速度通过线路来回发送数据,并且没有其他通信会干扰它。事实上,早期的电话网络是通过使用手动或机电开关连接物理电路(即铜线)来工作的。由于这是计算机化的,电路被虚拟化,数字(与模拟相反)信息再次以时分方式通过线路发送,电路在时分时间表中保留一个插槽。

这意味着电路交换更多的是关于带宽保留而不是路由。前者导致后者。即电路为整个连接保留带宽。

为什么 TCP 连接不是虚拟电路

TCP/IP 是完全包交换的。它没有为虚拟电路做准备。这就是为什么在中继 VOIP 时经常需要诸如 QoS 之类的东西(虚拟电路具有内置的 QoS 保证)。您不能保证所有数据包都将路由相同。它们可能不会以相同的顺序通过。它们可能无法及时通过(从面向连接的角度来看)。因此,您不能真正在 IP 等分组交换协议之上构建虚拟电路本身。

TCP 有点接近,实际上可以作为有点不完美的替代品。它提供尽可能多的保证。这就是为什么在 TCP/IP 上实现时,H.323 使用 TCP 连接而不是协议首选的虚拟电路。

但是 TCP 连接仍然不是电路,因为它们在两个节点之间的每个交换机的连接期间都不会保留带宽。

当然,TCP 连接不仅仅是数据报。它们包括路由信息(与 UDP 一样),但还包括按顺序重建另一端流所需的记帐信息。

答案

TCP 和 UDP 都是数据报协议。它们将带有路由信息的数据包发送到路由器,而没有电路提供的任何保证。TCP 通过添加记帐信息以允许端点按顺序处理错误和一系列数据,为电路提供的端点提供了一个子集保证,但这只是一个子集。在数据报协议中,TCP 是人们会发现的最接近虚拟电路的东西,但它在概念和操作上仍然非常不同。

TCP 使用 IP 作为网络层。IP 标头包含数据包来自何处(源 IP)和数据包将去往何处(目标 IP)的信息。IP 将数据包传送到目的地,并且不关心电路或其他任何事情。它是一种纯粹基于数据包的协议。

TCP 本身是一种面向连接的协议。它也不是虚拟电路。(它不保留带宽,也不提供或承诺恒定的比特率或延迟。)

UDP 是一种无连接协议。这是一劳永逸的。应用程序必须确保数据到达。(如果它确实关心这个)。

TCP 使用底层 IP 层在数据报层之上创建连接。它不是电路模型。