我正在尝试了解 TCP/IP 堆栈中的应用层协议。我知道 HTTP 和 DNS 协议都停留在顶层(应用层)。因此,当浏览器想要访问资源时,它必须向 HTTP 服务器发送请求,例如:
GET www.pippo.it/hello.htm HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
这个请求遵循 HTTP 协议的规则,它使用页面 URL,而不是 IP 地址。
我知道将 URL 转换为 IP 需要 DNS 请求。所以我的问题是:HTTP 会调用 DNS 协议吗?这对我来说似乎是不可能的,因为两者都是顶层协议(因此 DNS 无法为 HTTP 提供服务)。以同样的方式,即使 TCP(停留在较低级别)也无法在更高级别的协议(如 DNS)上请求服务。
那么DNS请求什么时候发生呢?谁执行了这样的请求?