【问题标题】:Can HTTP/HTTPS use UDP?HTTP/HTTPS 可以使用 UDP 吗?
【发布时间】:2017-02-16 15:42:18
【问题描述】:

UDP 不可靠。

  • 不保证消息传递

  • 没有确认、重传或超时

  • 不保证交货顺序

  • 无数据包序列号、无重新排序、无线头阻塞

  • 无连接状态跟踪

  • 没有连接建立或拆除状态机

  • 无拥塞控制

  • 没有内置的客户端或网络反馈机制

据我所知,HTTP/HTTPS 使用 TCP。

也可以使用 UDP 建立 HTTP/HTTPS 连接吗?

【问题讨论】:

  • 那么,如果传输不可靠,客户端将如何处理丢失数据包的价值(例如,资源中的一段 javascript 或 HTML)?
  • Does HTTP use UDP的可能重复

标签: http networking https tcp udp


【解决方案1】:

是的,你可以。现在甚至有一个特殊的协议。 DTLS。 由于您最好希望有一个稳定的数据包和有序的数据包,因此在进行加密时您最好使用 TCP。如果您使用 UDP,您可能需要重新发送或处理数据包的顺序等。

【讨论】:

    【解决方案2】:

    除了 HTTP,它还可以用于 HTTPS,这要归功于 QUIC 协议,如前所述。

    例如:如果您打算使用 IPTABLES/Netfilter 阻止 Linux 路由器上的 HTTPS 流量,考虑到 LAN 端的主机,您不能仅仅依赖规则来丢弃以 443 作为源端口的传入连接,考虑通过 TCP 传输。

    查看conntrack 的输出以删除已建立的连接:

    $ conntrack -D --orig-src 192.168.0.13

    udp 17 136 src=192.168.0.13 dst=216.58.193.14 sport=40660 dport=443 src=216.58.193.14 dst=192.168.100.1 sport=443 dport =40660 [保证] 标记=0 使用=1

    udp 17 151 src=192.168.0.13 dst=172.217.7.34 sport=46689 dport=443 src=172.217.7.34 dst=192.168.100.1 sport=443 dport =46689 [保证] 标记=0 使用=1

    udp 17 46 src=192.168.0.13 dst=216.58.193.14 sport=32995 dport=443 src=216.58.193.14 dst=192.168.100.1 sport=443 dport =32995 [保证] 标记=0 使用=1

    udp 17 55 src=192.168.0.13 dst=216.58.193.42 sport=40586 dport=443 src=216.58.193.42 dst=192.168.100.1 sport=443 dport =40586 [保证] 标记=0 使用=1

    如您所见,这些连接是通过 UDP 建立的。

    【讨论】:

      【解决方案3】:

      Google 今天将其用作 chrome 服务的实验性调查。

      参考:http://c3lab.poliba.it/images/3/3b/QUIC_SAC15.pdf

      【讨论】:

      • 它不是 UDP,它是基于 UDP 构建的可靠协议,这是另一回事
      猜你喜欢
      • 2010-09-24
      • 2011-09-12
      • 2012-04-29
      • 2022-01-05
      • 2019-07-11
      • 2018-11-21
      • 2015-10-25
      • 2016-09-15
      • 2014-01-26
      相关资源
      最近更新 更多