gpt4 book ai didi

ajax - 浏览器如何使用 WebSockets 处理 DNS 查找和 TLS?

转载 作者:可可西里 更新时间:2023-11-01 17:05:32 31 4
gpt4 key购买 nike

我目前正在考虑在我的应用程序中实现 websockets 的选项。但在这样做之前,我想确保我正确理解它的工作原理以及它是否值得。

我了解基础知识:通过 WebSockets,握手将仅通过 HTTP 进行一次,然后将与服务器通信以切换到较低级别的 TCP 层,此时,我们在服务器和客户端。

目前我正在测量对我的服务器发出的 ajax 请求(很多),我得到了以下信息:

Ajax request time

“DNS 查找”、“初始连接”和“SSL”时间是我试图消除的(如果可能的话)

据我了解,这些时间是握手过程的一部分,我假设使用 websockets 它只会在开始时发生(握手),但我不确定。

所以我的问题是:我说得对吗?实现 WebSockets 将确保“DNS 查找”和“初始连接”步骤仅在握手时发生?

在此先感谢您的帮助,如果我的理解有误,请见谅。

最佳答案

I understand the basics: Via WebSockets the handshake will be made only once via HTTP and then will talk to the server in order to switch to a lower level TCP layer, at that point, we have a full-duplex channel between the server and the client.

它不会切换到较低级别的 TCP 层。相反,它会将协议(protocol)从普通 HTTP(请求、响应)切换到基于消息的协议(protocol)——就像 HTTP 在应用层的 TCP 之上,而不是在较低级别。它只是同一级别上的不同协议(protocol)。它的行为有点像 TCP,您可以随时发送和接收消息,而不受 HTTP 的请求/响应方案的限制。但是例如 TCP 是一个数据流,而 WebSockets 实现了一个面向消息的协议(protocol)。

而且,DNS 在 WebSockets 之外。 DNS 只需要查找 IP 地址以建立 TCP 连接,然后用于执行初始 HTTP 握手,这是在协议(protocol)切换到 WebSockets 之前需要的。

情况与 TLS 类似。在 DNS 查找以获取 IP 地址后,TCP 连接建立,然后建立 TCP 连接之上的 TLS session ,然后在切换到 WebSockets 之前完成初始 HTTP 握手:即 TCP 内的 TLS 隧道内的 HTTP连接 - 换句话说 HTTPS。然后,WebSocket 协议(protocol)也在该 TLS 隧道内使用,类似于使用 HTTP 的方式。

So my question is: Am I correct? Implementing WebSockets will ensure that the "DNS lookup" and the "Initial connection" steps happen only on the handshake?

正确。如果名称的 IP 尚未缓存,则在每个 ws:// 连接开始时,您可能会进行 DNS 查找。您将进行 TCP 握手,然后进行 HTTP 握手,然后进行协议(protocol)切换。对于每个 ws:// 连接都是如此。对于 wss://,在建立 TCP 连接之后和开始 HTTP 握手之前,还会创建 TLS 隧道。

关于ajax - 浏览器如何使用 WebSockets 处理 DNS 查找和 TLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333749/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com