一个 url 如何知道它需要到达哪个服务器?

OM *_*ity 4 networking dns

我想知道当我们输入一个 url 时会发生什么http://www.mydomain.com?它如何知道去哪里获取 mydomain.com 的页面?这一切是如何发生的?

Mir*_*ici 8

URL 只是一个地址,一个引用。所以这是如何发生的:

  1. 用户在浏览器中输入 URL。这是由键盘驱动程序处理的,它将向浏览器发送键盘事件,浏览器将通过使用键入的字符更新地址栏来响应
  2. 浏览器解析RFC 3986定义的各个部分的 URL
  3. 浏览器选择主机部分,它将使用内部解析器库来查找 IP 地址。最常用的解析器是DNS。为此,应用程序内部映射的解析器库将在为客户端计算机配置的 DNS 服务器上的端口 53 上发出 UDP 请求。DNS 服务器将在内部缓存中搜索请求,如果请求已过期或丢失,它将发出递归请求以尝试查找地址。
  4. 浏览器通过默认端口 (TCP/80) 连接到 HTTP 服务器。
  5. 浏览器发送 GET 请求,并根据 HTTP/1.1 指定 HOST 标头,请参阅RFC 2616
  6. http服务器会解析请求并将请求分派给请求中指定的虚拟主机
  7. 应用程序将生成的内容(通常是HTML)返回给浏览器
  8. 浏览器解析结果,生成一些JavaScript / DOM 事件,并呈现页面(例如FireFox 中的Gecko引擎)。

这是一个非常非常简洁的解释。我不谈论 SSL、压缩、语言和字符编码协商、身份验证、CGI、管道和保持活动。