简单的HTTP协议

HTTP协议用于客户端与服务端之间的通信

  • 必有一段是客户端,一段是服务端

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

  • 请求必定由客户端发出,而服务器端回复响应。服务端在没有接受到请求之前不会发送响应
  • 请求报文:
GET /index.htm HTTP/1.1
HOST: hackr.jp
  • 由请求方法、请求URI、协议版本、可选的请求部首字段和内容实体构成
    在这里插入图片描述
  • 接收到请求的服务器,会将请求内容的处理结果以响应的形式返回
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
...
  • 由协议版本、状态码、用以解释状态码的原因短语、可选的响应部首字段以及实体主体构成
    在这里插入图片描述

HTTP是不保存状态的协议

  • stateless 协议,在HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理
  • 为了实现保持状态功能,引入了Cookie 技术。

请求 URI定位资源

  • 完整URI
GET http://hackr.jp/index.htm HTTP/1.1
  • 在首部字段Host中写明网络域名或者IP 地址
GET /index.htm HTTP/1.1
Host: hackr.jp
  • 对服务器发起请求
OPTIONS * HTTP/1.1
  • 以上是查询HTTP服务端支持的HTTP方法种类

告知服务器意图的HTTP 方法

GET : 获取资源

  • 用来请求访问已被URI识别的资源。指定资源经服务器端解析后返回响应内容。
  • 如果请求的资源是文本,则保持原样返回;如果是像CGI(Common Gateway Interface 通用网关接口)那样的程序,则返回执行后的输出结果
GET /index.html HTTP/1.1
HOST: www.hackr.jp
If-Modified-Since: Tus, 12 Jul 2012 07:30:00 GMT

POST : 传输实体主体

POST /submit.cgi HTTP/1.1
Host: www.hackr.jp
Content-Length:1560(1560字节的数据)

PUT 传输文件

  • 传输文件,在主体中包含文件的内容,然后保存到请求URI指定 的位置
  • HTTP/1.1不带验证机制,一般Web网站不采用该方法。若配合Web应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer ,表征状态转移)标准的同类Web网站,就可能会开房使用PUT方法。
PUT /example.html HTTP/1.1
Host:www.hackr.jp
Content-Type:text/html
Content-Length:1560

HEAD 获得报文首部

  • 和GET 方法一样,只是不返回报文主体部分
  • 用于确认URI的有效性及资源更新的日期时间等
HEAD /index.html HTTP/1.1
Host:www.hackr.jp

DELETE 删除文件

  • 与PUT相反的方法,按请求URI删除指定资源文件
  • 一般也不使用
DELETE /exmaple.html HTTP/1.1
Host: www.hackr.jp

OPTIONS 询问支持的方法

  • 用来查询针对请求URI指定的资源支持的方法
OPTION * HTTP/1.1
Host: www.hackr.jp

TRACE 追踪路径

  • 让服务器端将之前的请求通信环回给客户端的方法
    在这里插入图片描述
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

CONNET 要求用隧道协议连接代理

  • 要求在与代理服务器通信的时建立隧道,实现用隧道协议进行TCP通信。
  • 主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输
CONNECT 代理服务器名:端口号 HTTP版本
CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host: proxy.hackr.jp

使用方法下达命令

在这里插入图片描述

持久连接节省通信量

在这里插入图片描述

持久连接

在这里插入图片描述

  • 好处在于:减少TCP连接的重复建立和断开造成的额外开销,减轻了服务器端的负载。减小开销时间,提高Web页面显示速度。
  • HTTP/1.1 默认为持久连接
  • 客户端和服务端都需要支持持久连接

管线化

  • 管线化(pipelining)。以前发送请求后需要等待并受到相应才能发送下一个请求,管线化技术可以不用等待相应直接发送下一个请求。
    在这里插入图片描述

使用Cookie的状态管理

  • 通过在请求和响应报文中写入Cookie 信息来控制客户端的状态
  • Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。
  • 服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
  1. 请求报文
GET /reader/ HTTP/1.1 
Host: hackr.jp
  1. 响应报文
HTTP/1.1 200 OK 
Date: Thu, 12 Jul 2012 07:12:20 GMT 
Server: Apache <Set-Cookie: sid=1342077140226724; path=/;
expires=Wed, 10-Oct-12 07:12:20 GMT>
Content-Type: text/plain; 
charset=UTF-8
  1. 再次请求报文
GET /image/ HTTP/1.1 
Host: hackr.jp 
Cookie: sid=1342077140226724
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值