图解HTTP

作者: 鐘濤 | 来源:发表于2017-07-13 14:23 被阅读21次

    了解Web及网络基础

    • 使用HTTP协议访问Web
      浏览器(客户端)在地址栏里输入要访问的页面(URL),客户端从服务器获取文件资源,这一过程是在HTTP协议上进行通信的。
    • 网络基础TCP/IP
      通常使用的网络都是在TCP/IP协议族的基础上运作的,HTTP属于其中的一个子集。
    • TCP/IP协议族的明显特性是分层
      分为4层,应用层,传输层,网络层,数据链路层。
    • 分层的好处
      当部分设计需要修改时,只需更改所在的分层即可,无需修改整个协议,也就是说降低了耦合度。还有就是分层后,各个分层的分工明显,便于去实现,只需把该层次的接口功能实现即可,无需顾及整体。
    • 各分层作用
    • 应用层:决定了向用户提供应用服务时的通信活动。FTP,HTTP,DNS
    • 传输层:提供数据传输。TCP,UDP
    • 网络层:处理网络中流动的数据包。数据包是网络传输中最小的数据单位。该层规定了怎样的传输路线。
    • 链路层:处理网络连接的硬件部分。
    TCP/IP协议族分层图
    • 发送端在层与层之间传输数据时,每经过一层时必定会被打上上一层所属的首部信息。反之,接收端则每经过一层都去掉对应的首部信息。
    • 与HTTP关系密切的协议:IP,TCP和DNS
      IP协议的作用是把各种数据包传送给对方,需要IP地址和MAC地址。TCP协议提供可靠的字节流服务。
      字节流服务指为了方便传输,将大块数据分割成报文段。
      可靠是指,能够把数据准确可靠地传给对方,这是三次握手的功劳。
      三次握手:首先发送端发送一个带SYN标志的数据包给对方,接收端回传一个带SYN/ACK标志的数据包表示收到信息,最后发送端再回传带ACK标志的数据包,握手结束。
    三次握手
    DNS:提供域名到IP地址之间的解析服务。
    • 各协议与HTTP协议的关系
      1.通过DNS解析域名的IP地址
      2.通过HTTP协议向服务器发送请求
      3.TCP协议保证数据的传输
      4.IP协议选择传输路径
      5.TCP协议重组报文段
      6.HTTP协议处理请求
      这只是客户端向服务器发送一个HTTP请求的单方面过程,还未涉及服务器响应请求。
    • URI,URL和URN
      URI=URL+URN
      URL为一个人的居住地址,URN则是一个人的姓名。
      URI的格式:登录信息(可选)+服务器地址+端口号(可选)+文件路径+查询字符串(可选)+片段标识符
      例:http://user:pass@www.google.com:80/dir/index.html?uid=1#c1

    简单的HTTP协议

    • 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器角色。
    • 请求报文
      请求方法+请求URI+协议版本+可选的请求首部字段+内容实体。
    请求报文的构成
    • 响应报文
      协议版本+状态码+解释状态码的原因短语+可选的响应首部字段+主体。
    响应报文的构成
    • HTTP是一种无状态协议,所以后来才有Cookie技术。
    HTTP/1.1可以使用的方法
    • 持久连接节省通信量
      持久连接:只有任意一端没有明确提出断开连接则一直保持TCP连接状态。
      持久连接使得多数请求以管线化(pipelining)方式发送成为可能,即:不用等待上次请求的响应后才能发送下一个请求。
    • Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态
    Cookie技术

    HTTP报文内的HTTP信息

    • HTTP报文:用于HTTP协议交互的信息
      请求行:方法 URI HTTP版本
      状态行:状态码 原因短语 HTTP版本
      首部字段:请求或响应的条件和属性的各类首部
      一般有:通用首部,请求首部,响应首部,实体首部
      其他:可能包含未定义的首部(Cookie等)
    • 编码提升传输速率
      gzip(GNU.zip)
      compress(UNIX)
      deflate(zlib)
      identity
    • 分割发送的分块传输编码:传输大块数据时,分割数据以达到逐步显示页面的效果。
    • MIME机制允许邮件处理文本,图片,视频等多个不同类型的数据。
    • 首部字段Range来指定资源的byte范围,从而实现下载中断恢复功能。
    • Accept首部字段达到服务器返回内容的最优。

    返回结果的HTTP状态码

    状态码

    与HTTP协作的Web服务器

    • 单台虚拟主机实现多个域名
      HTTP/1.1允许一台服务器搭建多个Web站点。
      在相同的IP地址下,虚拟主机可以寄存多个主机名和域名的Web网站,因此HTTP请求时,Host首部必须完整指定主机名或域名的URI
    • 通信数据转发程序:代理,网关,隧道
      代理是一种由转发功能的应用程序,是位于服务器和客户端间的中间人,负责转发请求或转发响应。客户端=>>服务器;服务器=>>客户端;
      代理服务器:接收客户端的请求再转发给其他服务器,接收源服务器的响应再转发给客户端。每次通过代理服务器时,会追加写入Via首部信息。
      缓存代理:会预先将资源的缓存保存在代理服务器上。
      透明代理:转发请求或响应时,不对报文做任何加工的代理类型。
      网关和代理十分相似,不同的是能提供非HTTP协议服务。
      隧道的目的是确保客户端与服务器进行安全的通信。
    • 保存资源的缓存
      缓存是指代理服务器或客户端本地磁盘内保持的资源副本,减少对源服务器的访问,节省了通信流量和时间。

    HTTP首部

    • HTTP请求报文


      HTTP请求报文
    • HTTP响应报文


      HTTP响应报文
    • HTTP首部字段
      首部字段是为了给浏览器和服务器提供报文主体大小,所使用的语言,认证信息等内容
      HTTP首部字段 =>> 首部字段名:字段值 =>> Content-Type:text/html
      另外单个字段可以有多个值,如:Keep-Alive: timeout=15, max=100

    • 四种HTTP首部字段类型

    通用首部字段 请求首部字段 响应首部字段 实体首部字段

    确保Web安全的HTTPS

    • HTTP的缺点
      通信使用明文,内容可能会被窃听
      不验证通信方的身份,会遭遇伪装
      无法验证报文完整性,可能被篡改
    加密处理防止被窃听
    • 通信的加密
      用SSL或TLS建立安全通信线路后,就可以在该线路上进行HTTP通信了。
      与SSL组合使用的HTTP被称为HTTPS或HTTP over SSL
    通信的加密
    • 内容的加密
      实现的前提是客户端和服务器同时具有加密和解密机制,仍有被篡改的风险
    • 不验证通信方身份的隐患
      遇到一个假的客户端
      遇到一个假的服务器
      遇到一个假的大会员
    • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
    HTTPS
    • 共享密钥加密的困境
      加密和解密同用一个密钥的方式称为共享密钥加密,对称密钥加密。密钥被攻击者获取了,那就GG了。
    共享密钥加密
    • 使用两把密钥的公开密钥加密
      公开密钥加密使用的是一对非对称的密钥,一个公开,一个私有。
    公开密钥加密
    • HTTPS采用混合加密机制
      公开密钥加密与共享密钥加密相比,处理速度慢,所以组合使用。
    混合加密机制
    • SLL速度慢吗
      通信慢
      处理速度慢
      使用专用的服务器,达到加快处理速度,对于速度慢,没有根本性的解决方案。

    确认访问用户身份的认证

    • BASIC认证
      没有加密处理,明文解码后就是用户id和密码,被盗可能性极高。另外,进行一次认证后,一般浏览器无法实现认证注销操作。
    • DIGEST认证
      质询/响应的方式,一方发送认证请求,收到质询码,根据质询码生成响应码,把响应码发给对方进行认证。密码泄露的可能性就降低了。
    • SSL客户端认证
      客户端证书+表单认证组合成双因素认证。
    • FormBase认证(多半认证基于此)
      客户端发送id和password进行匹配,认证成功后的用户信息会写入Cookie里。

    基于HTTP的功能追加协议

    • 消除HTTP瓶颈的SPDY
      一条连接只能发送一个请求
      请求只能从客户端开始,客户端不接收除响应外的指令
      请求/响应首部未经压缩就发送
      发送冗长的首部,每次互发相同重复的首部
      非强制压缩发送,可选任意压缩格式
    • Ajax的解决方法
      Ajax的核心技术是XMLHttpRequest的API,通过JS的调用就能和服务器进行HTTP通信。从而实现更新局部页面。但人未解决HTTP协议本身存在的问题。
    • Comet的解决方法
      这是通过延迟应答,模拟实现服务器向客户端推送的功能。Comet会将响应挂起,当服务器的内容更新时,再返回该响应。但仍有不足。
    SPDY的设计与功能
    • 多路复用流
    • 赋予请求优先级
    • 压缩HTTP首部
    • 推送功能
    • 服务器提示功能
    • 使用浏览器进行全双工通信的WebSocket
    • Web服务器管理文件的WebDAV

    相关文章

      网友评论

        本文标题:图解HTTP

        本文链接:https://www.haomeiwen.com/subject/ujjwhxtx.html