地址栏访问url的时候发生了什么?
浏地址栏访问url的大致流程:
- 解析url
- 查询DNS服务器获取ip地址
- 建立TCP链接
- 处理请求
解析URL
- 对输入的字串进行解析,确认是合法的url则将地址转换为ASCII码继续处理
- 判断访问的地址在浏览器里是否有缓存,缓存是否过期,缓存过期则向DNS服务器重新请求数据
查询DNS服务器获取ip地址
DNS协议负责将域名转为IP地址
浏览器会按照 浏览器 >>系统hosts文件 >> 系统DNS缓存 >>路由器 >>系统设置首选DNS服务器 >>DNS根服务器的顺序查找,找到目的ip直接返回
建立TCP链接
-
发送http请求
http 请求报文构成
http 请求报文构成
http 请求报文实例 -
建立TCP链接
TCP的三次握手与四次挥手
image.png
- 客户端主动发送syn同步信号,SYN=1表示这是一个链接请求报文,不能携带数据(此时ACK=0,客户端进入同步已发送状态)
- 服务端监听套接字收到并发送自己的同步信号(SYN=1), 服务器进入同步收到状态(ACK=1),客户端链接建立
- 服务器接收到服务器的同步请求后,发送自己的同步收到信息(ACK=1), 服务器收到后服务端链接建立
PS: seq表示希望下次对端返回的报文的地址,ack表示接受到的报文的地址
四次挥手类似,在链接释放报文发送后客户端停止发送数据(会接收数据),服务器端发送确认报文并关闭接收(保留发送资源),进入关闭等待状态,客户端接收到服务端发送释放报文后,发出确认报文,四次挥手完成
- 处理请求
服务器对请求进行校验,客户端ip请求合法,返回数据,浏览器进行渲染