简述HTTP协议copyright《图解HTTP》读书笔记

  • HTTP协议:用于客户端和服务端之间的通信,能够明确区分哪一端是哪一端
    • 客户端:请求访问文本或图像等资源的一端称为客户端
    • 服务端:提供资源响应的一端称为服务端
  • 请求和响应
    • 请求报文:请求方法、请求URI、协议版本、可选的请求首部字段、内容实体
    • 响应保本:协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段、主体
  • HTTP是 __无状态__协议
    • 协议对于发送过的请求和响应 不做持久化处理
    • 为了快速的处理大量事务,确保协议的可伸缩性,减少服务器的CPU及内存消耗
    • 为了实现期望的保持状态功能引入了Cookie技术
  • 请求URI:定位资源
    • URI为完整的请求URI
    • 在首部字段Host中写明网络域名或IP地址
    • 以*代替请求URI
      • OPTIONS * HTTP/1.1 查询HTTP服务器端支持的HTTP方法种类
  • 请求方法:告知服务器意图
    • GET:获取资源(我想访问某个资源)
      • 用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容
    • POST:传输实体主体(我要告诉你某条信息)
      • POST的主要目的不是获取响应的主体内容,而是传输实体的主体
      • 指定URI接收传输的主体的处理结果
    • PUT:传输文件(我要传给你某份文件)
      • 在请求报文的主体中包含文件内容,然后保存到请求URI指定位置
      • REST(REpresentational State Transfer)表征状态转移 标准
      • HTTP/1.1的PUT方法自身不带校验机制,存在安全问题,一般Web网站不使用PUT,可配合Web APP的验证机制或采用REST标准的架构设计的Web网站
    • HEAD:获得报文首部(把某相关信息告诉我)
      • 与GET一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等
    • DELETE:删除文件(把某份文件删除掉)
      • 与PUT相反的方法,按请求URI删除指定资源
      • 同PUT一样不带校验机制
    • OPTIONS:__询问支持的方法(URI指定的资源支持哪些方法)__HTTP/1.0不支持
      • OPTIONS * HTTP/1.1
      • Allow:GET,POST,HEAD,OPTIONS
    • TRACE:__追踪路径(追踪发出请求之后会发生什么)__HTTP/1.0不支持
      • 让Web服务器端将之前的请求通信环回给客户端,确认连接过程中发生的一系列操作
      • 首部字段Max-Forwadrs:每经过一个服务器端就将该数值减1,减为0时停止传输,最后接收到请求的服务器端返回状态200 OK的响应
      • 不怎么常用,容易引发XST(Cross-Site Tracing,跨站攻击)
      • 从代理服务器路由中转时请求可能被篡改,客户端通过TRACE方法查询发送出去的请求是如何被加工修改/篡改的
    • CONNECT:__要求用隧道协议连接代理(通过隧道进行传输)__HTTP/1.0不支持
      • CONEECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。
      • 使用SSL(Secure Socket Layer安全套接层)和TLS(Transport Layer Security传输层安全)协议把通信内容加密后经网络隧道传输
      • 格式:CONNECT 代理服务器名:端口号 HTTP版本
      • 粒子:CONNECT proxy.hackr.jp:8080 HTTP/1.1
    • LINK:建立和资源之间的联系,HTTP/1.1废弃
    • UNLINK:断开连接关系,HTTP/1.1废弃
  • HTTP协议的 持久连接
    • 只要任意一端没有明确提出断开连接,则保持TCP连接状态
    • 好处:减轻服务器端的负载,减少了TCP连接的重复建立和断开造成的额外开销,Web页面的显示速度提高了
    • 在HTTP/1.1中,所有连接默认都是持久连接的
  • HTTP协议的 管线化
    • 同时并行发送多个请求,而不需要一个接一个地等待响应
    • 管线化技术比持久连接还要快,请求数越多,时间差就越明显
  • Cookie
    • 通过在请求和响应报文中写入Cookie信息来控制客户端的状态
    • 有Cookie之后
      • 客户端发起请求,服务器生成Cookie保存请求并记住是哪个客户端发送的
      • Cookie根据服务器发送的响应报文内的一个叫Set-Cookie首部字段信息,通知客户端保存Cookie
      • 再下一次客户端发送请求时,客户端会添加Cookie后发送
      • 服务端发现有发送Cookie,会检查Cookie是从哪一个客户端发送的链接请求,服务器对比之前保存的请求记录,得到之前的状态
    • 没有Cookie信息的状态
      • 请求报文:首部字段内无Cookie相关信息
      • 响应报文:<Set-Cookie: sid=1342077140226724; path=/; expires=Wed,10-Oct-12 07:12:20 GMT>
    • 存有Cookie信息的状态
      • 请求报文:Cookie: sid=1342077140226724
    • 补充:SID安全标识符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值