什么是Http
Http协议用于计算机之间(当然不局限于计算机)的通信,是一种无状态的协议,即不建立持久的连接,服务端不保留连接的相关信息。
Http的请求过程
那么,在我们在浏览器的地址栏输入地址并回车或刷新页面后,浏览器都做了什么?换句话说,Http的整个请求流程是什么样的!
1. 域名解析
(1) 浏览器首次搜索自身的DNS缓存,检查自身的缓存(缓存时间大概为 1 min)中有没有相应的域名IP地址。如果有,则检查是否过期,如果没有过期,那么将结果返回并结束域名解析的过程;否则,往下执行;
(2) 在浏览器自身没找到IP地址的话,浏览器就会在操作系统搜索DNS缓存。如果存在,同样需要检查是否过期;
(3) 如果操作系统中也没有找到,那么就读取本地的HOST文件(在C盘下:Windows\System32\drivers\etc),在本地文件里面查找;
(4) 如果在本地HOST文件下也没能找到,那么浏览器发起一个DNS的系统调用。过程如下:
1) 宽带运营商服务器查看本地缓存,如果找到就结束该过程,否则继续执行;
2) 宽带运营商服务器代替浏览器发起一个迭代DNS的请求:首先找到根域的DNS IP地址拿到顶级域COM域的IP地址;接着在COM域服务器的地址中寻找主域名(如:imooc.com)的DNS服务器的地址;最后在主域名DNS服务器中找到请求的域名的IP地址,主域名DNS服务器就将该地址发送给运营商服务器。这个时候运营商服务器将结果返回给操作系统内核,然后内核从操作系统DNS服务器上拿去IP地址并返回给浏览器,最后就是浏览器拿到了请求域名的IP地址。
至此,域名解析的整个过程结束!
2. 浏览器通过域名解析获取域名的IP地址之后,发起TCP连接请求。三次握手:
(1) 客户端程序向服务器端程序发出连接请求;
(2) 服务器端接收到请求报文段之后想客户端程序发送连接确认信息;
(3) 客户端程序接收到服务器端的确认报文段之后再向服务器端发送确认信息
3. TCP/IP连接建立之后,浏览器向服务器发送请求头信息
4. 服务器端作出应答并返回应答头信息和结果数据
6. 浏览器接收服务器端返回的数据并作相应的处理。
Http状态码
http状态码由3位数字构成,其首位数字定义了状态码的类型。
- 1xx:信息类表示服务器接收到请求,正在进一步处理中;
- 2xx:成功,表示用户请求被正确接收、理解和处理:如200;
- 3xx:重定向,表示请求没有成功;
- 4xx:客户端错误表示客户端提交的请求由错误:如400 客户端请求语法错误 401 请求未授权 404 Not Found
- 5xx:服务器错误,表示服务器不能完成对请求的处理:如 500 服务器端发生不可预期的错误 503 服务器端暂时还不能请求客户端的请求