浏览器输入域名查询网址,也可以输入ip地址查询网址
得出的内容一样,调用的过程不一样
输入ip地址直接从主机上调用内容,输入域名是通过域名解析服务器指向对应的主机的ip地址,再从主机中调用网址的内容
现在我有一台计算机,通过ISP接入了互联网,那么ISP就会给我分配一个DNS服务器,这个DNS服务器不是权威服务器,而是相当于一个代理的dns解析服务器,他会帮你迭代权威服务器返回的应答,然后把最终查到IP返回给你。
浏览器会把输入的域名解析成对应的IP,这一步就是DNS域名解析,其过程如下:
什么是域名(www.baidu.com中baidu.com就是他的域名)
.net .com
浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。
如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。
- 如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址此时LDNS再发送请求给上一步返回的gTLD接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器Name Server根据映射关系表找到目标ip,返回给LDNSLDNS缓存这个域名和对应的ipLDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
(建立TCP连接就是在服务器端和客户端通道)
1.主机浏览器通过DNS解析得到了目标服务器的IP地址后,与服务器建立TCP连接。
2.TCP3次握手连接:浏览器所在的客户机向服务器发出连接请求报文(SYN标志为1);服务器接收报文后,同意建立连接,向客户机发出确认报文(SYN,ACK标志位均为1);客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的TCP连接建立完成,开始通信。
第三步:浏览器通过http协议发送请求http协议是建立在tcp/ip协议之上的,tcp保证连接通畅,http就可以正常的进行请求和响应了。首先http请求是一个无状态的请求,且只能由浏览器主动发起,服务器进行响应。
浏览器发送请求的报文会携带以下信息:
请求路径查询参数请求方法请求头请求体 第四步:服务器接收请求并作出响应
服务器执行完逻辑之后,需要给浏览器响应内容(无论是要从服务器获取数据,还是在服务器做了什么操作,都需要给浏览器一个响应)
响应一般包含以下几部分
状态码状态文本响应头响应体
服务器响应的同时肯定会伴随着浏览器端接收,等浏览器端彻底接收完毕之后,TCP就要进行4次挥手,并断开连接了。
第五步:TCP断开连接
不需要再发送消息了
TCP链接的断开需要经过"四次挥手",那么就需要一方主动的释放另外一方被动的释放。大体的过程如下:
1.浏览器端发消息通知服务器现在需要断开(第一次挥手)
2.服务器接到要断开的请求之后,给浏览器返回消息,告诉浏览器我正在准备释放(第二次挥手)
3.此时浏览器接到消息后正在等待服务器释放完成,而服务器正在准备释放的过程
4.当服务器释放完成后,再通知浏览器我已经释放完成了。(第三次挥手)
5.浏览器接收到服务器释放完成的消息后,再给服务器发送消息告诉服务器我已经知道你释放完成了,服务器收到消息后,就能确认自己释放完成的消息已经通知到了(第四次挥手)
当浏览器接收到服务器响应的资源后,会对资源进行解析。
在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。渲染后的数据,进行相应的页面呈现和脚步的交互。



