在浏览器输入一个网址,按回车之后发生了什么
1. 浏览器会根据这个 URL 去查找其对应的 IP
<1> 查找浏览器缓存, 浏览器会保存之前访问过的一些网站 DNS(域名系统 英文:Domain Name System)信息。
<2> 如果浏览器缓存没找到对应的 ip, 浏览器发送一个请求到路由器, 然后在路由器缓存上查找记录, 路由器一般也存有 DNS 信息.
<3> 如果还没有, 请求将发送到 ISP(Internet Service Provider, 互联网服务提供商) , 互联网服务提供商会有相应的 DNS 服务器, 再看 ISP 的 DNS 缓存.
<4> 解析域名, 返回 ip 给浏览器.(解析域名 www.baidu.com, 首先解析.com 的域名, 然后跑到管理.com 的服务器上进一步查询, 然后是.baidu, 最后是 www, 所以域名结构是: 三级域名. 二级域名. 一级域名。)
2. 进行 TCP 连接
HTTP 包的传输是依靠 TCP 的传输,建立三次握手, 建立 TCP 连接.
3. 浏览器给这个 IP 的服务器, 发送 http 请求.
请求包括 GET/POST、url、协议、浏览器头、cookies 信息等
4. 服务器收到浏览器请求后, 向客户机发送 HTTP 响应报文
包括 HTTP 版本、事件、cookies 等,并查找请求的资源是否存在响应
5. 浏览器解析渲染页面
当服务器返回响应之后,浏览器读取关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。
6. 关闭 TCP 连接
当数据完成请求到返回的过程之后,根据 Connection 的 Keep-Alive 属性可以选择是否断开 TCP 连接, 四次挥手释放.