碎碎念

这两天比较粗略地知道了HTTP、Cookie、Session等原理和应用,但是很多都记不牢。。。还是没有理解透彻,接下来继续深入理解。
学习路线有几个学习http的网址not found,就。。。有点惋惜。。
然后接下来好好琢磨一下《图解HTTP》这本书,买了大半年了,终于开封了。。

《图解HTTP》的笔记

客户端发送请求到服务器

网络通信流程

  • 客户端在应用层发出一个HTTP请求,然后往下层传输
  • 传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记号和端口号,然后转发给网络层
  • 网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层
  • 服务器在链路层接收到数据,往上层发送

    流程中协议的职责

  1. HTTP:生成针对目标web服务器的http请求报文
  2. TCP:将http请求报文分割成报文段,按序号分,把每个报文段可靠地传给对方
  3. IP:搜索对方的地址,一边中转一边传送
  4. TCP:重组从对方那里接收到报文段
  5. HTTP:对web服务器请求的内容的处理

    确保可靠性的TCP协议

  • TCP位于传输层,提供可靠的字节流服务。

    三次握手

  • 为了准确无误地将数据送达目标处,TCP协议采用三次握手策略。

    1. 发送端首先发一个synchronize标志的数据包给对方
    2. 接收端收到后,回传一个带有synchronize/acknowledgement 的数据包
    3. 发送端再回传一个带acknowledgement 的数据包,代表握手结束
  • 若握手过程某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

    负责域名解析的DNS服务

    Domain Name System 服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。

    状态码

    1××

    信息性状态码,接收的请求正在处理

    2××

    成功状态码,请求正常处理完毕

    3××

    重定向状态码,需要进行附加操作以完成请求

    4××

    客户端错误状态码,服务器无法处理请求

    5××

    服务器错误状态码,服务器处理请求出错

    HTTP的缺点

    http使用明文方式发送,内容可能被窃听

  • 通信加密。通过SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全传输层协议),组合使用,加密HTTP通信内容。

  • 内容加密

    不验证通信方的身份,因此有可能遭遇伪装

  • HTTP协议中的请求和响应不会对通信方进行确认。

  • SSL不仅提供加密处理,还使用证书的手段,用以确定通信方。

    无法证明报文的完整性,所以有可能被篡改

  • 防篡改

    • MD5和SHA-1等散列值校验的方法
    • 确认文件的数字签名方法
    • 提供文件下载服务的网站也会提供相应的以PGP(Pretty Good Privacy,完美隐私)创建的数字签名,以及MD5算法生成的散列值。
    • PGP是用来证明创建文件的数字签名。
    • MD5是由单向函数生成的散列值。
  • 但是PGP和MD5本身可能被改写,无法百分百确保正确。

    HTTPS

  • 把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure)

  • HTTP通信接口部分用 SSL 和 TLS 协议代替。
  • 通常HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。

    SSL的公开密钥加密

  1. 共享秘钥加密,就是加密和解密同用一个密钥,也叫对称密钥加密。加密时将密钥也发给对方。(密钥有被窃听的风险)
  2. 公开密钥加密使用一对非对称的密钥。
    • 私钥和公钥。私钥不能让其他人知道,公钥可以随意发布。
    • 发送密文的一方使用对方的公钥进行加密处理,对方收到被加密的信息后,再使用私钥进行解密。
  3. HTTPS采用混合加密方式,对称和非对称。
  4. 公开密钥的真实性,用数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。