# 工作原理

 WebNet 软件包主要用于在嵌入式设备上实现 HTTP 服务器，软件包的主要工作原理基于 HTTP 协议实现。

![WebNet 软件包工作原理](figures/principle.jpg)

HTTP 协议定义了客户端如何从服务器请求数据，以及服务器如何把数据传送给客户端的方式。HTTP 协议采用了`请求/响应模型`。 客户端向服务器发送一个请求报文，请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器通过解析请求头部信息，执行相应的功能模块，并且给客户端发送响应数据，响应数据的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

在 HTTP 协议的实际使用过程中，一般遵循以下流程：

1. 客户端连接到服务器

    通常是通过 TCP 三次握手建立 TCP 连接，WebNet 中默认的连接端口号为 80。

2. 客户端发送 HTTP 请求

    通过 TCP 套接字，客户端向 WebNet 发送一个请求报文，一个请求报文由请求行、请求头部、空行和请求数据四部分组成

3. 服务器接收请求并解析数据信息

    服务器接收到客户端的请求后，开启解析请求信息，定位服务器上请求的资源文件，然后向客户端发送响应数据，由客户端读取。一个响应数据由状态行、响应头部、空行和响应数据四部分组成。

4. 客户端和服务器断开连接

    若客户端和服务器之间连接模式为普通模式，则服务器主动关闭 TCP 连接，客户端被动关闭连接，释放 TCP 连接。若连接模式为 keepalive 模式，则该连接保持一段时间，在该时间内可以继续接收数据。

