【图解HTTP】读书笔记

【图解HTTP】读书笔记

常见概念

  • HTTP:全称是Hyper Text Transfer Protocol,超文本传输协议
  • 版本:HTTP/1.0、HTTP/1.1
  • 协议:某一种公用的规则
  • HTTP相关协议
    • DNS:用于将域名解析为IP,供IP层使用
    • TCP:提供可靠在字节流服务,用于传输HTTP报文
    • IP:根据IP地址,选择合适的路由,发送对应的数据包
    • ARP:用于将IP解析为MAC地址,供数据链路层使用
  • URL与URI
    • URI:Uniform Resource Identifier,统一资源标识符,也就是通过某种协议方案标识的资源的定位符
    • Uniform:以统一的格式进行标识
    • Resource:可以用于标识的资源
    • Identifier:标识具体可以标识的对象
    • 作用:用于标识资源
    • URL:Uniform Resource Locator,统一资源定位符,是URI的一个子集,用于标识某一具体的资源
    • 需要注意的是,URI可以用于描述某一资源,但可能无法具体定位到某一个资源,而URL则是可以具体定位到该资源

简单的HTTP协议

通信模式:基于请求和响应模式,没有请求则没有响应,通信过程中不保存状态信息(无状态协议),也就是不对请求和响应之间的通信状态进行保存

报文类型

  • 请求报文
    • 格式(请求行 请求头部字段\r\n请求实体内容)
  • 响应报文
    • 格式(响应行 响应行头部字段\r\n响应实体内容)

HTTP方法

  • GET:用于获取资源
  • POST:用于传输主体的实体
  • PUT:用于传输文件(一般网站不开发该功能)
  • HEAD:与GET类似,但是不返回报文主体内容,主要用于确认URI有效性以及资源的更新日期
  • DELETE:用于删除文件,与PUT相反(一般不开放)
  • OPTIONS:用于查询指定URI资源支持的方法
  • TRACE:跟踪路径(不怎么使用)
  • CONNECT:要求使用隧道协议连接代理,主要是SSL(Secure Sockets Layer,安全套接字)和TLS(Transport Layer Security,传输层安全)将通信的内容加密

长连接和短连接

  • 短连接:在HTTP初期版本中,每次完成一个HTTP传输,就需要建立一次TCP连接,会造成很多不必要的开销,使得网络性能降低
  • 长连接:只要通信的一端没有明确提出断开连接,则保持TCP连接(keep-alive),建立一个TCP连接可以进行多次的HTT通信,减少了TCP的建立以及断开所造成的额外开销,减轻负担

管线化

在长连接的基础上,使得请求管线化成为可能,在这之前,每一次请求都需要等到前一次请求的响应回来之后才能发出,而采用管线化之后,则可以不用等到响应再发出新的请求

Cookie技术

在请求和响应报文中,加入Cookie信息,用于保存状态信息,从而使得无状态协议HTTP协议可以保存状态

HTTP报文信息

  • HTTP报文
    • 使用HTTP协议进行通信的信息称为HTTP报文
    • 请求端发出的报文称为请求报文
    • 响应段发出的报文称为响应报文
    • 报文的基本格式(报文首部CRLF报文主体)
      【报文结构图】

HTTP状态码

  • 作用:用于告知客户端服务端处理的结果
  • 格式:3位数字 + 状态码说明
  • 类别
    • 1XX:信息性状态码,表示请求正在处理
    • 2XX:成功状态码,表示请求正常处理完毕
    • 3XX:重定向状态码,需要进行附加操作以完成请求
    • 4XX:客户端错误状态码,服务器无法处理请求
    • 5XX:服务器错误状态码,服务器处理请求错误
  • 常用状态码
    • 2XX系列,表示成功
    • 200 OK,表示请求被正常处理
    • 204 No Content, 表示请求被正常出来,但是返回的响应报文中不包含实体的主体部分
    • 206 Partial Content,表示客户端进行范围请求,而服务端成功执行了这部分的请求,响应报文由Content-Range指定实体内容
    • 3XX系列,重定向,表示浏览器需要执行某些特殊的处理以正确处理请求
    • 301 Moved Permanently,永久性重定向,表示请求的资源已经分配了新的URI,以后应该使用新的URI
    • 302 Found,临时性重定向,表示请求的资源已经分配新的URI,希望用户本次能使用新的URI访问
    • 303 See Other,表示请求的资源存在另外一个URI,应使用GET方法定向获取资源
    • 304 Not Modified,请求的附带条件的资源找到,但是未满足请求的条件(与重定向无关)
    • 307 Temporary Redirect,临时性重定向,与302类似
    • 4XX系列,客户端错误,表明客户端是发生错误的原因所在
    • 400 Bad Request,请求报文中存在语法错误
    • 401 Unauthorized,表示请求需要认证
    • 403 Forbidden,表示请求的资源被服务器拒绝
    • 404 Not Found,无法找到请求的资源
    • 5XX系列,服务器错误,表示服务器本身发生错误
    • 500 Internal Server Error,服务器执行请求时发生了错误或临时性故障
    • 503 Service Unavailable,服务器暂时处于超载状态或正在进行停机维护,现在无法处理请求

HTTP首部

  • 作用:在客户端与服务器通信过程中传递额外信息
  • 格式:首部字段名: 字段值1, 字段值2, ...
  • 类型
    • 通用首部字段(请求和响应报文都会使用的字段)
      通用首部字段
    • 请求首部字段(补充了请求的附加信息)
      请求首部字段
      请求首部字段
    • 响应首部字段(补充了响应的附加信息)
      响应首部字段
      响应首部字段
    • 实体首部字段(补充与实体内容有关的信息)
      实体首部字段

确保安全的HTTPS

HTTP缺点(未加密协议)

  • 使用明文通信,内容可能会被窃听
  • 不验证通信方的身份,有可能会遭遇伪装
  • 无法验证报文的完整性,有可能内容遭修改

加密策略

  • 通信加密,通过和SSL或TLS组合使用,建立安全的通信通道,加密HTTP通信内容
  • 内容加密,将参与通信的内容本身加密

HTTPS = HTTP + 加密 + 认证 + 完整性保护,需要注意的是,HTTPS本身并非新的协议,只是在HTTP上加了SSL
HTTP与HTTPS

猜你喜欢

转载自blog.csdn.net/xuhuanfeng232/article/details/77879360