图解HTTP

一边读《图解http》,一边写总结,对知识做一个系统化,模板化的快速理解

TCP/IP的分层管理

  • 应用层决定了向用户提供应用服务时通信的活动。(FTP、DNS、http协议)
  • 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。(TCP和UDP协议)
  • 网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
  • 链路层(又名数据链路层,网络接口层)用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

三次握手和四次挥手



http/1.0 和 http/1.1支持的方法

内容协商技术

  • 服务器驱动协商;以请求的首部字段为参考,在服务器端自动处理
  • 客户端去顶协商;用户从浏览器显示的可选项列表中手动选择
  • 透明协商;由服务器端和客户端各自进行协商的一种方法

http状态码

2XX

  • 200 ok:表示从客户端发来的请求在服务器端被正常处理
  • 204 no content:表示服务器接受的请求已成功处理,但在返回的响应报文中不含实体的主体部分
  • 206 partial content:表示客户端进行了范围请求,而服务器成功执行了这部分的get请求

    3XX

  • 301 moved permanently:永久性重定向,该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI
  • 302 found:临时性重定向:该状态码表示请求的资源已被分配了新的URI,希望用户能使用新的URI访问
  • 303 see other:该状态码表示由于请求对应的资源存在着另一个URI,应使用get方法定向获取请求的资源
  • 304 not modified:该状态码表示客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足条件的情况
  • 307 temporary redirect:临时重定向,跟302 found有着相同的含义,307会遵守浏览器标准,不会从post变为get

    4XX

  • 400 bad request:该状态码表示请求报文中存在语法错误
  • 401 unauthorized:该状态码表示发送的请求需要有着通过http认证的认证信息
  • 403 forbidden:该状态码表示请求资源的访问被服务器拒绝了,服务器端没有必要给出拒绝的详细理由
  • 404 not found:该状态码表明服务器上无法找到请求的资源

    5XX

  • 500 internal server error:该状态码表明服务器端在执行请求发生了错误,也有可能是web应用存在的bug或某些临时的故障
  • 503 service unavailable:该状态码表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

通信数据转发程序

代理

  • 缓存代理:代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。
  • 透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy)。反之,对报文内容进行加工的代理被称为非透明代理

网关

  • 网关能使通信线路上的服务器提供非http协议服务
  • 利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全

隧道

  • 隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信

建立https通信的整个过程



Web的攻击技术

针对Web应用的攻击模式

  • 主动攻击:以服务器为目标的主动攻击,攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。代表性攻击是SQL注入攻击和OS命令注入攻击。
  • 被动攻击:以服务器为目标的被动攻击,是指利用圈套策略执行攻击代码的攻击模式。代表性攻击为跨站脚本攻击和跨站点请求伪造。