lam*_*kie 4 networking network-programming
正如标题所暗示的那样,我无法看到我大学网络课程中不断提到的以下概念之间的区别:
我觉得各个术语都在不断地使用相同的类比来解释。由于我无法在网上找到明确的答案,我认为在这里提及这一点可能是个好主意。
谢谢!
大多数人都了解经典的 Internet (IP) 和电话线 (POTS) 示例,但不幸的是,这些示例还不足以完全区分这四个术语:
| Packet-switching (PS) | Circuit-Switching (CS) |
|------------------------------|------------------------|
Connectionless (CL) | IP | - |
Connection-oriented (CO) | ... | Telephone (POTS) |
Run Code Online (Sandbox Code Playgroud)
从上面很容易看出人们如何将 CO 等同于 CS 并将 CL 等同于 PS。然而,这是等同起来错的,因为它的出现,但是也有一些协议,既面向连接的分组交换:
| Packet-switching (PS) | Circuit-Switching (CS) |
|------------------------------|------------------------|
Connectionless (CL) | IP | - |
Connection-oriented (CO) | TCP, ATM, X.25 | Telephone (POTS) |
Run Code Online (Sandbox Code Playgroud)
左下角现在填充了第三种类型的网络,乍一看似乎令人困惑。
为了理解,请比较三个:
第一种情况太死板,不再使用。第三种情况被 Internet 大量使用——在 TCP 中,数据流是一条微不足道的路径,由从主机到主机的一条边组成。在这一层,这只是一个可能的路径,因此数据确实总是沿着相同的路径(平凡地)流动。但是,它使用较低层协议 IP,它将我们的数据流分解为采用不同路径的“数据包”。(CO, PS) 网络有一个更花哨的名称虚拟电路。还要注意 (CL, CS) 网络不存在。
请不要通过编写“(虚拟)电路交换”来混淆电路交换和虚拟电路这两个术语。它们是完全不同的两种东西。例如,POTS 电话线是电路交换,但与虚电路无关!
我看到的最大错误是假设所有分组交换网络都是无连接的。在学校,他们告诉我,数据包交换网络必须接收数据包并单独路由它们,从而导致不同的路径和无序交付。这是错误的!这仅适用于 CL 分组交换。来自维基百科:
分组交换可分为无连接分组交换,也称为数据报交换,和面向连接的分组交换,也称为虚电路交换。
事实上,当您在浏览器中访问网站时,您将使用 CO 数据包交换(准确地说是 TCP)。
如果你喜欢类比:
你有点不对劲。基于数据包的通信可以是无连接的或面向连接的。例如,原始 IP 通信是无连接的。IP 不保存有关接收主机的任何状态信息,数据包只是被发送。另一方面,TCP 通过交换 SYN 和 ACK 消息来实现基于 IP 的连接,以确保两个主机都知道正在进行的通信。
据我了解,基于电路的通信始终是面向连接的。