HTTP协议
- 手机
- 2025-08-18 10:39:03

1. 什么是HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于服务器与客户端浏览器之间传输超文本数据(文字、图片、视频、音频)的应用层协议。
同时也是一个双向协议,通过请求与响应的方式,基于浏览器-服务器架构模型进行工作。
2. HTTP协议通信过程常见总结为以下七个步骤。
1. 建立TCP连接 Web浏览器首先要通过网络与Web服务器之间通过TCP建立连接,TCP与IP协议共同构建Internet HTTP协议是比TCP处于更高层的应用层协议,只有当低层协议建立练接之后才能进行更高层次的连接。TCP连接的端口号一般是802. Web浏览器向Web服务器发送请求行 建立TCP连接之后,Web浏览器会向Web服务器发送请求命令3. Web浏览器向服务器发送请求头 浏览器发送请求信息之后,还要以头信息的形式发送相关信息,并以空行代表发送结束4. Web服务器应答 Web服务器接收请求后返回应答,第一部分是协议的版本号和应答状态码 例:“HTTP/1.1 200OK”5. Web服务器发送应答头 服务器也会随着应答发送一些相关信息,并以空行代表发送结束6. Web服务器向浏览器发送数据 Web服务器向浏览器发送头信息之后,就以Content-Type格式发送用户所请求的信息7. Web服务器关闭TCP连接 一般情况下,一旦Web服务器向浏览器发送请求数据后,就要关闭TCP连接了 若在报文中加入:connection:Keep-alive 则保持长连接状态,可以继续通过相同的连接发送请求
3. 关于URLHTTP协议使用 URL( Uniform Resource Locator,统一资源定位符)来定位资源。
格式:http://host[":"port][abs_path]
示例:http://192.168.0.116:8080/index.html
http表示要通过HTTP协议来定位网络资源;host表示合法的InternetWeb服务器或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;什么是URI?
URL是 URI(Uniform Resource Identifier,统一资源标识符)的子集,URL 在 URI 的基础上增加了定位能力。URN(Uniform Resource Name,统一资源名称)只是用来定义一个资源的名称不能够定位。
4. HTTP报文 请求报文结构第一行是请求行,包含:请求方式、URL、协议版本;
响应报文结构第一行是状态行,包含:协议版本、状态码以及描述。
最常见的状态码及描述是: 200OK ,表示请求成功。
接下来的多行都是http消息头,其中包含若干个http首部字段。一个空行用来分隔最后是请求的消息体 5. HTTP 请求方式HTTP请求报文 第一行为请求行,其中包含了请求方式字段,常见的请求方式:GET、POST、HEAD、PUT、DELETE、OPTIONS。
GET : 获取资源POST :提交数据增加资源HEAD :获取响应报头PUT :修改资源DELETE :删除资源OPTIONS :查询支持的方法 常见问题:GET 和 POST 的区别: GET用于获取数据,POST用于提交数据;GET和POST的请求报文格式不同 POST方法请求报文第一行是这样的 POST /URL HTTP/1.1 \r\nGET方法请求报文第一行是这样的 GET /URL HTTP/1.1 \r\n GET使用请求报文中的首部字段URL传递请求参数,POST使用Request Boby提交数据;GET是幂等且可缓存,POST非幂等且不可缓存; 6. 常见HTTP首部字段Host字段:浏览器发送http请求时,用来指定服务器的域名。
Content-Length字段:服务器在响应数据时,表明本次响应数据的长度。
Content-Type 字段:服务器响应时,告诉浏览器,本次响应数据的内容类型。
Accept 字段:用于浏览器发起请求的时候,声明可以接受哪些响应数据格式。
7. HTTP 状态码 1XX 信息1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际工作中使用场景比较少。
2XX 成功 「200 OK」最常见的成功状态码,表示一切正常。「204 No Content」常见的成功状态码,与 200 OK 基本相同,但响应报文没有 body 数据。 3XX 重定向 「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。 4XX 客户端错误 「400 Bad Request」表示客户端请求的报文有错误。「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。「405 Not Allowed」表示服务器不支持客户端采用的请求方式。 5XX 服务器错误 「500 Internal Server Error」服务器发生了内部错误。「502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。「503 Service Unavailable」表示服务器当前很忙,暂时无法响应服务器。 8. 连接方式HTTP 1.0 默认使用短连接,每次使用HTTP协议进行通信,都需要重新按照三次握手的方式,建立一个独立的TCP连接,响应完毕后,通过四次挥手断开连接。这种重复的连接创建和断开,增加了通信的开销。
为了解决这个问题,HTTP/1.1 改用长连接的通信方式,也叫持久性连接。只需要建立一次 TCP 连接就能进行多次 HTTP通信,这种方减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
9.HTTP协议存在的问题HTTP由于使用明文传输,所以存在以下安全问题:
使用明文进行通信,内容可能会被窃听,比如被抓包;不验证通信方的身份,通信方的身份有可能遭遇伪装,比如钓鱼网站;无法证明报文的完整性,报文有可能遭篡改,比如强制在线广告植入。为了解决这些问题出现了HTTPS协议: HTTPS 的全称是超文本传输安全协议Hypertext Transfer Protocol Secure ,是以安全为目标的 HTTP 通信协议。HTTPS 并不是一个新的协议,通过使用 SSL使用非对称加密算法(RSA)完成一个随机秘钥的交换,在随后的数据传输当中,使用该随机秘钥进行数据内容的对称式加密(AES)。具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)等功能特点。
上一篇
【李沐深度学习笔记】损失函数
下一篇
浮点型数字