Web-开发技术-HTTP

MDN 指南

MIME 类型介绍

媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型)是一种标准,用来表示文档、文件或字节流的性质和格式.

语法

通用结构:

1
type/subtype

MIME 类型对大小写不敏感,但是传统写法都是小写.

独立类型

其表明对文件的分类:

Multipart 类型

Multipart 类型表示细分领域的文件类型的种类,经常对应不同的 MIME 类型。

如:

1
2
multipart/form-data
multipart/byteranges

HTTP 概述

HTTP 是用来获取网络资源的协议.

HTTP 本质是无状态的,使用 Cookie 可以创建有状态的会话。


关于网络代理

网络代理可以出现在应用层,也可以出现在传输层或网络层。

在应用层,网络代理一般被称为应用层代理或HTTP代理。它们通常工作在HTTP协议的应用层上,接收客户端发送的HTTP请求,将请求转发给目标服务器,等待服务器的响应后再将响应返回给客户端。常见的应用层代理有Squid、Nginx、Apache等,它们可以提供缓存、负载均衡、访问控制等功能,同时也可以用于绕过网络限制、隐藏客户端IP地址等场景。

在传输层,网络代理一般被称为传输层代理或TCP代理。它们通常工作在TCP协议的传输层上,接收客户端发送的TCP连接请求,将请求转发给目标服务器,等待服务器的响应后再将响应返回给客户端。常见的传输层代理有SOCKS代理、SSL代理等,它们可以提供加密、隧道、负载均衡等功能,同时也可以用于绕过网络限制、隐藏客户端IP地址等场景。

在网络层,网络代理一般被称为网络层代理或IP代理。它们通常工作在IP协议的网络层上,接收客户端发送的IP数据包,将数据包转发给目标服务器,等待服务器的响应后再将响应返回给客户端。常见的网络层代理有代理服务器、VPN等,它们可以提供数据加密、路由选择、负载均衡等功能,同时也可以用于绕过网络限制、隐藏客户端IP地址等场景。

基于 HTTP 的组件系统

浏览器总是作为发起一个请求的实体,他永远不是服务器.

HTTP 流

TCP 连接被用来发送一条或多条请求,以及接受响应消息。客户端可能打开一条新的连接,或重用一个已经存在的连接.

典型的 HTTP 会话

发送客户端请求

  • GET 方法请求指定的资源。GET 请求应该只被用于获取数据。
  • POST 方法向服务器发送数据,因此会改变服务器状态。这个方法常在 HTML 表单中使用。

HTTP/1.x 的连接管理

连接管理是一个 HTTP 的关键话题:打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型:短连接、长连接和 HTTP 流水线.

长连接也是 keep-alive 连接。

这个连接也不会一直保留着:连接在空闲一段时间后会被关闭 (服务器可以使用 Keep-Alive 协议头来指定一个最小的连接保持时间).

长连接也还是有缺点的;就算是在空闲状态,它还是会消耗服务器资源,而且在重负载时,还有可能遭受 DoS 攻击。这种场景下,可以使用非长连接,即尽快关闭那些空闲的连接,也能对性能有所提升.

HTTP 流水线

流水线是在同一条长连接上发出连续的请求,而不用等待应答返回。这样可以避免连接延迟.

关于 WebSocket 协议

WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许浏览器和服务器之间进行实时双向数据传输。WebSocket协议的设计旨在代替HTTP协议的轮询方式,以提高性能并减少网络延迟。

在HTTP协议中,客户端向服务器发送请求后,服务器需要立即响应并关闭TCP连接,这种方式被称为“请求-响应”模式。而在WebSocket协议中,客户端和服务器之间建立一条长连接,可以在连接建立后随时向服务器发送消息,服务器也可以随时向客户端发送消息,而不需要重新建立连接。这种方式被称为“推送”模式,可以实现实时通信和数据传输。

WebSocket协议与HTTP协议的关系类似于HTTP协议与TCP协议的关系。WebSocket协议是基于HTTP协议的,它使用HTTP协议的握手过程建立连接,然后升级协议,将HTTP连接升级为WebSocket连接。在WebSocket连接建立之后,客户端和服务器之间可以通过发送WebSocket帧来进行双向通信,WebSocket帧是一种二进制格式的数据包,可以包含任意类型的数据。



Web-开发技术-HTTP
http://example.com/2023/05/16/Web-开发技术-HTTP/
作者
Jie
发布于
2023年5月16日
许可协议