HTTP|青训营笔记

62 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第31天

一、什么是HTTP?

  • 超文本传输协议(Hyper Text Transfer Protocol) - 应用层协议,基于TCP协议 - 请求响应 - 简单可扩展 - 无状态

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: (1)客户与服务器建立连接;

(2)客户向服务器提出请求;

(3)服务器接受请求,并根据请求返回相应的文件作为应答;

(4)客户与服务器关闭连接。

以下是 HTTP 请求/响应的步骤

  1. 客户端连接到Web服务器一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,www.baidu.com。

  2. 发送HTTP请求通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

  3. 服务器接受请求并返回HTTP响应Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  4. 释放连接TCP连接若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  5. 客户端浏览器解析HTML内容客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

1 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

2 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

3 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

4 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

5 释放 TCP连接;

6 浏览器将该 html文本并显示内容;

  • HTTP的优点

  1. 寻址

HTTP使用高级寻址方案。它为IP地址分配可识别的名称,以便在万维网中轻松识别。与IP地址的标准流程相比,使用一系列数字,公众可以轻松地与互联网互动。

  1. 灵活性

每当应用程序需要其他功能时,HTTP都可以下载扩展或插件并显示相关数据。这些可以包括 Flash 播放器和 Acrobat 阅读器。

  1. 安全

在HTTP中,每个文件都是从一个独立的连接下载的,然后被关闭。因此,不会传输超过一个网页的单个元素。因此,传输过程中被截获的机会在这里被最小化。

  1. 延迟

只有当连接建立时,握手过程才会发生在HTTP中。因此,请求之后不会有握手过程。这显着减少了连接中的延迟。

  1. 可访问性

首次加载页面时,所有HTTP页面都存储在称为页面缓存的Internet 缓存中。因此,一旦再次访问该页面,内容就会快速加载。

HTTP的缺点

  1. 数据完整性

由于 HTTP 中没有使用任何加密方法,因此有人可能会更改内容。这就是为什么 HTTP 被认为是一种易于数据完整性的不安全方法的原因。

  1. 数据隐私

隐私是 HTTP 连接中面临的另一个问题。如果任何黑客设法拦截请求,他们可以查看网页中存在的所有内容。除此之外,他们还可以收集用户名和密码等机密信息。

  1. 服务器可用性

即使 HTTP 接收到它需要的所有数据,客户端也不会采取措施关闭连接。因此,在此期间,服务器将不存在。

  1. 管理费用

为了传输一个网页,一个HTTP需要创建多个连接。这会导致连接中的管理开销。

5.物联网设备支持

HTTP使用更多的系统资源,从而导致更多的功耗。由于今天的物联网设备包含无线传感器网络,因此不适合使用HTTP。