超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它是基于 TCP 协议的应用层传输协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTP 是一种无状态 (stateless) 协议, HTTP 协议本身不会对发送过的请求和响应的通信状态进行持久化处理。这样做的目的是为了保持 HTTP 协议的简单性,从而能够快速处理大量的事务,提高效率。
Http请求体
HTTP 请求体由:请求行
、请求头
、请求体
组成。
GET:用于请求访问已经被 URI(统一资源标识符)识别的资源,可以通过 URL 传参给服务器。
POST:用于传输信息给服务器,主要功能与 GET 方法类似,但一般推荐使用 POST 方式。
PUT:传输文件,报文主体中包含文件内容,保存到对应 URI 位置。
HEAD:获得报文首部,与 GET 方法类似,只是不返回报文主体,一般用于验证 URI 是否有效。
DELETE:删除文件,与 PUT 方法相反,删除对应 URI 位置的文件。
OPTIONS:查询相应 URI 支持的 HTTP 方法。
GET 与 POST 是我们常用的两种 HTTP Method,二者之间的区别主要包括如下五个方面:
1、 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
2、 从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;
3、 从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的请求头中,以?分割URL和传输数据,参数之间以&相连;而POST请求会把提交的数据则放置在是HTTP请求报文的请求体中;
4、 从安全性上看,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全;
5、 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的;
1xx(临时响应):信息,服务器收到请求,需要请求者继续执行操作;
2xx(成功):操作被成功接收并处理;
3xx(重定向):需要进一步的操作以完成请求;
4xx(客户端错误):请求包含语法错误或无法完成请求;
5xx(服务器错误):服务器在处理请求的过程中发生了错误;
1、 由域名→IP地址寻找IP地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、递归搜索根域名服务器(DNS解析);
2、 建立TCP/IP连接(三次握手具体过程);
3、 由浏览器发送一个HTTP请求;
4、 经过路由器的转发,通过服务器的防火墙,该HTTP请求到达了服务器;
5、 服务器处理该HTTP请求,返回一个HTML文件;
6、 浏览器解析该HTML文件,并且显示在浏览器端;
7、 服务器关闭TCP连接(四次挥手具体过程);