一、概述

        Web服务器一般指的是“网站服务器”,是某种驻留在因特网上的计算机程序,可以向请求终端提供服务,主要功能时存储、处理和传递网页给“客户”,传递内容一般是HTML文档、图像、样式表或脚本等,也可以放置网站文件以供浏览或下载。

       WEB服务器也称为WWW(Word Wide Web)服务器,核心功能就是提供网页信息浏览服务,严格来说Web服务器只负责处理Http协议请求,发送静态页面的内容。

        目前主流的web服务器主要是Apache、Nginx、IIS,还有较多使用的Tomcat、Jetty、WebSphere,WebLogic,Kerstrel等。下图为市场占有率历史数据,Apache占有率较高,但是在前1K网站排名中,Nginx占有率最高。

二、Web服务器工作原理

       首先要通过TCP协议的三次握手建立与目标Web服务器的连接,然后HTTP协议生成针对目标Web服务器的HTTP请求报文,通过TCP、IP等协议发送到目标Web服务器上。HTTP协议是基于TCP协议的应用层协议,用于用户代理和服务器之间的通信,Web服务器是被动的,只有终端客户发起请求时才会响应。web服务器一般是一次请求一次回应,一问一答的工作方式:

  1. 用户代理发起资源请求,发起的通常(但不限于)是URL(统一资源标志符,Uniform Resource Identifier),发起动作类型GET/POST/DELETE/PUT等;
  2. 用户代理解析URL获取目标域名,交由DNS解析(使用者通常提供的是域名或者IP:端口);
  3. 建立TCP链接完成HTTP协商(完成双方的协议、内容格式、加密等);
  4. 用户代理把请求的内容封装成HTTP数据包发送给服务器;
  5. 服务器接收到资源请求后按照之前的协商解包数据;
  6. 服务器将用户需要的内容打包成HTTP数据包并返回给用户,完成一次工作流程。

1、在应用层HTTP协议的基本过程

http通信通常发生在TCP/IP连接之上,默认使用TCP协议的80端口,也就是说这一过程有:

  1. 建立连接。通过申请Socket套接字实现,用户打开一个Socket并将其绑定在端口上。
  2. 发送请求。客户端将请求发送到服务器的监听端口上完成一次请求动作。
  3. 发送响应。服务器监听请求并处理之后将响应内容消息发回客户端。
  4. 关闭连接。客户端和服务器双方关闭Socket结束TCP/IP会话。

2、在传输层TCP协议的基本过程

       上面也说过HTTP在TCP协议上。客户端和服务器在连接、数据交互过程中需要实现的有:

  1. 服务器绑定端口&监听端口;
  2. 客户端发动请求;
  3. 服务器响应连接请求;
  4. 建立连接;
  5. 交互数据,接收或发送;
  6. 关闭通信结束会话;

以上的2~4的三次握手和6的四次挥手。在2的时候通常包含多客户端的高并发,这也是web服务器关注的重点之一。

三次握手建立连接

四次挥手释放连接

3、Web服务在服务器端的工作原理

       Web业务在服务器端主要是在干什么呢?或者说服务器自己需要做哪些事情呢?

  1. TCP监听端口,以建立和用户代理之间的连接,完成连接后,后续的HTTP请求则不再进入监听直到释放。
  2. 预处理会先从TCP报文中获取HTTP请求;依据双方协商解密解包等;服务器在依据自生配置进行安全处理。
  3. 预处理。URL+请求动作来确定用户的资源处理方式,分配到静态或动态资源处理模块。
  4. 静态资源处理模块负责检索“静态资源”,HTML/JS/CSS/图片/视频等,内容通常为字符流或者字节流。
  5. 动态资源处理模块运行业务逻辑处理,依据不同条件返回不通内容,内容形式同静态资源。
  6. 后处理。与预处理类似的发送响应信息前的准备流程。
  7. 资源输出模块把响应信息封装成HTTP报文扔到TCP中。

说明下,静态资源和动态资源是从服务器处理信息方式或者说是响应请求内容的方式来说的。

静态资源可以简单的理解成文本、HTML、图片、JS等,内容是固定的,无需处理、无需查询数据库就可以直接发给请求者,你要什么我就给什么。

动态资源则是需要服务器程序进行处理,根据不同条件在页面也显示不同的数据,好处就是内容的更新不需要修改页面,缺点就是速度上没有静态资源响应快。客户端在获取动态资源,先将请求交给web的一个存储点,存储点链接数据库,数据库处理数据并发给服务器,服务器再发给客户端渲染展示。

更多推荐