服务器能干什么,服务器的作用介绍

我们知道,不同肤色的人,外貌差异很大,很难识别双胞胎 。有趣的是网络服务器
/Web 容器/Web 应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现 。本文将对这四个概念进行区分 。
Web服务器概念和基本原理
网络服务器的历史
1989年,互联网之父伯纳斯·李向他的雇主欧洲核子研究中心提出了一个新项目,旨在通过使用超文本系统方便科学家之间的信息交流 。
这个项目促使Berners-Lee在1990年编写了两个程序:
一个名为 World Wide Web 的浏览器 。世界上第一个网络服务器,后来被称为 CERN httpd,它运行在 NeXTSTEP 上在 1991 年至 1994 年期间,用于通过万维网冲浪和交换数据的早期技术的简单性和有效性有助于将其移植到许多不同的操作系统,并将其用于科学组织和大学,然后传播到行业 。1994年,Berners-Lee决定成立万维网联盟(W3C)来管理许多相关技术(HTTP、HTML等)的进一步发展 。)通过标准化流程 。
这是服务器:
Web服务器的主要功能是存储、处理和向客户交付网页 。客户端和服务器之间的通信使用超文本传输协议(HTTP)来执行 。
最常见的交付页面是HTML文档,除了文本内容之外,可能还包含图像、样式表和脚本 。
一个用户代理,通常是Web浏览器或者Web爬虫,发起HTTP请求获取服务器资源,服务器根据请求返回资源或者响应某种原因的错误消息 。
这种资源通常是服务器辅助存储器上的真实文件,但根据Web服务器的实现,情况不一定如此 。
虽然主要功能是提供内容,但是HTTP的完整实现还包括从客户端接收内容的方式 。此功能用于提交Web表单,包括上传文件 。
许多通用Web服务器也支持使用动态服务器页面(ASP)、PHP或其他脚本语言的服务器端脚本 。
这意味着Web服务器的行为可以编写在一个单独的文件中,而实际的服务器软件保持不变 。
通常,该函数用于动态生成HTML文档(“实时”),而不是返回静态文档 。前者主要用于从数据库中检索或修改信息;后者通常更快,更容易缓存,但它不能提供动态内容 。
网络服务器不仅用于服务万维网 。它们也可以嵌入到打印机、路由器、网络摄像机等设备中 。,并且只服务于本地网络 。
然后,网络服务器可以用于监控或管理所讨论的设备的系统的一部分 。
这通常意味着不需要在客户端计算机上安装其他软件,因为只需要一个web浏览器(现在包含了大多数操作系统) 。
web服务器的工作原理
HTTP是基于TCP的应用层协议,用于用户代理和Web服务器之间的通信 。
Web服务器通常以问答的方式工作:
在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识 URI,指明动作类型(GET/POST/DELETE/PUT…) 用户代理解析用户输入 URI 并从中获取目标域名,交由 DNS 服务器解析 。如果 URI 中指定某 IP 地址,就无需这步 。如果与服务器的会话还没建立,此时先建立 TCP 连接,并完成 HTTP 协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等) 。用户代理把请求内容封装成 HTTP 数据包向服务器发送 。服务器接收到资源请求并以之前协商好的方式解包并处理 。服务器请求的资源封装成 HTTP 数据包并返回给用户代理 。接下来,我们来重点介绍一下服务器的工作原理,如下图所示:
TCP监听模块:服务器监听某个端口(一般默认端口为8080,用户可以设置其他端口)与用户代理建立连接 。一旦建立了连接,来自用户代理的后续HTTP请求将不需要进入监听模块 。
预处理:这里主要做三件事:从TCP消息中获取HTTP请求消息,根据与用户代理的协商进行解密、解压缩、安全处理等等 。根据服务器本身的配置,进行安全处理,建立会话状态等等 。
UR路由:解析URL字符串和动作,确定用户代理请求的资源,根据匹配规则(通常是正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块 。
静态资源处理模块:负责查找静态资源,如HTML/JavaScript/CSS文件/图片/图像,确定内容是字符流还是字节流,确定对应的MIME 。
比如HTML生成的是MIME为text/html的字符流,mpeg视频文件生成的是MIME为video/mpeg的字节流 。
动态资源处理模块:运行业务逻辑处理,动态确定返回资源的内容和类型 。内容和类型的处理原则同上 。
后期处理:根据与用户协商的协议进行加密、压缩、安全处理等 。
输出模块:将处理后的内容和类型封装成HTTP消息,并将TCP消息(内容为HTTP消息)发送给TCP连接另一端的用户代理 。


推荐阅读