学而实习之 不亦乐乎

超文本传输协议(HTTP)的基本格式

2022-08-27 08:30:37

一、什么是HTTP

超文本传输协议(HTTP)The Hypertext Transfer Protocol (HTTP)是一种协议,允许 web 服务器和浏览器通过互联网进行来发送和接受数据。它是一种请求和响应协议。客户端请求一个文件而服务器响应请求。 HTTP 使用可靠的 TCP 连接--TCP 默认使用 80 端口。

在 HTTP 中,始终都是客户端通过建立连接和发送一个 HTTP 请求从而开启一个事务。 web 服务器不需要联系客户端或者对客户端做一个回调连接。无论是客户端或者服务器都可以提前终止连接。比如,当你正在使用一个 web 浏览器的时候,可以通过点击浏览器上的停止按钮来停止一个文件的下载进程,从而有效的关闭与 web 服务器的 HTTP 连接。

二、HTTP请求(Http Request)

一个 HTTP 请求包括三个组成部分:

  1. 方法(method)--统一资源标识符(URI)--协议/版本
  2. 请求的头部
  3. 主体内容

如下:

POST /examples/default.jsp HTTP/1.1
Accept: text/plain; text/html
Accept-Language: en-gb
Connection: Keep-Alive
Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate

lastName=Franks&firstName=Michael

(1)方法(method)--统一资源标识符(URI)--协议/版本

第一行是:方法(method)--统一资源标识符(URI)--协议/版本。即:
POST /examples/default.jsp HTTP/1.1
这里 POST 是请求方法,

/examples/default.jsp 是 URI。
URI 完全指明了一个互联网资源。 URI 通常是相对服务器的根目录解释的。因此,始终一斜线/开头。统一资源定位器(URL)其实是一种 URI。

而 HTTP/1.1 是协议/版本部分,该协议版本代表了正在使用的 HTTP 协议的版本。

(2)请求头

请求的头部包含了关于客户端环境和请求的主体内容的有用信息。例如它可能包括浏览器设置的语言,主体内容的长度等等。

每个头部通过一个回车换行符(CRLF)来分隔的,即 \r\n。对于 HTTP 请求格式来说,头部和主体内容之间有一个回车换行符(CRLF)是相当重要的。 CRLF告诉 HTTP服务器主体内容是在什么地方开始的。在一些互联网编程书籍中, CRLF 还被认为是 HTTP请求的第四部分。

(3)请求主体

在前面一个 HTTP 请求中,主体内容只不过是下面一行:

lastName=Franks&firstName=Michael

实体内容在一个典型的 HTTP 请求中可以很容易的变得更长

三、HTTP响应(Http Response)

类似于 HTTP 请求,一个 HTTP 响应也包括三个组成部分:

  1. 方法--统一资源标识符(URI)--协议/版本
  2. 响应的头部
  3. 主体内容

如:

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 5 Jan 2004 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 5 Jan 2004 13:13:12 GMT
Content-Length: 112

<html>
<head>
<title>HTTP Response Example</title>
</head>
<body>
Welcome to Brainy Software
</body>
</html>