HTTP/HTTPS可以使用UDP协议吗?

3

UDP是不可靠的。

  • 没有消息传递保障

  • 没有确认,重传或超时机制

  • 没有传递顺序保证

  • 没有数据包序列号,不能重新排序和避免头阻塞

  • 没有连接状态跟踪

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

  • 没有拥塞控制

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

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

是否可以使用UDP建立HTTP / HTTPS连接?


那么,如果传输不可靠,客户端如何处理丢失的数据包(比如来自资源的一块JavaScript或HTML)? - Rowland Shaw
1
可能是HTTP是否使用UDP的重复问题。 - Steffen Ullrich
3个回答

4

1
这不是UDP,而是在UDP之上构建的可靠协议,这是另一回事。 - Andriy Tylychko

3
除了HTTP,由于QUIC协议的存在,它也可以用于HTTPS。如前所述。
例如:如果你想在具有IPTABLES/Netfilter的Linux路由器上阻止LAN侧主机的HTTPS流量,那么仅仅考虑通过TCP传输的源端口为443的入站连接的规则是不可信的。
这里有一个使用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 [ASSURED] mark=0 use=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 [ASSURED] mark=0 use=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 [ASSURED] mark=0 use=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 [ASSURED] mark=0 use=1

这些连接是通过UDP建立的,正如你所看到的。

1

是的,你可以。现在甚至有一个专门的协议来实现它。DTLS。由于在进行加密时,最好要有稳定的数据包并按顺序传输,因此最好使用TCP。如果您使用UDP,则可能需要重新发送或处理数据包的顺序等问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接