HTTP02 HTTP请求处理过程的七个步骤

 
 

1、web服务处理步骤

web服务的处理过程可总结为七个步骤:

 
1)发起请求:客户端向服务器端发起连接请求,建立”三次握手“;
2)接收请求:服务器端接收用户请求,请求的数量可能是一个到很多个
3)处理请求:服务器端:根据客户端请求中命令来决定如何处理请求(get、search...)
4)访问资源:服务器收到请求,代理客户端去访问后端实际资源(mysql、磁盘文件)
5)构建响应报文:对HTTP报文首部进行封装,构建响应报文
6)发送响应报文:将封装的报文首部发回个客户端
7)记录日志:记录客户端的请求过程,如记录客户访问的记录到/var/log/access_log
2、一次完整的HTTP请求处理过程
 
1)建立请求:接收或拒绝连接请求
2)接收请求:接收客户端请求报文中对某资源的一次请求的过程
访问响应模型
 
单进程IO模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
多进程IO模型:并行启动多个进程,每个进程响应一个连接请求,Apache默认采用的模型。
复用的IO模型:启动一个进程,同时响应N个连接请求
  实现方法:多线程模型和事件驱动
    多线程模型:一个进程生成N个线程,每线程响应一个连接请求
    事件驱动:一个进程处理N个请求(nginx采用此种模型)
复用的多线程IO结构:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

IO模型总结:
单进程IO模型:理想化的,基本不存在的,一次只为一个用户处理,多了就需要排队处理
多进程IO模型:同时开10个进程,则处理10个用户请求,其他数量以此类推(Apahe默认采用的模型)
复用IO模型:一个进程可以响应多个用户的请求
 
3)处理请求:服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理
 
 
  

元数据:请求报文首部格式
<method> <URL> <VERSION>
HEADERS 格式 name:value
<request body>
 
示例:
Host: www.magedu.com 请求的主机名称
Server: Apache/2.4.7
 
HTTP常用请求方式:
Method、GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
 
 
 
4)访问资源:服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源
  
 
   资源放置于本地文件系统特定的路径:DocRoot
 
 

DocRoot -> /var/www/html
/var/www/html/images/logo.jpg

https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1529513023946&di=ca1b401de17ce063addc19d938cdfd05&imgtype=0&src=http%3A%2F%2Fupload.17u.net%2Fuploadpicbase%2Fimage%2F201405090325321529.jpg

web服务器资源路径映射方式:
  

(a) docroot
(b) alias
(c) 虚拟主机docroot
(d) 用户家目录docroot
 
 
 
 

5)构建响应报文:一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中 包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体
 
①、响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文
中通常包括:
描述了响应主体MIME类型的Content-Type首部
描述了响应主体长度的Content-Length
实际报文的主体内容
 
 
② URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
永久重定向:http://www.360buy.com
临时重定向:http://www.taobao.com
 
 
③MIME类型:
Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来
魔法分类:Apache web服务器可以扫描每个资源的内容,并将其与一个已知模式表(被称为魔法文件)进行匹配,以决定每个文件的MIME类型。
      这样做可能比较慢,但很方便,尤其是文件没有标准扩展名时
 
显式分类:可以对Web服务器进行配置,使其不考虑文件的扩展名或内容,强制特定文件或目录内容拥有某个MIME类型
 
类型协商: 有些Web服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web服务器,使其可以通过与用户的协商来决定使用哪种格式(及相关的MIME类型)"最好"
 
 
 
 
 
6)发送响应报文:Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,
          有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。
          对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,
          在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束了
 
7)记录日志:最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务
 
 
 
 
 
 
 

HTTP二、HTTP请求处理过程的七个步骤的更多相关文章

  1. 基础知识系列☞各版本下IIS请求处理过程区别

    转载地址→http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台, 它提供了极大的灵活性和 ...

  2. Hadoop Mapreduce分区、分组、二次排序过程详解[转]

    原文地址:Hadoop Mapreduce分区.分组.二次排序过程详解[转]作者: 徐海蛟 教学用途 1.MapReduce中数据流动   (1)最简单的过程:  map - reduce   (2) ...

  3. 【转】各版本IIS下ASP.net请求处理过程区别

    原文地址:http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能 ...

  4. ASP.NET请求处理过程

    当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给Aspnet_isapi.dll,aspnet_isapi.dll会通 ...

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

    前言:要熟练掌握一个服务,首先需要非常了解这个服务的工作过程,这篇就详细解释了http服务的请求处理过程. 一次完整的http请求处理过程 (1)流程图 (2)过程详解 0.DNS域名解析:递归查询. ...

  6. (转)Java回收对象的标记 和 对象的二次标记过程

    Java回收对象的标记 和 对象的二次标记过程 二次标记 针对这个问题,虚拟机的做法是进行两次标记,即第一次标记不在“关系网”中的对象.第二次的话就要先判断该对象有没有实现finalize()方法了, ...

  7. MVC的HTTP请求处理过程(IIS应用程序池、CLR线程池)

    主要内容 本文讲解的是:服务器接受Http Request请求之后,是如何进入.Net CLR,从而进一步操作的. 我们大家都知道,IIS必须先接受请求,然后才能有机会进入CLR,但对请求(reque ...

  8. 004-spring cloud gateway-网关请求处理过程

    一.网关请求处理过程 客户端向Spring Cloud Gateway发出请求.如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序.此处理程序运行通过特定于请求的过滤器链发送请求. ...

  9. asp.net的HTTP请求处理过程

    1.asp.net的HTTP请求处理过程 说明: (1).客户端浏览器向服务器发出一个http请求,此请求会被inetinfo.exe进程截获,然后转交给aspnet_isapi.dll进程,接着它又 ...

随机推荐

  1. 其它 nginx

    原地址忘了 常用命令: 在CMD下输入如下命令,可以强行关闭所有Nginx进程 taskkill /f /im nginx.exe start nginx nginx -s stop nginx -s ...

  2. python 并发编程 操作系统 进程 并发.并行 及 同步/异步,阻塞/非阻塞

    操作系统: 多道技术背景: 提高工作效率(充分利用IO阻塞的时间) 同时执行多个任务 多道技术 空间复用:充分的利用内存空间 时间复用:充分利用IO阻塞时间 分时系统: 并发:提高了程序的工作效率 两 ...

  3. base64位代码转图片文件并保存到文件夹的解决方案

    #region Base64 转图片方法 protected string Base64StringToImage(string strbase64) { try { string imgurl = ...

  4. mysql内容总体回顾

    数据类型: 数值类型: 整形 浮点型 字符串: char(定长)\varchar(不定长) char(定长):插入数据或查询数据都快,因为char在磁盘上插入数据时的存储空间是固定的,简单粗暴,直接就 ...

  5. OpenTSDB/HBase的调优过程整理

    背景 过年前,寂寞哥给我三台机器,说搞个新的openTSDB集群.机器硬件是8核16G内存.3个146G磁盘做数据盘. 我说这太抠了,寂寞哥说之前的TSDB集群运行了两年,4台同样配置的机器,目前hd ...

  6. Redux 检测状态树变更

    一 概述 Redux只是检测引用是否改变. 如果状态树的某个值是对象.数组等,在reducer中需要生成一个新对象.新数组,才能被Redux检测到变更. let fruits = ['apple',' ...

  7. 合并回文子串(区间dp)

    链接:https://ac.nowcoder.com/acm/problem/13230来源:牛客网 题目描述 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变.如" ...

  8. excel 上传读写到数据库

    <HTML> <div class="input-group"> <form id="abc" action="http ...

  9. css动画特效

    <html> <head> <meta charset="utf-8" /> <title>6种css3鼠标滑过动画效果</t ...

  10. SQL Server数据库中的系统数据库?

    SQL Server的系统数据库分为:master,model,msdb和tempdb 1.Master数据库 Master数据库记录SQL Server系统的所有系统级别信息(表sysobjects ...