HTTP协议的主要特点:
简单快速:客户端向服务端请求服务时,只需要传送请求方法和路径。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快
灵活:http允许传输任意类型的数据对象。以Content-Type标记传输的类型。
无连接:每次链接只处理一个请求。服务器处理完客户的请求,饼收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态: 无状态是指协议对于事务处理没有记忆能力。服务器不知道客户端是什么状态。意味着如果后续处理需要前面的信息,则它必须重传。
HTTP报文的组成部分
请求报文:请求行 请求头 空行 请求体
响应报文:状态行 响应头 空行 响应体
HTTP方法:
GET:获取资源
POST:传输资源
PUT:更新资源
DELETE :删除资源
HEAD:获得报文首部
POST和GET的区别:
1. GET在浏览器回退时不会重复提交,而POST会再次提交请求
2. GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
3. GET请求参数会被完整保留在浏览器历史里,而POST中的参数不会被保留
4. GET请求在URL中传送的参数是有长度限制的,而POST没有限制
5. GET参数通过URL传递,POST放在Request body 中。
HTTP状态码:
1xx: 指示信息
2xx: 成功
200: 客户端请求成功
3xx: 重定向
301:所请求的页面已经转移至新的URL
302: 锁清秋的页面已经临时转移至新的URL
304:缓存
4xx: 客户端错误
403: 访问被禁止
404: 请求资源不存在
5xx: 服务器错误
什么是持久链接:
HTTP协议采用“请求-应答”模式,当使用普通模式即非Keep-Alive模式时,每个请求/应答客户 和服务器都要新建一个链接,完成之后立即断开链接(http协议为无连接的协议)。
持久链接是指:当时用Keep-Alive模式(又称持久链接、连接重用)时,客户端到服务端的链接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了重新建立链接
什么是管线化:
使用持久链接的情况下,某个连接上消息的传递类似于:请求1 -> 响应1 ->请求2 -> 响应2 ->请求3 -> 响应3.
管线化是指:使用持久链接的情况下,某个连接上消息的传递类似于 请求1 -> 请求2 ->请求3 -> 响应1 ->响应2 -> 响应3.
管线化特点:
1. 管线化机制通过持久链接完成,仅 HTTP/1.1 支持此技术
2. 只有GET 和HEAD请求可以进行管线化,而POST则有所限制
3. 管线化不会影响响应到来的顺序,如上面的例子,响应返回的顺序并未改变