简单的HTTP协议

简单的HTTP协议

  • HTTP协议规定,请求从客户端发出,最后由服务器端响应该请求并返回。

请求报文

请求报文由请求方法、请求URI、协议版本、可选的首部字段和内容尸体构成。

  • 可选的首部字段表示的意思是HTTP具有很多首部字段,可以从这些首部字段中选出一些放在报文首部,而不是首部字段对于报文是可填可不填的(至少Host字段必须加上)。
  • 请求URI的填写方法
    • 资源URI为完整的请求URI
    • 在首部字段Host中写明域名或IP地址
    • 如果不是请求资源,而是对服务器本身发起请求,可以使用 * 来代替请求URI

响应报文

响应报文是由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成

  • 接下来我们来看一个实例
  • 客户端向百度发送了一个HEAD请求(HEAD请求和GET请求很类似,但是只要求服务器端返回首部信息,在后面我们会详细解释),由于是HTTP/1.0,所以客户端加上了keep-alive要求进行HTTP持久连接。
  • 百度服务器向客户端返回了200 OK(了解状态码,可以看另一篇文章返回结果的HTTP状态码

HTTP是不保存状态的

HTTP是一种不保存状态的,即无状态 (stateless) 协议

  • HTTP的无状态性质使得它可以更快的处理大量事务。
  • HTTP的无状态性质也带来了一些问题,如当用户登录到一家购物网站,如果用户跳转到其他的页面,也应该能够保存登录状态(但是由于HTTP是无状态的,所以在不做另外处理的情况下,网站并不能掌握跳转到其他页面的是哪一个用户,也就无法保存用户的状态了),我们可以使用Cookie技术帮助HTTP管理状态。

告知服务器意图的HTTP方法

GET:获取资源

GET方法用来请求已被URI识别的资源。

POST:传输实体主体

POST方法用来传输实体的主体。

PUT:传输文件

PUT方法用来传输文件。

  • PUT方法要求在请求报文的报文主体位置包含文件内容,然后保存到请求URI指定的位置。
  • 由于安全问题,一般的Web网站并不支持PUT方法。

DELETE:删除文件

DELETE方法用来删除文件。

  • DELETE方法按请求URI删除指定的文件。
  • 由于安全问题,一般的Web网站并不支持DELETE方法。

OPTIONS:询问支持的方法

OPTIONS方法用来查询针对请求URI指定的资源支持的方法。

TRACE:追踪路径

TRACE方法使得客户端可以对请求消息的传输路径进行追踪。

  • 在发送TRACE请求时,向首部字段Max-Forwards中填入数值,每经过一个服务器转发就将该数值减一,当数值刚好减到0时,就停止继续转发,最后收到请求的服务器返回状态码200 OK的响应。
  • TRACE方法容易引发跨站追踪攻击(XST,Cross-Site Tracing)。

持久连接节省通信量

  • 在HTTP最初的版本中,每进行一次HTTP通信都需要断开一次TCP连接。
  • 这使得当客户端请求一个包含多个图片的网页时(购物网站),请求HTML文档需要断开一次TCP连接,等到请求图片1又需要进行TCP连接,使得TCP连接频繁的建立和断开。

HTTP持久连接

HTTP持久连接解决了上述问题,它的特点是只要任意一方没有明确提出断开连接,则保持TCP连接。

  • HTTP/1.1中所有连接默认都是持久连接,而HTTP/1.0中如果要进行持久连接,那么需要添加首部字段Connection: keep-alive

管线化

管线化技术建立于HTTP持久连接之上,它使得客户端不用等待服务器响应就直接发送下一个请求。

  • 但只有接收到上一批请求的响应,客户端才会发送下一批请求,这就可能引起队头阻塞。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值