HTTP-web服务器

web服务器

web服务器实现了http和相关的tcp连接处理,负责管理web服务器提供的资源,以及对服务器的配置,控制以及拓展等方面的管理
web服务器逻辑实现了http协议,并负责提供web服务器的管理功能,web服务器逻辑和操作系统共同负责了tcp连接,底层操作系统负责管理底层计算机系统的硬件细节,提供了tcp/ip的网络支持,负责装在web资源的文件系统以及控制当前计算活动的进程管理系统。
实际的web服务器的步骤

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

接受客户端连接

如果客户端已经打开了一条服务器的持久连接,可以使用连接来发送他的请求。否则客户端需要打开一条新的服务器连接

处理新的连接

客户端请求一条到web服务器的tcp连接的时候,web服务器会建立起来,判断另一端是哪个客户端,从tcp连接中将ip地址解析出来,一旦建立新的连接并被接受,服务器就会将新的连接添加到现存的web服务器列表中,做好监视连接上数据的准备。
web服务器可以随意的拒绝或者立即关闭任意一条连接,有些web服务器会因为客户端的ip地址或者主机名是未认证的,或者是已知的恶意客户端而关闭连接。web服务器可以使用其他的识别技术。

客户端主机名识别

可以使用反向dns对大部分web服务器进行配置,以便将客户端ip地址从转换为客户端主机名,web服务器可以将客户端主机名用于详细的访问控制和日志记录。
主机名查找会花费大多时间,这样会降低web事务处理的速度,很多大容量web服务器会禁止主机解析,只允许对特定的内容进行解析。

通过ident确定客户端用户

有些web服务器还支持IETF的ident协议,可以通过这个协议找到http连接的用户名,这些信息对web服务器的日志记录很有用。
如果客户端支持ident协议,就在tcp端口113上监听ident请求,客户端打开了一条http连接,然后服务器打开自己到客户端ident服务器端口113的连接,发送一条简单的请求,询问与新连接对应的用户名,并从客户端解析出包含用户名的响应。
在这里插入图片描述

ident在组织内部可以很好的工作,但是在互联网上不能很好的运作。

  • 很多客户端pc没有运行ident识别协议守护进程软件
  • ident协议会使HTTP事务处理产生严重的时延
  • 很多防火墙不允许ident流量接入
  • ident协议不安全,容易被伪造
  • ident协议不支持虚拟ip地址
  • 暴露客户端的用户名还涉及到隐私的问题

接受请求报文

连接上有数据到达的时候,web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。
解析请求报文的时候,web服务器会

  • 解析请求行,查找请求方法,指定的资源标识符以及版本号,各项之间有一个空格分割,并且以一个回车符作为行的结束。
  • 读取crlf结尾的报文首部
  • 检测到crlf结尾的,标识首部结束的空行
  • 如果有的化,长度由content-length首部指定,读取请求主体
    在这里插入图片描述

报文的内部表示法

有些web服务器还会便于进行报文操作的内部数据结构来存储请求报文,数据结构中可能包含有指向请求报文中各个片段指针及其长度,这样就可以将这些首部放到一个快速查询表中,以变快速的访问特定首部的具体值了
在这里插入图片描述

连接的输入/输出处理结构

高性能的web服务器能够同时支持数千条连接,这些连接使得服务器可以与来自世界各地的客户端进行同行,每个客户端都向服务器打开了一条或者多条连接, 某些连接可能在快速的向web服务器发送请i去,而其他的一些连接则可能慢慢在发送,或者不经常发送,还有一些是空闲的,安静的等待将来可能出现的动作。

  1. 单线程的web服务器
    单线程的web服务器一次只处理一个请求,知道处理完成为止,一个事务处理结束之后,才能去处理下一条连接,这种结构易于实现,但是在处理过程中,所有其他的连接会被忽略。
  2. 多进程以及多线程web服务器
    多进程和多线程web服务器用多个进程,或者使用更高效的线程为请求进行处理,可以根据需要创建,或者预先创建一些线程或者进程。有些服务器会为每条连接分配一个线程或者进程,当服务器同时要处理成百上千甚至数以万计的连接的时候,需要的进程或者线程数量可能会消耗太多的内存或者系统资源
  3. 复用io的服务器
    为了支持大量的连接,很多web服务器都采用了复用结构,在复用结构中,要同时监视所有连接上的活动,当连接的状态发生变化的时候,就对那条连接进行少量的处理,处理结束以后,将连接返回到开放连接列表中,等待下一次的状态变化。只有在有事情做的时候才会对连接进行处理。在空闲连接上等待的时候不会绑定线程或者进程。
  4. 复用的多线程web服务器
    有些系统会将多线程和复用功能结合在一起,利用计算机平台上的多个cpu,多个线程中的每一个都在观察打开的连接或者打开的连接中的一个子集,并对每条连接执行少量的任务。
    在这里插入图片描述

处理请求

一旦web服务器接收到了请求,就可以根据方法,资源,首部和可选的主体部分来对请求进行处理了。
有的方法要求请求报文中必须带有实体主体的部分的数据,其他方法允许有请求的主体部分,也允许没有,少数方法禁止在请求报文中包含实体的主体数据。

对资源的映射以及访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/691519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

skywalking基础使用

skywalking基础使用 找链路追踪Id将链路追踪Id拿到skywalking-ui中筛选对应链路补充说明例如, sql的打印能让我们了解到代码中对应的sql是否符合预期 找链路追踪Id 在接口响应header中复制x-trace-id 这个接口响应正常了, 异常没有暴露到前端, 且调用链路很长, 但我们借助s…

校园外卖系统的技术架构与实现方案

随着校园生活的日益现代化,外卖需求在高校学生群体中迅速增长。为了满足这一需求,校园外卖系统应运而生。本文将详细探讨校园外卖系统的技术架构及其实现方案,帮助读者了解这一系统的核心技术与实现路径。 一、系统概述 校园外卖系统主要包…

【旅行】关于毕业旅行与长期旅行计划(城市、攻略、预算、交通、面基等)

【旅行】关于毕业旅行与长期旅行计划(城市、攻略、预算、交通、面基等) 文章目录 一、目的地与去哪儿玩1、可能2、人民币3、国家地理4、省份与城市5、环球旅行 二、攻略之怎么玩(旅行预算、攻略)1、旅行预算之交通、住宿、门票等2…

Linux 35.5 + JetPack v5.1.3@RACER编译安装

Linux 35.5 JetPack v5.1.3RACER编译安装 1. 源由2. 编译&安装Step 1:依赖库安装Step 2:LKH-3安装Step 3:建立工程Step 4:编译工程Step 5:安装工程 3. 问题汇总3.1 组件ros-noetic-multi-map-server问题3.2 swarm…

自动化测试-Selenium-元素定位

一.元素定位 因为使用selenium进行自动化测试,元素定位是必不可少的,所以这篇文章用于自动化测试中的selenium中的元素定位法。 1.根据id属性进行定位(id是唯一的) id定位要求比较高,要求这个元素的id必须是固定且唯…

基于深度学习的在线选修课程推荐系统

基于深度学习的在线选修课程推荐系统 1、效果图 点我查看Demo 2、功能 可联系我-微-信(1257309054) 登录注册、点赞收藏、评分评论,课程推荐,热门课程,个人中心,可视化,后台管理,课程选修3、核心推荐代…

初入阿里云,上手走一波

初入阿里云,上手走一波 一阶:ECSMysqlDMS安装Mysql初始化MysqlMysql操作DMS管理Mysql 二阶:ECSOSS远程连接ECSOSS控制台其他图片服务 三阶:更多搭配操作 可以说个人在日常使用过程中,操作最多的阿里云产品就是阿里云服…

结构体(1)<C语言>

导言 结构体是C语言中的一种自定义类型,它的值(成员变量)可以是多个,且这些值可以为不同类型,这也是和数组的主要区别,下面将介绍它的一些基本用法,包括:结构体的创建、结构体变量的…

信号:干扰类别及特征提取(二)

目录 第二部分:特征提取 一:瞬时特征参数 1.零中心归一化瞬时幅度之谱密度的最大值 2.非弱信号段零中心归一化瞬时幅度的标准偏差 3.零中心归一化瞬时幅度绝对值的标准偏差 4.零中心归一化非弱信号段瞬时频率的标准偏差 5.零中心归一化非弱信号段…

Java进阶_继承特性

继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象具有父类对象相同的特征及行为。 兔子和羊属于食草动物类,狮子和豹子属于食肉动物类。食草动物和食肉动物又…

软考架构-计算机网络考点

会超纲,3-5分 网络分类 按分布范围划分 局域网 LAN 10m-1000m左右 房间、楼宇、校园 传输速率高 城域网 MAN 10km 城市 广域网 WAN 100km以上 国家或全球(英特网) 按拓扑结构划分 总线型:利用率低、干…

01Linux的安装,时区,固定IP的配置

Linux系统的简介与安装 Linux简介 计算机是由硬件和软件所组成 硬件:计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流(操作系统) 操作系统作为用户和…

玩游戏时服务器遭到DDOS攻击崩溃,DDOS攻击是什么?

某网游服务器突然崩溃,大量玩家被迫下线。随后该游戏官方出面解释是因服务器遭遇了DDoS攻击,所以导致登录异常。这个DDoS攻击到底是哪里来的鬼怪,敢这么给自己加戏? 什么是DDoS攻击? DDoS攻击,专业表述是“…

读AI未来进行式笔记06自动驾驶技术

1. 跃层冲击 1.1. 每个社会其实都处于不同的楼层,往往处于更低楼层的社会,要承受来自更高楼层的社会发展带来的更大冲击 2. 驾驶 2.1. 开车时最关键的不是车,而是路 2.2. 人是比机器更脆弱的生命&am…

2003NOIP普及组真题 3. 数字游戏

线上OJ 地址: 【03NOIP普及组】数字游戏 此题考察的是 区间DP 前缀和 核心思想: 1、这道题主要考查了动态规划的思想。通过分析题目,可以发现需要 枚举环上所有划分为m组 的不同方案,来求得最大或最小值。属于 环上动态规划 问…

IIoT(智能物联网)的现状、应用及安全

近年来,物联网(IoT)作为推动现代公司和智能城市发展的一个范式,已经取得了显著的发展。IoT使得分布式设备(如手机、平板电脑和计算机)能够感知并从外部环境传输数据,以服务于最终用户。IoT的概念…

菜品信息分页查询——后端SpringBoot

1.分页查询的逻辑: 页面发送ajax请求,将分页查询参数(page,pageSize, name)提交到服务端,获取分页数据; 页面发送请求,请求服务端进行图片下载,用于页面图片展示。 开发菜品信息分页查询功能&a…

【动态规划-BM79 打家劫舍(二)】

题目 BM79 打家劫舍(二) 描述 你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如…

uc_os操作练习

目录 一、CubeMX配置 二、获取uc-os源码 三、代码移植 四、代码修改 五、总结 六、参考资料 一、CubeMX配置 首先进入CubeMX,,新建工程,选择STM32F103C8T6芯片,照例配置好RCC和SYS。 然后配置GPIO输出,这里选择P…

牛客NC32 求平方根【简单 二分 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** para…