【HTTP协议】简单的HTTP协议

1. HTTP协议用于客户端和服务器端之间的通信

  • 客户端:请求访问文本或图像等资源的一端
  • 服务端:提供资源响应的一端

在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。

两台计算机作为客户端和服务端的的角色可能会互换。

HTTP协议能够明确区分哪端是客户端,哪端是服务端。

2. 通过请求和响应的交换达成通信

  • HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
GET /index.htm HTTP/1.1
Host: hackr.jp
  • G E T GET GET表示请求访问服务器的类型,称为 m e t h o d method method
  • / i n d e x . h t m /index.htm /index.htm指明了请求访问的资源对象,也叫做请求 U R I ( r e q u e s t − U R I ) URI(request-URI) URI(requestURI)
  • H T T P / 1.1 HTTP/1.1 HTTP/1.1,即 H T T P HTTP HTTP的版本号,用来提示客户端使用的 H T T P HTTP HTTP协议功能

综合来看,访求访问某台 H T T P HTTP HTTP服务器上的 / i n d e x . h t m /index.htm /index.htm页面资源

HTTP/1.1 200 OK
Date: Fri, 31 Dec 2021 10:10:10 GMT
Content-Length: 362
Content-Type: text/html
<html>
...
  • 200 200 200 O K OK OK,状态码和 r e a s o n − p h r a s e reason-phrase reasonphrase
  • D a t e Date Date 创建响应的日期时间,是 h e a d e r header header f i e l d field field内的一个属性

3. HTTP是不保存状态(stateless)的协议

H T T P HTTP HTTP协议自身不具备保存之前发送过的请求或响应的功能

  • 为了更快地处理大量事务
  • 确保协议的可伸缩性

4. 请求URL定位资源

H T T P HTTP HTTP协议使用 U R L URL URL定位互联网上的资源。因为 U R L URL URL的特定功能,在互联网上任意位置的资源都能访问到。

  • U R I URI URI为完整的请求 U R I URI URI
GET http://hackr.jp/index.htm HTTP/1.1
  • 在首部字段 H o s t Host Host中写明网络域名或 I P IP IP地址
GET /index.htm HTTP/1.1
Host: hackr.jp
  • 查询 H T T P HTTP HTTP服务器端支持的 H T T P HTTP HTTP方法种类
OPTIONS * HTTP/1.1

5. 告知服务器意图的HTTP方法

  • G E T GET GET 获取资源
GET /index.html HTTP/1.1
Host: www.hackr.jp

返回 i n d e x . h t m l index.html index.html的页面资源

GET /index.html HTTP/1.1
Host: www.hackr.jp
If-Modified-Since: Fri, 31 Dec 2021 12:00:00 GMT
  • P O S T POST POST 传输实体主体
POST /submit.cgi HTTP/1.1
Host: www.hackr.jp
Content-Length: 1560

返回submit.cgi接受数据的处理结果

  • P U T PUT PUT 传输文件
PUT /example.html HTTP/1.1
Host: www.hackr.jp
Content-Type: text/html
Content-Length: 1560

返回状态码204 No Content(请求执行成功,但无数据返回)

  • H E A D HEAD HEAD 获得报文首部
HEAD /index.html HTTP/1.1
Host: www.hackr.jp

返回index.html有关的响应首部

  • D E L E T E DELETE DELETE 删除文件
DELETE /example.html HTTP/1.1
Host: www.hackr.jp

返回状态码204 No Content 该html已从该服务器上删除

  • O P T I O N S OPTIONS OPTIONS 询问支持的方法
OPTIONS * HTTP/1.1
Host: www.hackr.jp
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
  • T R A C E TRACE TRACE 追踪路径

TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法

TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 1024

TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
  • C O N N E C T CONNECT CONNECT 要求用隧道协议连接代理

使用SSL和TLS协议把通信内容加密后经网络隧道传输

CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host: proxy.hackr.jp
HTTP/1.1 200 OK

6. 使用方法下达命令

方法的作用在于,可以指定请求的资源按期望产生某种行为。方法名用大写字母

7. 持久连接节省通信量

7.1 持久连接

特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态

7.2 管线化

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。这样就能够做到同时并行发送多个请求。

8. 使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫作Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

  • 请求报文(没有Cookie信息的状态)
GET /reader/ HTTP/1.1
Host: hackr.jp
  • 响应报文(服务器端生成Cookie信息)
HTTP/1.1 200 OK
Date: Fri, 12 Dec 2021 11:30:00 GMT
Server: Apache
<Set-Cookie: ...> 
Content-Type: text/plain; charset=UTF-8
  • 请求报文(自动发送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724

参考资料:《图解HTTP》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值