星空网 > 软件开发 > 操作系统

http服务详解(1)——一次完整的http服务请求处理过程

前言:要熟练掌握一个服务,首先需要非常了解这个服务的工作过程,这篇就详细解释了http服务的请求处理过程。

一次完整的http请求处理过程

(1)流程图

http服务详解(1)——一次完整的http服务请求处理过程images/loading.gif' data-original="http://images2017.cnblogs.com/blog/1216496/201710/1216496-20171019104632287-239294179.png" />

(2)过程详解

0、DNS域名解析:递归查询、迭代查询

  递归查询:客户端向第一个服务器查询,给最终结果

  迭代查询:第一个服务器向根查询

1 、建立连接:接收或拒绝连接请求:三次握手的过程

提高HTTP 连接性能:

  并行连接:通过多条TCP 连接发起并发的HTTP 请求

  持久连接:keep-alive, 长连接,重用TCP 连接,以消除连接和关闭的时延, 以事务个数和时间来决定是否关闭连接

  管道化连接:通过共享TCP 连接发起并发的HTTP 请求

  复用的连接:交替传送请求和响应报文(实验阶段,还未实现)

① 串行连接

http服务详解(1)——一次完整的http服务请求处理过程

② 并行连接

http服务详解(1)——一次完整的http服务请求处理过程

③ 持久连接

http服务详解(1)——一次完整的http服务请求处理过程

④ 管道化连接

http服务详解(1)——一次完整的http服务请求处理过程

 

2 、接收请求:接收客户端请求报文中对某资源的一次请求的过程,请求报文

Web 访问响应模型(Web I/O)

  单进程I/O 模型启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应,太古老了

  多进程I/O 模型 : 并行启动多个进程, 每个进程响应一个连接请求

  复用I/O 结构 :启动一个进程,同时响应N 个连接请求连接池

    实现方法: 多线程模型和事件驱动

    多线程模型:一个进程生成N个线程,每线程响应一个连接请求

    事件驱动:一个进程处理N 个请求,Nginx

      进程:比如复制的工作,项目小组,耗资源

      线程:比如人,轻量级

      一个进程必有一个线程,一个进程可以有多个线程

  复用的多进程I/O 模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N 个请求

http服务详解(1)——一次完整的http服务请求处理过程


3 、处理请求

服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息 ,根据方法,资源,首部和可选的主体部分对请求进行处理

  元数据:请求报文首部

  <method> <URL> <VERSION>

  HEADERS 格式 name:value

  <request body>

http服务详解(1)——一次完整的http服务请求处理过程

示例:

  Host: www.along.com 请求的主机名称

  Server: Apache/2.4.7

  HTTP 常用请求方式,Method:

  GET 、POST 、HEAD 、PUT 、DELETE 、TRACE 、OPTIONS

 

4 、访问资源:

服务器获取请求报文中请求的资源web 服务器,即存放了web 资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源

http服务详解(1)——一次完整的http服务请求处理过程

资源放置于本地文件系统特定的路径:DocRoot 服务的根

  DocRoot ---> /var/www/html

  例:/var/www/html/images/logo.jpg

  服务器资源路径映射方式:下篇会详解

  (a) docroot

  (b) alias

  (c) 虚拟主机docroot

  (d) 用户家目录docroot

 

5、构建响应报文

一旦Web 服务器识别出了资源,就执行请求方法中描述中的动作,并返回响应报文。响应报文中 ,包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体。

1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:

  描述了响应主体MIME 类型的Content-Type 首部

  描述了响应主体长度大小的Content-Length

  实际报文的主体内容

2)URL 重定向:web 服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径

  永久重定向 --->   临时重定向  ---> https://www.taobao.com

3)MIME 类型:多媒体的邮件扩展

Web 服务器要负责确定响应主体的MIME 类型。有很多配置服务器的方法可以将MIME 类型与资源管理起来

  魔法分类(扫描首部信息):Apache web 服务器可以扫描每个资源的内容,并将其与一个已知模式表,首部( 被称为魔法文件) 进行匹配,以决定每个文件的MIME 类型。这样做可能比较慢,但很方便,尤其是文件没有标准扩展名的时候

  显式分类:可以对Web 服务器进行配置,使其不考虑文件的扩展名或内容,强制特定文件或目录内容拥有某个MIME 类型,例如:php,Apache不识别,强制识别

  类型协商: 有些Web 服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web 服务器,使其可以通过与用户的协商来决定使用哪种格式( 及相关的MIME 类型)" 最好"

 

6 、发送响应报文

Web 服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接, 有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据 。服务器 要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接 。对持久连接来说,连接可能仍保持打开状态,在这种情况下, 服务器要 正确地计算Content-Length 首部,不然客户端就无法知道响应什么时候结束了

http服务详解(1)——一次完整的http服务请求处理过程

 

7 、记录日志

最后 ,当事务结束时,Web 服务器会在日志文件中添加一个条目,来描述已执行的事务

日志类型:下一篇会详解日志各项格式的意义

  访问日志:现在愈发重要,大数据的时代

  错误日志:排错使用

 

另附一张http服务通信过程:

http服务详解(1)——一次完整的http服务请求处理过程

 

下篇才是大头,尽情期待~

原标题:http服务详解(1)——一次完整的http服务请求处理过程

关键词:http

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

国内到越南的物流:https://www.goluckyvip.com/tag/104845.html
越南到国内的物流:https://www.goluckyvip.com/tag/104846.html
越南小包物流专线:https://www.goluckyvip.com/tag/104847.html
越南物流多少钱一公斤:https://www.goluckyvip.com/tag/104848.html
物流越南多少钱一公斤:https://www.goluckyvip.com/tag/104849.html
询盘:https://www.goluckyvip.com/tag/10485.html
300万箱!ONE将投入250亿美元,用于扩大运力:https://www.kjdsnews.com/a/1836472.html
航运系统阻断,美港口无限期关闭!:https://www.kjdsnews.com/a/1836473.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流