# HTTP学习笔记

# 1. 网络基础

# 1.1. TCP/IP分层管理

  • 应用层(HTTP客户端)(HTTP数据)

    应用层决定了向用户一共应用服务时通信的活动

  • 传输层(TCP)(TCP首部)

    提供处于网络连接中的两台计算机之间的数据传输

  • 网络层(IP)(IP首部)

    用来处理在网络上流动的数据包

  • 数据链路层(网络)(以太网首部)

    用来处理连接网络的硬件部分

# 2. HTTP协议

  • HTTP协议是一种不保存状态,即无状态协议。
  • HTTP方法(必须大写)
    • GET:获取资源
    • POST:传输实体主题
    • PUT:传输文件(不带验证机制,一般不使用)
    • HEAD:获得报文头部
    • DELETE:删除文件(不带验证机制,一般不使用)
    • OPTIONS:询问支持的方法
    • TRACE:追踪路径(容易引发XST跨站追踪,不常用)
    • CONNECT:要求使用隧道协议连接代理
  • HTTP保持连接,管道化(可以连续发送请求,不必等待回复),使用cookie管理状态
  • HTTP报文:
    • 报文首部:请求行、请求首部字段、通用首部字段、实体首部字段、其他
    • 空行(CR+LF)
    • 报文主体:状态行、响应首部字段、通用首部字段、实体首部字段、其他
  • 内容协商:内容协商机制是指客户端和服务器就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。比如不同语言的网页。

# 3. 状态码

  • 1XX Informational(信息性状态码):接受的请求正在处理
  • 2XX Success(成功状态码):请求正常处理完毕
  • 3XX Redirection(重定向状态码):需要进行附加操作以完成请求
  • 4XX Client Error(客户端错误状态码):服务器无法处理请求
  • 5XX Server Error(服务器错误状态码):服务器处理请求出错

# 4. 与HTTP协作的web服务器

  • 单台服务器可通过虚拟主机托管多个网站,但IP相同,因此在发送HTTP请求时,必须在host首部内完整的指定主机名或域名的URI
  • 代理,代理是一种有转发功能的应用程序
    • 缓存代理
    • 透明代理
  • 网关,网关是转发其他服务器通信数据的服务器,工作机制和代理十分相似,网关能使通信线路上的服务器提供非HTTP协议服务
  • 隧道,隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道的目的是确保客户端能与服务器进行安全的通信

# 5. 确保web安全的HTTPS

  • HTTP缺点
    • 通信使用明文,可能会被窃听
    • 不验证通信方的身份,因此有可能遭遇伪装
    • 无法证明报文的完整性,所以有可能已遭篡改
    • web服务器和特定的web浏览器在实际使用中存在的不足
    • 用Java和PHP等编程语言开发的web应用也可能存在安全漏洞
  • 加密处理
    • 通信加密:HTTP+SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全传输层协议)->HTTPS
    • 内容加密:把HTTP报文里所含的内容进行加密。由于不是将整个通信线路加密处理,所以内容仍有被篡改的风险
  • HTTPS = HTTP + 加密 + 认证 + 完整性保护

# 6. 确认访问用户身份的认证(没看懂)

# 7. 基于HTTP的功能追加协议

# 7.1. AJAX、Comet

# 7.2. SPDY

  1. 多路复用流
  2. 赐予请求优先级
  3. 压缩HTTP首部
  4. 推送功能
  5. 服务器提示功能

# 7.3. 使用浏览器进行全双工通信的WebSocket

  1. 推送功能
  2. 减少通信量
lastUpdate: 3/30/2023, 2:14:30 PM