Skip to content

Latest commit

 

History

History
70 lines (53 loc) · 2.86 KB

1.2-Web服务器.md

File metadata and controls

70 lines (53 loc) · 2.86 KB

Web 服务器

前面介绍了 Undertow 是一个 Web 服务器,这一篇介绍什么是 Web 服务器,以及介绍网络基础知识。

定义

Web 服务器是提供 web 页面服务的软件,web 页面一般包含 HTML,CSS 样式和 Javascript 代码。大部分 web 服务器是 HTTP服务器,使用 HTTP 协议提供 web 页面服务。

业界比较著名的 web 服务器分别是 ApacheNginx

那么一个 HTTP 请求是如何到达web服务器?HTTP 协议内容又是什么样子的?下面内容介绍网络模型和 HTTP 协议。

网络模型

如上图所示,网络模型分为7层,分别是:

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

越下面的层,越靠近硬件;越上面的层,越靠近用户。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"(protocol)。

互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"(Internet Protocol Suite),它们是互联网的核心,下面主要介绍 web 服务器的主要协议,HTTP 协议。

HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

HTTPS 经由HTTP 协议进行通信,但利用 SSL/TLS 协议来加密数据包。

HTTP 现在主流的版本是1.1,HTTP2已经开始普及。

HTTP请求相应实例

  1. 请求格式
GET /data HTTP/1.1
Host: localhost:3000
Connection: keep-alive
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8

HTTP 请求数据由三部分组成,分别是请求行、请求报头、请求正文,上面例子的第一行就是请求行,其他都是请求报头,没有请求正文。

  1. 返回格式
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 30
ETag: W/"1e-lIY93D4yuE1ATYO3FpKsa8XcLLs"
Date: Fri, 24 May 2019 10:09:02 GMT
Connection: keep-alive

{
  "content": "hello world"
}

HTTP 的响应也是由三部分组成,分别是状态行、响应报头、报文主体,第一行是状态行,中间部分是相应报头,后面是报文主体。

资料

Webserver Apache Nginx RFC2616