在这个例子中,HTTP vs TCP vs UDP?

use*_*603 6 networking http udp

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

java客户端的HTTP示例

java客户端的TCP示例

java客户端的UDP示例

我了解 HTTP 在应用程序中工作,而 TCP 和 UDP 在传输层工作。

我的理解 :-

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

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

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

我的理解正确吗?

gro*_*taj 8

熟悉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 不在乎。