HTTP协议常见问题总结

1 概念

HTTP是Hyper Text Transfer Protocal(超文本传输协议)的缩写,用于万维网服务器传输超文本到本地浏览器的传送协议。HTTP不仅传送完成超文本跳转所必须的信息,而且也传送任何可以从互联网上得到的信息,包括声音,图像等。默认端口号为80(HTTPS是443)
注意:

  1. HTTP本身是无连接的,使用面向连接的TCP作为传输协议
  2. HTTP是无状态的,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
    在这里插入图片描述

2 HTTP1.0和HTTP1.1区别

HTTP1.0:每请求一个文档就要有两倍RTT的开销。另一种开销是每一次建立新的TCP连接都要分配缓存和变量(非持续连接)。
HTTP1.1:使用持续连接,服务器在发送响应后仍然在一段时间内保持这条连接。

3 HTTP的报文结构

HTTP面向文本,报文中每一个字段都是ASCII码,每个字段的长度都是不确定的。
请求报文
在这里插入图片描述
响应报文
在这里插入图片描述
(1)开始行:用于区分是请求报文还是响应报文
(2)首部行:用来说明浏览器,服务器或报文主体的一些信息。
(3)实体主体

4 HTTP请求方法POST和GET的区别

GET 浏览器会把http header和data一并发送出去,服务器响应200(返回数据)
POST 浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
(1)get参数通过url传递,post放在request body中
(2)get请求在url中传递的参数是有长度限制的,而post没有
(3)get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息
(4)get请求只能进行url编码,而post支持多种编码方式
(5)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留
(6)GET和POST本质上都是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
(7)GET产生一个TCP数据包;POST产生两个TCP数据包

5 HTTP和HTTPS的区别

(1)HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据是经过TLS加密的,HTTPS具有更高的安全性
(2)HTTPS在三次握手阶段之后,还需要进行SSL的handshake,协商加密使用的对称加密密匙
(3)HTTPS协议需要服务端申请证书,浏览器安装相应的根证书
(4)HTTP端口号80,HTTPS端口号443
HTTPS的优点:
传输过程使用密匙进行加密,安全性更高;可以认证用户和服务器,确保数据发送到正确的用户和服务器。
HTTPS的缺点:
握手阶段延时较高(还要进行SSL握手);部署成本高,HTTPS协议需要使用证书来验证自身的安全性,需要购买CA证书,另外加解密的计算占用CPU的资源较多,需要的服务器配置或者数目高

6 HTTP的返回码

HTTP协议的响应报文由状态行、响应头部和响应包体组成,其响应状态码总体描述如下:
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
常见状态代码:
200 OK:客户端请求成功。
206 partial content服务器已经正确处理部分GET请求,实现断点续传或同时分片下载,该请求必须包含Range请求头来指示客户端期望得到的范围
300 multiple choices(可选重定向):被请求的资源有一系列可供选择的反馈信息,由浏览器/用户自行选择其中一个。
301 moved permanently(永久重定向):该资源已被永久移动到新位置,将来任何对该资源的访问都要使用本响应返回的若干个URI之一。
302 move temporarily(临时重定向):请求的资源现在临时从不同的URI中获得,
304:not modified :如果客户端发送一个待条件的GET请求并且该请求以经被允许,而文档内容未被改变,则返回304,该响应不包含包体(即可直接使用缓存)。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 not Found:请求资源不存在,举个例子:输入了错误的URL。

猜你喜欢

转载自blog.csdn.net/weixin_44537258/article/details/114492027