HTTP基础 一、 一次完整的HTTP的请求如下 1、 建立连接:服务器建立或者拒绝客户端的连接; 2、 接受请求:响应某一个客户端对某一主机上的网络资源的请求,主要影响因素为网络的I/O,根据I/O响应模式主要分为以下几种, 单进程:只生成一个进程响应客户请求,串行序列响应,对于队列中的请求只能等待前一个客户端请求处理 完毕后再做响应; 多进程:生成多个进程,每个进程处理一个客户端请求; I/O复用模式: 多线程模式:一个进程生成多个线程,每个线程来响应客户请求; 事件驱动模式:基于事件监控的,一个进程可以连接多个请求,多个请求同时与一个进程通信,基 于事件回调的机制来追踪I/O情况; 复用多进程模式:可以启用多个进程,每个进程可以启用多个线程; 3、 处理请求:对客户端的请求进行分析,获取响应的原数据,比如method方法:get put post等, 首部<method> <URL> <VERSION> Host请求的主机,端口以及具体的资源定位地址; 4、 请求资源:获取报文中请求的资源,讲请求提交给内核,对于请求资源取决于磁盘的I/O及CPU的中断等; 静态资源或者动态生成的资源, 5、 生成响应报文:基于MIME(Multipurpse internet Mail Extension)类型的响应报文,返回响应MIME分 类:显示分类(指定响应格式分类) 魔法分类(有程序自行扫描得出)协商分类(协商决定格式分类) 6、 响应请求:通过TCP发送响应报文 7、 生成日志: 二、 http是一种协议,超文本传输协议,hyper text transfer protocol html是一种超文本变编程语言 URI是统一资源定位标识 Uniform Resource Identifier URL是统一资源定位符 Uniform Resource Locater 其中url是uri的子集 URN是统一资源命名 Uniform Resource Naming 常用的http服务器程序(静态): Httpd: Nginx: Lighttpd 应用程序服务器(WEB服务器兼备动态内容): 开源的:IIS Tomcat jboss jetty 商用的:webshpere weblogic oc4j 其中httpd尤为久远,httpd是在ASF(Apache Soft Foundation)阿帕奇软件基金会下一款开源软件; 模块化:core+modules DSO:Dynamic Share Object MPM:Multipath processing Modules Prefork:一个进程生成多个子进程,由子进程去响应请求,主进程会提前创建好子进程来等待响应客户请求,根 据服务器的性能适当的调整最多空闲子进程,最少空闲子进程,prefork模式下,最大的PV为1024; Worker:一个主进程生成多个子进程,每个子进程生成多个线程,每个线程处理一个请求,基于三层模式的:主进程,子进程,线程 Event:一个主进程,生成多个子进程,每个子进程处理多个客户请求的模式;