HTTP协议漫谈

作者: 追风的云月 | 来源:发表于2017-07-25 20:22 被阅读0次

最近读了一本非常好的有关HTTP协议的书,感觉对之前的知识有了更系统的认知,这里做一个梳理和记录。

HTTP协议:HTTP是一个客户端和服务器端请求和应答的标准(TCP)。

HTTP请求:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

HTTP状态码

1XX:指示信息—表示请求已接收,继续处理中
2XX:成功(200成功,206,客户端请求了一个Range头的GET请求)
3XX:重定向(301永久重定向,302临时重定向,304请求缓存资源)
4XX:(401客户端请求有语法错误,403访问被禁止,404资源未被找到)
5XX:(500服务器错误)

HTTP2 实现时候 优点

HTTP协议主要特点

简单快速:每个资源的资源符是固定的

无连接:连接一次就会断掉,不会保持连接

无状态:服务端不会确定两次连接的客户端身份(需要使用cookie来确定身份,关于cookie,在我了解多了之后,写了另一篇文章总结,cookie

HTTP报文组成部分

请求报文:请求行(HTTP方法,页面地址,HTTP协议及版本)、请求头(key和value值)、空行(做请求头和请求体的分隔)、请求体

响应报文:状态行、响应头、空行、响应体

HTTP方法

GET,POST,PUT,DELETE,HEAD

POST和GET区别

GET在浏览器回退时不会再次请求,POST会再次提交请求;
GET请求会被浏览器主动缓存,POST不会,除非手动设置;
GET请求只能进行URL编码,POST支持多种编码方式;
GET请求参数会被完整的保存在浏览器历史记录里,POST不会(防止CRSF攻击,使用POST;而且参数直接暴露在URL上,所以不能用来传递敏感信息);
GET请求在URL中传递的参数有长度限制(2KB左右),POST没有限制;
GET只接受ASCII字符,POST没有限制;
GET参数通过URL访问,POST放在Request body中

持久连接

HTTP协议采用请求应答模式,当使用普通模式,非keep-alive时,每个请求客户端和服务器都要重建连接,完成后要立即断开连接;当使用keep-alive时,客户端到服务器端的连接持续有效,当出现对服务器的后续请求时,避免了重新建立连接。但是需要HTPP1.1传输协议;

在一次HTTP协议中发生了什么

由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

相关文章

网友评论

    本文标题:HTTP协议漫谈

    本文链接:https://www.haomeiwen.com/subject/smqikxtx.html