HTTP是什么
超文本传输协议
- http客户端发起请求,创建端口
- http服务器在端口监听客户端请求
- http服务器向客户端返回状态和内容
url 到页面展现的过程
chrome 搜索自身的 DNS 缓存 (chrome://net-internals/#dns)
搜索操作系统的 DNS 缓存
读取本地的 host 文件
浏览器发起一个 DNS 的一个系统调用,一般是向网络运营商发
网络运营商查看自身的缓存
网络运营商发起一个迭代的 DNS 解析请求,向 根域 发
根域 从
.com
顶级域开始查找,找到 IP 地址。(url 从后往前查找)IP地址返回到操作系统内核
操作系统内核把结果返回给浏览器
最终浏览器拿到 域名 对应的 IP 地址
浏览器获得域名对应的 IP 地址后,发起 HTTP “三次握手”,TCP连接请求
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
TCP/IP 连接建立起来后,浏览器就可以向服务器发送 http 请求了。
服务器端接收到了这个请求,根据路径参数,经过后端处理,把处理后的数据返回给浏览器
浏览器拿到页面的 HTML 代码后,开始解析,解析到 JS、css、img 等静态资源的时候,同样是一个个 http 请求,都需要经过上面的 7 个步骤。
浏览器渲染页面,展现给用户