各种形状,风格,尺寸的Web服务器

Web服务器会对HTTP请求进行处理并提供响应。
Web服务器有着不同的风格,形状和尺寸
但是不管功能,外貌,风格有何差异,所有的Web服务器都能够接收请求资源的HTTP请求,将内容回送给客户端

Web服务器的实现

Web服务器需要实现如下:

  • 实现HTTP和相关的TCP连接处理
  • 负责管理Web服务器提供的资源
  • Web服务器的配置,控制以及扩展方面的管理

Web服务器逻辑和操作系统共同负责管理TCP连接
底层操作系统负责如下:

  • 管理底层计算机系统的硬件细节
  • 提供TCP/IP的网络支持
  • 负责装载Web资源的文件系统
  • 控制当前计算活动的进程管理功能

Web服务器的不同形式

  • 在标准的计算机系统上安装并运行通用的软件Web服务器
  • Web服务器设备,通常是一台安装在时髦机架上的计算机
  • 少量计算机芯片上实现嵌入式Web服务器

通用软件Web服务器

通用软件Web服务器都运行在标准的,有网络功能的计算机系统上。

实际的Web服务器会做些什么

  1. 建立连接:接收一个客户端连接,如果不希望与这个客户端建立连接,就将其关闭
  2. 接收请求:从网络中读取一条HTTP请求报文
  3. 处理请求: 对请求报文进行解析,并采取行动
  4. 访问资源:访问报文中指定的资源
  5. 构建响应:创建带有正确首部的HTTP响应报文
  6. 发送响应:将响应回送给客户端
  7. 记录事务处理过程:将与已完成事务有关的内容记录在一个日志文件中

接收客户端连接

处理新连接

当客户端请求一条道Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来
新连接建立起来后,服务器会将新连接添加到其现存Web服务器连接列表中,做好监视连接上数据传输的准备。
服务器客户随意拒绝或立即关闭任意一条连接

客户端主机名识别

可以用“反向DNS”,以便将客户端IP地址转换成客户端主机名。
Web服务器可以将客户端主机名用于详细的访问控制和日志记录
注:主机名查找会花费很长时间,所以很多大容量Web服务器要么会进制主机名解析,要么只允许对特定内容进行解析。

通过ident确定客户端用户

有些Web服务器还支持IETF的ident协议。
服务器通过ident协议找到发起HTTP连接的用户名

ident可以在组织内部很好的工作,但出于很多原因,在公共因特网上并不能很好的工作。

接收请求报文

连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来,解析请求报文时,Web服务器会不定期地从网络上接收数据。
Web服务器需要从网络中读取数据,将部分报文数据临时存储在内存中,知道收到足以进行解析的数据并理解其意义为止,解析过程如下:

  1. 解析请求行,查找请求方法,指定的URL和版本号
  2. 读取以CRLF结尾的报文首部
    3.检测到以CRLF结尾的,标识首部结束的空行(如果有)
  3. 读取请求主体(如果有)

处理请求

Web服务器接收请求后,就会根据方法,资源,首部和可选的主体部分对请求进行处理。

对资源的映射及访问

Web服务器是资源服务器,负责发送预先创建好的内容,以及运行在服务器上的资源生成程序所产生的动态内容。
Web服务器在将内容传送给客户端之前,需要将请求报文中的URL映射为Web服务器上社党的内容或内容生成器,以识别出内容的源头

构建响应

Web服务器识别出资源后,开始执行请求方法中描述的动作,返回响应报文,响应报文中包含有响应状态码,响应首部,响应主体(如果有)

响应实体

如果响应主体存在,响应报文中通常包括:

  • 描述响应主体MIME类型的Content-Type首部
  • 描述了响应主体长度的Content-Length首部
  • 实际报文的主体内容

重定向

Web服务器有时会返回重定向响应而不是成功的报文。
Web服务器可以将浏览器重定向到其他地方来执行请求。

发送请求

Web服务器通过连接发送数据时,服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在想服务器发送数据,还有一些在客户端回送响应数据。
服务器要记录连接的状态

记录日志

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

《HTTP权威指南》5-Web服务器的更多相关文章

  1. 和我一起学《HTTP权威指南》——Web服务器

    Web服务器 Web服务器会做些什么 1.建立连接(接受或关闭一个客户端连接) 2.接收请求(读取HTTP报文) 3.处理请求(解释请求报文并采取行动) 4.访问资源 5.构建响应(创建带有正确首部的 ...

  2. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  3. Visual Studio中用于ASP.NET Web项目的Web服务器

    当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们. 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Expr ...

  4. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  5. 图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应

    作者简介   李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...

  6. 《Web性能权威指南》

    <Web性能权威指南> 基本信息 原书名:High performance browser networking 原出版社: O'Reilly Media 作者: (加)Ilya Grig ...

  7. web性能权威指南(High Performance Browser Networking)

    web性能权威指南(High Performance Browser Networking) https://www.cnblogs.com/qcloud1001/p/9663524.html HTT ...

  8. Web性能权威指南 PDF扫描版​

    Web性能权威指南是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物.<Web性能权威指南>目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识.全书 ...

  9. HTTP 1.x 学习笔记 —— Web 性能权威指南

    HTTP 1.0的优化策略非常简单,就一句话:升级到HTTP 1.1.完了! 改进HTTP的性能是HTTP 1.1工作组的一个重要目标,后来这个版本也引入了大量增强性能的重要特性,其中一些大家比较熟知 ...

随机推荐

  1. 编写高效的 CSS 选择器

    高效的CSS已经不是一个新的话题了,也不是我一个非得重拾的话题,但它却是我在Sky公司工作之时,所感兴趣的,关注已久的话题. 有很多人都忘记了,或在简单的说没有意识到,CSS在我们手中,既能很高效,也 ...

  2. Python中日期和时间格式化输出的方法

    本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...

  3. Python小白自问自答

    1. 问:python怎么查看命令的含义和用法? 答:查一些简单命令的含义以及用法,直接help(命令)就行了.例如直接输入help(input),这表示查input的用法. 例子如下: help(p ...

  4. Scrapy爬取猫眼《复仇者联盟4终局之战》影评

    一.分析 首先简单介绍一下Scrapy的基本流程: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包( ...

  5. SpringCloud微服务负载均衡与网关

    1.使用ribbon实现负载均衡ribbon是一个负载均衡客户端 类似nginx反向代理,可以很好的控制htt和tcp的一些行为.Feign默认集成了ribbon. 启动两个会员服务工程,端口号分别为 ...

  6. ES查询-match VS match_phrase

    我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...

  7. functools 之 partial(偏函数)

    当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单.当然,decorator(装饰器) 也可以实现, ...

  8. bootstrap table dataView展开行详情,p元素自动换行

    // bootstrap table 行详情展开,p元素自动换行1 .tableClass .detail-view p{ white-space: normal; }

  9. 谷歌搜索技巧(转)https://www.runningcheese.com/google

    原文地址: Google是一个非常精密成熟的搜索引擎,其搜索结果的丰富性和准确度较其他搜索引擎都要好,但大多数用户都还只是停留在搜索框中输入一两个关键字,然后点击“搜索”按钮的阶段,这一过程是非常低效 ...

  10. Matting任务里的Gradient与Connectivity指标

    Matting任务里的Gradient与Connectivity指标 主要背景 Matting任务就是把α(不透明度, 也就是像素属于前景的概率).F(前景色)和B(背景色)三个变量给解出来. C为图 ...