在浏览器中输入一个url后会发生什么
输入一个url后大约需要经过以下五个步骤:
一、域名解析
1、根据url路径解析出里面的域名
注:域名 = 主机名:结构名:网络名:最高层域名
2、根据域名解析出对应的IP地址
① 查询浏览器中的DNS缓存
② 若浏览器中没有查询到相应的DNS缓存,查询本地客户端的hosts文件中有无对应的ip地址
③ 若hosts文件中也没有,则查找本地DNS服务器(运营商提供的DNS服务器)
④ 若本地DNS缓存中也没有,则向根服务器查询,进行递归查找【递归查找时从顶级域名开始(如.com),一步步缩小范围,最终客户端取得ip地址】
查询过程如下图所示:
二、TCP连接的建立
TCP连接是安全的、面向连接的可靠传输,建立连接时经过三次握手:
① 客户端 -----> 服务端:发送带有SYN标志的连接报文
② 服务端 -----> 客户端:返回带有SYN标志的ACK应答报文
③ 客户端 -----> 服务端:发送ACK应答报文
经过三次握手后,已经成功建立了TCP连接,可以发送数据了。
三、发送HTTP请求
连接建立完成后,开始发送HTTP请求,HTTP请求方法有很多种 ,常用的主要是两种GET和POST方法
请求报文格式:
请求方法 URL HTTP版本号
请求头 Header
【一个空行】
请求体 Body
四、服务器进行操作并发送响应
服务器根据请求报文中url里的路径查找响应资源并对其数据进行处理:
响应报文:
HTTP版本号 状态码 状态码解释
响应头 Header【键值对数据】
【一个空行】
响应体 Body
响应状态码:
200:OK
301:永久移动,重定向
302:临时转发,转发
400:语法错误
403:无权限
404:找不到请求资源,url错误
405:请求方法被禁止,请求方法类型不对
500:服务器内部错误
五、浏览器解析渲染