HTTP 如何工作?

2025-05-27

HTTP 如何工作?

HTTP是一种用于 WWW(万维网)的协议,它为我们提供功能性网站、网络应用程序和网络 API。HTTP客户端(互联网浏览器)使用TCP/IPUDP网络协议为HTTP我们提供 WWW 的强大和实用性。

为什么我们需要TCP/IPUDPHTTP

HTTP仅定义服务器和客户端(互联网浏览器)之间的通信规则,但为了通信,我们需要先连接到其他计算机。

TCP/IPUDP是两种流行的网络协议,用于将计算机连接在一起,以便它们进行通信。这两种网络协议在大多数操作系统中都已实现。所有 DNS 和套接字操作都发生在TCP/IPUDP协议中,而不是HTTP

HTTP客户端利用这些协议连接到不同的服务器(例如 Facebook 的服务器),然后以 的方式与它们对话HTTPTCP/IP是最受欢迎的,因此我将在本文的其余部分使用它。

TCP/IP 协议与 HTTP

HTTP简介

HTTPHTTP是一种客户端-服务器架构协议,其中客户端和服务器可以使用商定的语言( )互相要求执行特定任务。HTTP定义客户端和服务器之间通信的词语和方式,例如查看以下HTTP请求:



GET / HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.google.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive


Enter fullscreen mode Exit fullscreen mode

该请求是GETwww.google.com Host发出的请求,请求获取/文档(文档是 HTTP 中指网页的术语),使用 的1.1版本HTTP,以及服务器的其他指令/信息。

现在,服务器将HTTP根据请求做出响应。然后,客户端将解释该响应HTTP。请看以下HTTP响应:



HTTP/1.1 200 OK
Content-Encoding: gzip
Accept-Ranges: bytes
Age: 322343
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sat, 23 May 2020 05:20:54 GMT
Etag: "3147526947"
Expires: Sat, 30 May 2020 05:20:54 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (bsa/EB18)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 648

<!doctype html>
<html>
...
</html>


Enter fullscreen mode Exit fullscreen mode

您会注意到响应中有两种数据HTTP:以冒号分隔的键:值对和原始数据;以换行符分隔。

冒号分隔的键值对称为headers( header,表示单数)。一些标准标头用于指示(例如Connection),另一些用于提供信息(例如User-Agent)。

原始数据被称为body请求或响应。body​​可以包含任何类型的原始数据,例如 html、json、二进制文件和表单数据。

请求和响应都可以包含HTTP定义的标准和非标准headers以及body

大多数情况下,服务器和客户端会body按照 中的指示进行解释headers。例如,上面的响应有一个Content-Type: text/html; charset=UTF-8标头,指示HTTP客户端将body响应解释为 HTML,从而生成呈现的 HTML 页面。

HTTP交易生命周期

背景:您使用互联网浏览器访问www.google.com

  1. 浏览器使用TCP/IP操作系统提供的协议连接到www.google.com服务器
  2. 浏览器使用上一步建立的连接向服务器发送 HTTP 请求
  3. 服务器接收HTTP请求
  4. 服务器解释 HTTP 请求并使用 HTTP 响应进行响应
  5. 浏览器收到 HTTP 响应
  6. 浏览器解释 HTTP 响应(例如,如果它是 HTML;则渲染它)

浏览器是 HTTP 客户端
,服务器在文章中指的是 Web/HTTP 服务器(还有其他类型的服务器)

如果您没有从帖子中了解到任何概念/术语,请在评论部分询问我。

你可以在Twitter上关注我

查看 GetResume,一款免费的简历生成器

文章来源:https://dev.to/inambe/how-http-works-2492
PREV
软件架构原理:系统升级和灵活设计
NEXT
编程中的抑郁和焦虑