HTTP框架修炼之道|青训营笔记

64 阅读6分钟

前言:今日学习了HTTP框架,以下将是我个人的一些笔记及知识点细化和拓展

一、再谈HTTP协议

  • 1.什么是HTTP协议

超文本传输协议(Hypertext TransferHTTP :Protocol)

  • 2.请求流程
  1. DNS解析:首先,客户端需要将请求的URL中的域名解析成服务器的IP地址,这个过程称为 DNS 解析。

  2. 与服务器建立TCP连接:客户端使用解析到的服务器IP地址,通过TCP三次握手与服务器建立连接。在建立连接之前,客户端和服务端可以进行一些交互,例如客户端可以发送 HTTP 客户端信息给服务器,以告诉服务器一些客户端的特征。

  3. 发送HTTP请求:建立连接之后,客户端向服务器发送 HTTP 请求,包括请求的方式、要请求的页面路径、HTTP 协议的版本等信息。另外,在请求头中还可以携带一些其他的信息,例如 cookie、Referer、User-Agent 等。

  4. 服务器处理请求并响应:收到请求后,服务器会根据请求的路径、参数等信息来处理请求,并将相应的 HTML 页面、图片、文字等内容打包成 HTTP 响应数据返回给客户端。

  5. 客户端解析响应内容:客户端收到 HTTP 响应数据之后,需要做出相应的响应处理。这个处理包括判断响应状态码是否表示请求成功,解析响应头信息,以及处理响应体中的数据,例如渲染HTML页面、展示图片、播放视频等。

  6. 断开TCP连接:在服务器向客户端发送完响应后,可以选择立即关闭连接,或者保持连接,以备下一次连接。如果服务器选择关闭连接,则客户端也要关闭连接。

二、HTTP框架的设计与实现

  1. 一些基础知识

OSI体系结构最早用于定义网络体系结构的ISO(国际标准化组织)提出的开放系统参考模型。OSI体系结构将网络功能划分7层:分别是数据链路层、网络层、传输层、会话层、表示层、应用层、物理层。

表1 OSI网络体系结构各层作用

数据链路层负责物理层面上互连的、节点之间的通信传输。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。添加包含MAC地址的头部。负责每一个以太网区间内的通信。
网络层将数据传输到目标地址。主要负责寻址和路由选择。负责将数据发送至最终目标地址。
传输层保证传输的可靠性。只在通信双方节点上进行操作,不在路由器上进行操作。
会话层负责决定建立和断开连接(数据流动的逻辑链路)的时机、采用何种连接方法,以及数据的分割等数据传输相关的管理。
表示层将各种数据转换成网络标准传输格式,如使用何种编码格式。
应用层为应用程序提供服务并规定应用程序通信相关的细节。
物理层负责0、1比特流与电压高低、光的闪灭之间的转换。

TCP/IP体系结构是由多层协议组成的,其形状像一个栈结构,也叫TCP/IP协议栈。TCP/IP是一个四层的体系结构,主要包括:应用层、运输层、网际层和网络接口层。

表2 TCP/IP的网络体系结构各层主要功能

应用层应用层的任务是通过应用进程间的交互来完成特定网络应用。
运输层运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。
网际层运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。
网络接口层数据链路层通常简称为链路层。两台主机之间的数据传输,需要专门的链路层的协议在一段一段的链路上传送。

对比: TCP/IP 体系结构和 OSI 体系结构相比,有很大不同,没有了物理层和链路层,增加了网络接口层,网络接口层上面是网际层协议(IP)。OSI体系结构的最大好处是清楚地定义了网络中每一层的功能,提供的清晰的思路。TCP/IP 体系结构的优势在于它认可了各种传输网络并存,像高级语言和对应的编译系统解决了不同计算机系统之间的程序可移植性一样,同时也解决了不同的传输网络之间的互连和跨多个传输网络的端到端数据传输问题。

  1. 具体实现
  • HTTP协议的解析:HTTP框架需要对HTTP报文格式进行解析,包括请求报文和响应报文,提取出其中的各个部分,例如请求头、请求体、响应头、响应体等。
  • 路由系统的实现:路由系统可以将请求映射到对应的处理函数或中间件中,从而进行后续的业务逻辑处理。HTTP框架需要设计一个灵活可配置的路由系统,可以支持多种路由方式,例如路径匹配、正则匹配、HTTP方法匹配等。
  • 中间件的实现:中间件是HTTP框架的重要组成部分,可以对请求进行一系列的处理操作,例如身份认证、请求日志记录、请求参数校验、异常处理等。HTTP框架需要支持灵活可配置的中间件系统,可以方便地扩展自定义的中间件。
  • 异常处理:HTTP框架需要能够对请求处理过程中出现的各种异常进行捕获和处理,例如路由未匹配、请求方法不支持、参数校验失败、服务器内部错误等。
  • 性能优化:HTTP框架需要考虑性能优化的问题,例如对请求进行合理的缓存、尽量减少不必要的IO操作、支持多线程、多进程或协程等方式提升并发能力。
  • 安全保障:HTTP框架需要支持安全机制,例如防止跨站脚本攻击、防止SQL注入攻击、支持HTTPS协议等。