TCP/UDP 为“原始 ip”添加了什么?

网络工程 ip 通讯协议 第3层 UDP 第4层
2021-07-10 14:55:03

我知道 TCP 和 UDP 都是建立在 IP 之上的,我知道 TCP 和 UDP 之间的区别,但我对“原始 ip”究竟是什么感到困惑。可以说 TCP 和 UDP 都实现了 IP,但 IP 本身不能传输数据吗?或者 IP 是某种非常低级的通信形式,它被 TCP 和 UDP 进一步抽象?

3个回答

IP 是第 3 层协议。TCP/UDP 是第 4 层协议。它们各自用于不同的目的。

第 3 层负责端到端交付它的唯一功能是向数据包添加任何必要的内容,以便将数据包从一台主机发送到另一台主机。

第 4 层负责服务到服务的交付它的唯一功能是隔离数据流。您的计算机可以运行多个程序,每个程序都在线路上发送/接收位。IE:你可以运行多个浏览器选项卡、流式网络广播、运行下载、运行一些合法的种子、使用聊天应用程序等。所有这些都从网络接收 1 和 0,第 4 层将每个数据流隔离到需要它们的独特应用程序。这是一个插图:

L4 隔离数据流

IP 无法将数据包传送到正确的服务/应用程序。TCP/UDP 无法将数据包从 Internet 的一端传送到另一端。

TCP 和 IP 一起工作,使它们都能实现 Internet 通信的“最终目标”。

需要从一台主机到另一台主机的数据由 OSI 模型的上层生成。

该数据向下传递到 L4,L4 将添加在服务之间传送数据所需的信息,例如带有源和目标端口的 TCP 标头。数据和 L4 报头现在称为段。

然后段将被传递到 L3,它将添加从端到端传送段所需的信息,如带有源和目标 IP 地址的 IP 标头。L3 报头和段现在可以称为数据包。

此过程称为封装和解封装(或有时称为解封装)。这是它如何工作的动画:

封装和解封装,经 Practical Networking.net 许可使用

如果这没有意义,我建议阅读更多关于OSI 模型的信息,以及每一层如何具有不同的职责,所有这些职责一起完成在 Internet 上移动数据包

IP可以很好地传输数据,问题是当数据到达另一端时会发生什么。唯一的识别信息是主机的 IP 地址和协议号。两者都没有提供任何方法来区分数据用于哪个套接字。

程序可以通过所谓的“原始套接字”直接使用 IP,但是缺乏适当的机制来决定将数据发送到哪个套接字会引发安全和性能问题(内核必须将数据发送到所有原始套接字对于给定的协议编号)。出于这个原因,打开“原始套接字”的能力通常仅限于 root(或您的平台的等效项)。

UDP 是一个相当小的 IP 层。它添加端口号以识别数据用于哪个套接字和校验和(以拒绝损坏的数据包)。应用程序仍然负责处理丢失的数据包、控制拥塞并将数据拆分为适当大小的数据包。

TCP 是一种更复杂的协议,除了提供端口号和校验和之外,还将字节流拆分为数据包,然后在目的地重新组装,并提供拥塞控制和恢复功能。

IP 是 OSI 第 3 层协议,而 TCP 和 UDP 是 OSI 第 4 层协议。IP作为三层协议,可以承载多种不同的四层协议。TCP 和 UDP 可能是最常见的,但它们不是唯一的。第 4 层协议是应用程序用作其端到端连接的协议。IP 从网络到网络(主机到主机)传输第 4 层协议。第 2 层协议,如以太网,在 LAN 上传输第 3 层协议。

您应该研究 OSI 模型,但要意识到它是一个概念模型,与现实世界往往并不完全匹配。