通过这个例子可以比较 HTTP、TCP 和 UDP 吗?

通过这个例子可以比较 HTTP、TCP 和 UDP 吗?

我可以通过三种协议(即 http / TCP / UDP)从我的应用程序(假设是 java 应用程序)传输数据

HTTP 示例对于 Java 客户端来说

TCP 示例对于 Java 客户端来说

UDP 示例对于 Java 客户端来说

我知道 HTTP 在应用程序层工作,而 TCP 和 UDP 在传输层工作。

我的理解 :-

HTTP 在 HTTP 客户端中,高层抽象了套接字层。它也可以与 DNS 而不是 IP 地址一起使用。它有自己的规则,如 GET/POST 请求、标头等。API 将根据 HTTP 规则为我构造数据。HTTP 还将管理所需的编码(表示层的一部分)并管理会话(例如,当需要关闭连接时)

TCP 在 TCP 客户端中,api 直接与套接字层打交道。它需要处理 ip 地址。它没有像上面的 HTTP 那样的特定规则。它只是从应用程序收集数据并以有序的方式可靠地分块发送

UDP 在 UDP 中,客户端与 TCP 类似,但可靠性较低且速度更快。

我的理解正确吗?

答案1

熟悉OSI 模型。仔细阅读维基百科,它可能会回答您阅读此答案后所产生的疑问。

HTTP 和 TCP 不是替代品。这些协议在两个不同的层中工作。HTTP 需要一些传输层协议。HTTP 仅定义客户端和服务器的通用“语言”,但没有定义如何发送数据 - 这不是应用层的工作。它假设存在可靠的传输层协议。HTTP 几乎总是通过 TCP 传输。

HTTP 通常使用 IP。同样,HTTP 作为应用层协议仅定义通用语言。但是,它并未定义如何识别客户端和服务器以及客户端如何指定要与哪个服务器通信。这是用于寻址客户端的 IP 的工作。

DNS 不是 IP 的替代品。如果没有 IP,DNS 甚至没有多大意义。好吧,从技术上讲,它可以与其他寻址协议配合使用,但现在每个人都在使用。DNS 是一本互联网电话簿。我的 IP 地址目前是 95.155.82.60,你可能不记得了。更重要的是,它会在 5 分钟内改变,因为我要离开家,我将使用移动连接而不是 Wi-Fi。DNS 是一种具有已知、不变的 IP 地址的服务,可将域名(例如superuser.com)转换为 IP 地址。

因此当你输入superuser.com

  • 您的浏览器解析superuser.com为 IP 地址
  • 它打开与该 IP 地址的 TCP 连接
  • 它通过该连接发送 HTTP 请求

UDP UDP 客户端与 TCP 类似,但可靠性较低且速度更快。

或多或少。较大的消息由 UDP 和 TCP 分割成小数据包。TCP 保证所有数据包都按正确顺序到达,否则将不会收到任何内容。这可能需要一些时间和几次重试。UDP 并不关心。

答案2

OSI 模型应该可以帮助您了解自己所处的位置。与 UDP/TCP 相比,HTTP 完全不同。它在较低级别上使用 TCP。

至于 TCP 和 UDP,您说得对,一个是面向连接的,另一个不是。UDP 是尽力而为的“发后不管”方式,而 TCP 则尝试确保内容以您预期的方式可靠地到达。

最终,选择应该取决于你实际需要什么以及你觉得自己能处理什么。只想发送一个比特?使用 HTTP 可能有点麻烦。想要传输高度机密的宝贵数据?你可能不想使用 UDP。想要进行 VOIP?你可能想使用 UDP。

相关内容