![URL 如何知道它需要到达哪个服务器?](https://linux22.com/image/1300780/URL%20%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E5%AE%83%E9%9C%80%E8%A6%81%E5%88%B0%E8%BE%BE%E5%93%AA%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我想知道当我们输入这样的 URL 时会发生什么http://www.mydomain.com
?它如何知道去哪里获取 mydomain.com 的页面?这一切是如何发生的?
答案1
URL 只是一个地址,一个引用。因此,事情的发生过程如下:
- 用户在浏览器中输入 URL。键盘驱动程序会处理此操作,它会将键盘事件发送到浏览器,然后浏览器会通过使用输入的字符更新地址栏来做出响应
- 浏览器按照以下定义解析 URL 的各个部分RFC 3986
- 浏览器选择主机部分,它将使用内部解析器库来查找 IP 地址。最常用的解析器是DNS。为此,应用程序内部映射的解析器库将在为客户端计算机配置的 DNS 服务器上的端口 53 上发出 UDP 请求。DNS 服务器将在内部缓存中搜索请求,如果请求已过期或丢失,它将发出递归请求以尝试查找地址。
- 浏览器通过默认端口(TCP/80)连接到 HTTP 服务器。
- 浏览器发送 GET 请求,并根据 HTTP/1.1 指定 HOST 标头(参见RFC 2616
- http 服务器将解析该请求,并将请求发送到请求中指定的虚拟主机
- 应用程序返回生成的内容(通常是HTML)到浏览器
- 浏览器解析结果,生成一些JavaScript/DOM 事件并呈现页面(例如壁虎FireFox 中的引擎)。
这是一个非常简明扼要的解释。我不谈论 SSL、压缩、语言和字符编码协商、身份验证、CGI、管道和保持活动。