1. 套接字接口

套接字接口是一组函数,它们和 Unix I/O 函数结合,用来创建网络应用。

基于套接字接口的网络应用

从 Linux 内核的角度看,套接字就是通信的端点;从 Linux 程序的角度看,套接字就是有相应描述符的打开文件。

2. Web 服务器

Web 客户端和服务器之间的交互通过基于文本的 HTTP 协议。浏览器打开一个网络连接,向服务器请求某些内容。服务器响应所请求的内容,然后关闭连接。浏览器读取这些内容,并把它显示在屏幕上。

Web 内容是一个与 MIME 类型相关的字节序列,比如 text/html、image/jpeg 等。
Web 服务器通过两种方式向客户端提供内容:

  • 取一个磁盘文件,并将它的内容返回客户端,称为静态内容。
  • 运行一个可执行文件,并将它的输出返回客户端,称为动态内容。

Http 请求(GET 方法)的组成是这样的:一个请求行,后面跟随多个请求报头,再跟随一个空文本行来终止报头。
请求行的格式是:method URI version。请求报头的格式为:header-name: header-data。

GET / HTTP/1.1
Host: www.qq.com

Http 响应的组成是这样的:一个响应行,后面跟随多个响应报头,再跟随一个终止报头的空文本行,最后跟随响应主体。
响应行的格式是:version status-code status-message。

HTTP/1.0 200 OK
MIME-Version: 1.0
Date: Jan, 11 Dec 2019 12:00:00
Server: Apache-Coyote/1.1
Content-Type: text/html
Content-Length: 42090

<html>
...
</html>
Http事务

GET 请求的参数在 URI 中。用 分隔文件名和参数,每个参数用 & 分隔,参数不允许有空格。POST 请求的参数在请求主体中。

服务器程序遵守 CGI(通用网关接口)标准,CGI 可以管理客户端如何将参数传递给服务器,服务器如何将参数和其他信息传递给子进程,以及子进程如何将它的输出返回客户端。