http协议学习笔记

关于HTTP协议

位于网络协议7层(如下图)中的应用层,主要用来进行客户端和服务按数据交互。
OSI七层模型

为什么用它呢

因为简单、灵活、无状态。

  • 简单:只需要通过请求方法请求资源路径即可
  • 灵活:传输数据类型可以是任意类型
  • 无状态:链接只负责数据交互,不进行保存,所以彼此间不存在依赖,比较简单明了。当然是有好处,但是也导致了需要做一些请求验证时,就需要使用一些其他的手段,比如session、token。

关于HTTP协议的版本的内容(就写了自己知道的=.=,毕竟东西太多了[我太菜了])

0.9版本

  • 只有GET一个请求方法
  • 没有header等描述数据的信息
  • 为短连接,当服务器发送完毕数据后,就关闭TCP通道。

1.0版本

  • 增加了很多请求方法(POST等)
  • 怎么加了状态码和header等描述数据的信息
  • 有了If-Modified-Since,Expires处理缓存

1.1版本(现在使用)

  • 增加了持续链接!重点!
  • 增加host域,可以在同一台服务器,跑多个web服务
  • 增加了更多的缓存处理策略,如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等

未来—2.0版本

  • 所有数据都以2进制传递
  • 支持同一通道的多有请求,同时发送,1.1中。可以开多个TCP通道,但每个通道上的请求,一次一个,需要按照顺序进行发送
  • 支持服务端向客户端推送消息等

HTTP协议的组成

OSI七层模型
HTTP有请求和响应报文两种类型,但是组成部分如图所示,都是有三部分组成

1.起始行,一般由一下三部分构成,空格隔开每一部分;通过换行和首部隔开。

  • 请求地址
  • 请求的方法(methods),有GET/POST/DELETE/PUT/HEAD
  • http协议版本号
  • 状态码
    请求头

2.首部(Headers)

  • 关键字/值 组成,不同的关键字和值,有不同的作用;每一行一对;最后一个请求头后是一个空行来和主体隔开
  • 比较重要的 跨域、*缓存**CSP*** 都是在这里进行设置
    首部

3.主体(要发送的内容、接受到的内容)