我的理解DNS 解析和 Web 浏览器的工作原理如下:
- 您的浏览器使用 DNS 系统,该系统最终将其连接到您的注册商名称服务器
- 然后,您的注册商的名称服务器最终将映射的 IP 地址发送回您的浏览器
- 然后,您的浏览器将直接与注册商的名称服务器返回的 IP 地址建立 HTTP 连接
如果我到目前为止所说的任何内容不准确或具有误导性,或者遗漏了任何主要内容,请首先纠正我!
假设我对 DNS 解析和 IP 地址查找的理解大致正确,那么我有以下问题:
浏览器将域名解析为 IP 地址(通过 DNS)后,它会与该 IP 地址建立直接 HTTP 连接。 这样做时,是否有任何参考任何最初请求的 URL?
换句话说,假设blah.example.com
被解析为 IPv4 地址1.2.3.4
。然后对 的请求http://blah.example.com/fizz
将被转换为对 的请求http://1.2.3.4:80/fizz
。我的问题是:在此第二个请求(直接引用 IP 地址)中,是否有任何标头/元数据引用blah.example.com
?
我在看维基百科的标准 HTTP 请求标头列表,但令我失望的是,我找不到任何突出的。我想我有点希望有一个像Requested-URL
,等等这样的标题。
必须有一些将第二个 HTTP 请求与最初请求的名称绑定的方式,否则我认为代理或负载平衡器永远无法工作。
答案1
它位于 Host 标头中:
curl -v http://www.google.ca/ >/dev/null
* Hostname was NOT found in DNS cache
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 2607:f8b0:400c:c03::5e...
* Connected to www.google.ca (2607:f8b0:400c:c03::5e) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.google.ca
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 03 Nov 2014 15:31:59 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=eb76c9020ebd6a26:FF=0:TM=1415028719:LM=1415028719:S=pxxk1qaEXquTWjHO; expires=Wed, 02-Nov-2016 15:31:59 GMT; path=/; domain=.google.ca
< Set-Cookie: NID=67=bzNq9pQagemSuByTb3SUrkchTiOk9KshhQuO4qyTcjH-Z5lo92jfP9bfpW8twUDan65AslDGV1DyWnjJ2C17BqDVUQ6OGrq2BG3WFcGbCJladFmS0WAxEr7CinTF_I5S; expires=Tue, 05-May-2015 15:31:59 GMT; path=/; domain=.google.ca; HttpOnly
< P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
* Server gws is not blacklisted
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Alternate-Protocol: 80:quic,p=0.01
< Transfer-Encoding: chunked
<
{ [data not shown]
100 17846 0 17846 0 0 92164 0 --:--:-- --:--:-- --:--:-- 92466
* Connection #0 to host www.google.ca left intact