欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

浅谈HTTP协议

程序员文章站 2022-06-22 18:02:16
什么是HTTP协议 了解什么是http协议前,我们先来说说什么是超文本。 超文本:超文本是指包含指向其他文档链接的文本。 HTTP协议:又称超文本传输协议,定义了客户进程和服务器之间...
什么是HTTP协议
了解什么是http协议前,我们先来说说什么是超文本。
超文本:超文本是指包含指向其他文档链接的文本。
HTTP协议:又称超文本传输协议,定义了客户进程和服务器之间是如何进行文档传输的。
HTTP性质
1>HTTP协议是应用层协议。
2>HTTP报文使用TCP连接进行传送。
3>虽然TCP是面向连接的运输层协议,但HTTP协议本身是无连接的。
4>HTTP协议是无状态的,同一个用户第二次访问页面,服务器相应与第一次访问相同。即不区分不同用户。
HTTP传输数据的过程

浅谈HTTP协议

第一个RTT用于TCP连接,第二个RTT用于请求和接收万维网文档,这里TCP连接第三个报文段捎带客户对文档的请求。

HTTP/1.0和HTTP/1.1

区别:

HTTP1.1中将所有的连接默认为持续连接,而HTTP/1.0内并未标准化。

原因:

如果每进行一次HTTP通信就要断开一次TCP连接,那么在请求一个复杂的页面时,每次请求都会造成无谓的TCP连接建立和断开,
增加通信量的开销。

持续连接的工作方式:

(1)非流水线方式:客户在接收到前一个响应后才能发出下一个请求。所以在服务器发送完一个对象后,TCP连接处于空闲状态,浪费服务器资源。
(2)流水线方式:能够同时并行发送多个请求,而不需要一个接一个地等待响应。

HTTP/2.0:

HTTP/2.0的目标是改善用户使用Web时的速度体验。
HTTP报文结构 请求报文
(1)请求行
请求报文的第一行只有三个内容:方法,请求资源的URL,以及HTTP的版本。
例:GET http://blog.****.net/leeezm HTTP/1.1
(2)首部行
首部行包含用来说明浏览器,服务器和报文主体的一些信息。
例:Connection:keep-alive
(3)实体主体:请求报文中一般不使用。

方法

方法 说明 GET 获取资源 POST 传输实体主体 PUT 传输文件 HEAD 获取报文首部 DELETE 删除文件 OPTIONS 询问支持的方法 TRACE 追踪路径 CONNECT 要求使用隧道协议连接代理 响应报文
(1)响应报文的第一行为状态行。
状态行包括HTTP的版本,状态码,以及解释状态码的简单短语。
例:HTTP/1.1 202 Accepted   [接受]
(2)首部行
首部行包含用来说明浏览器,服务器和报文主体的一些信息。
例:Connection:keep-alive
(3)实体主体:有些响应报文不用。

状态码:

方法 说明 说明 1XX 信息性状态码 接收的请求正在处理 2XX 成功状态码 请求正常处理完毕 3XX 重定向状态码 需要进行附加操作以完成请求 4XX 客户端错误状态码 服务器无法处理请求 5XX 服务器错误状态码 服务器处理请求出错

常见状态码

200 OK                表示从客户端发来的请求在服务器端被正常处理了
204 No Content        表示服务器接收的请求已被正常处理,但返回的响应报文中不含实体的主体部分。
    用于只需客户端向服务器发消息,而对客户端不需发送新内容。
206 Partial Content   表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求

301 Moved Permanently        永久性重定向
302 Found                    临时性重定向
303 See Other                该资源存在另一个URI,应使用GET方法获取资源
    302和303差别:303明确使用GET方法
304 Not Modified             服务器端资源未改变,可直接使用客户端未过期的缓存
307 Temporary Redirect       临时重定向
    302和307:307不会从POST变成GET

400 Bad Request              表示请求报文中存在语法错误
401 Unauthorized             表示发送的请求需要通过HTTP认证
403 Forbidden                表明对请求资源的访问被服务器拒绝了
404 Not Found                表明服务器上无法找到请求的资源

500 Internal Server Error    表明服务器在执行请求时发生了错误
503 Service Unavailable      表明服务器超负荷或停机维护,无法处理请求

注意
当301,302,303响应状态码返回时,几乎所有的浏览器都会把 POST 改成 GET,并删除请求报文内的主体,之后请求会自动再次发送。