详解一次完整的HTTP请求处理
一次完整的HTTP请求处理过程
- 建立或处理连接:接收请求或拒绝请求
- 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程
- 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息
- 访问资源:获取请求报文中请求的资源
- 构建响应报文
- 发送响应报文
- 记录日志
一些不太重要的备注:
- 端口复用,生成一个套接字文件,在内核的内存中,进行保存记录(CIP PORT:SIP PORT),记录未及时处理的连接
- 每有一个用户进行访问连接时,都会进行记录保存
- C/S模型中,多并发模式特别常见
- 主进程会产生子进程,在子进程中响应用户请求,可处理多并发请求
HTTP 服务通信过程
接收请求的模型
并发访问响应模型(Web I/O):
- 单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应
- 多进程I/O结构:由父进程并行启动多个子进程,每个子进程响应一个请求
- 复用的I/O结构:一个进程响应n个请求,两种实现方式:
- 多线程模式:一个进程生成n个线程,一个线程处理一个请求
- 事件驱动(event-driven):一个进程直接处理n个请求
- 复用的多进程I/O结构:启动多个(m)个进程,每个进程生成(n)个线程(响应的请求的数量:m*n)
处理请求
服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理。
请求报文
一个HTTP请