Web服务器
接受客户端连接
- 客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来。
- Web服务器可以随意拒绝或者立即关闭任意一条连接。
接收请求报文
连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。
解析请求报文时,Web服务器会:
- 解析请求行,查找请求方法、指定的资源标识符(URI)以及版本号,各项之间由一个空格分隔,并以一个回车换行(CRLF)序列作为行的结束。
- 读取以CRLF结尾的报文首部。
- 检测到以CRLF结尾的、标识首部结束的空行(如果有的话)。
- 如果有的话(长度由Content-Length首部指定),读取请求主体。
服务器处理连接有大概4种类型:
- 单线程Web服务器
- 多进程及多线程Web服务器
- 复用I/O的服务器
- 复用的多线程Web服务器
处理请求
一旦服务器收到了请求,就可以根据方法、资源、首部和可选的主体部分来对资源进行处理了。
对资源的映射及访问
Web服务器是资源服务器。
构建响应
一旦服务器识别出了资源,就执行请求方法中描述的动作,并返回响应报文。
响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体。
发送响应
Web服务器通过连接将响应数据发回客户端。