HTTP协议概述及对比

版权声明:本文为博主原创,转载请注明出处。 https://blog.csdn.net/u011848397/article/details/88929967

Hyper Text Transfer Protocol,超文本传输协议,属于应用层的面向对象协议

HTTP1.0的特点:

  1. 支持客户/服务器模式。
  2. 简单快速:请求服务时,只需要发送请求方法和路径。
  3. 允许传输任意类型数据
  4. 每次只处理1个请求,收到客户端应答后就断开连接(1.0的缺点)
  5. 无状态:这次请求和上次无关(每次请求必须附上所有信息)

http:// + host + [:port] + [path]
host:域名或IP地址
:port:默认为80端口可不写
path:指定资源地址,如果没有则为“/”
例如:http://www.baidu.com/

HTTP请求
请求行 + 消息报头(以空行表示结束)+ 请求正文

  • 请求行:
    Method Request-URI HTTP-Version (CRLF)
    例如:GET /blog/2016/08/1.html HTTP/1.0 (CRLF)
    HTTP/1.0协议的Method有GET、POST、HEAD;CRLF为换行

HTTP响应
状态行 + 消息报头(以空行表示结束)+ 响应正文

  • 状态行:
    HTTP-Version Status-Code Reason-Phrase (CRLF)
    例如:HTTP/1.1 200 OK (CRLF)
完整的HTTP消息由请求和响应组成
开始行(请求行/状态行)+
消息报头(可选)+
空行(CRLF)+
消息正文(可选)

消息报头组成格式:key: value(名字 + “:” + 空格 + 值)

HTTP/1.0的缺点:每个TCP连接只能发送一个请求,发送数据完毕就关闭连接,而TCP连接建立的成本很高。

为解决该问题,某些浏览器在请求时,用了一个非标准字段Connect: keep-alive,服务器同样回应这个字段,以此建立一个可服用的TCP连接,直到一方主动关闭

HTTP/1.1的变化

  1. 引入持久连接,TCP连接默认不关闭,不用声明Connect: keep-alive。客户端可在最后一个请求时主动发哦是那个Connect: close,明确告知服务器关闭连接,或一方发现另一方一段时间未活动,则自动关闭连接。
  2. 管道机制:同一个TCP连接中,客户端可同时发送多个请求。
    eg. 1.0中客户端先发送A,收到服务器响应后再发送B;
    1.1中客户端可依次发送A、B,服务器按照顺序先回A再回B。
  3. Context-Length字段与分块传输编码。1.0中也有,但不是必须的。Transfer-Encoding可代替Context-Length
  4. 增加了PUT、PATH、HEAD、OPTIONS、DELETE方法
  5. 增加字段Host,例如“Host: www.example.com”,可以将请求发往同一台主机的不同网站

猜你喜欢

转载自blog.csdn.net/u011848397/article/details/88929967