nature

nature is api gateway, just show you for how to bulid api gateway

View on GitHub

网络协议

什么是网络协议?

在网络中,协议是一套用于格式化和处理数据的规则。网络协议就像计算机的一种共同语言。一个网络中的计算机可能会使用截然不同的软件和硬件,然而,协议的使用使它们能够相互通信。

标准化协议就像计算机可以使用的共同语言,类似于来自世界不同地区的两个人可能不理解对方的母语,但他们可以使用共同的第三语言进行交流。如果一台计算机使用互联网协议 (IP),而第二台计算机也使用该协议,它们将能够进行通信——就像联合国依靠其 6 种官方语言在全球各地的代表之间进行交流一样。但是,如果一台电脑使用 IP,而另一台电脑不知道该协议,则它们将无法通信。

在互联网上,不同类型的进程有不同的协议。协议通常与进程在 OSI 模型中所属的层相关。

例如,互联网协议 (IP) 通过表明数据包*的来源和目的地,对数据进行路由。IP 使网络到网络的通信成为可能。因此,IP 被认为是一个网络层(第 3 层)协议。

再比如,传输控制协议 (TCP) 用于确保数据包在网络上的运输顺利进行。因此,TCP 被认为是一个传输层(第 4 层)协议。

*数据包是一个小的数据段,所有通过网络发送的数据都被分成多个数据包。

哪些协议在网络层运行?

如上所述,IP 是一个负责路由的网络层协议,但它不是唯一的网络层协议。

互联网上还使用哪些协议?

需要了解的一些重要协议包括:

QUIC 的使用意味着 HTTP/3 依赖于用户数据报协议 (UDP),而不是传输控制协议 (TCP)。切换到 UDP 将使在线浏览时的连接速度和用户体验更快。

QUIC 协议由 Google 于 2012 年开发,并在互联网工程任务组 (IETF)(一个厂商中立的标准组织)开始创建新的 HTTP/3 标准时采用。在咨询了世界各地的专家之后,IETF 进行了许多更改以开发自己的 QUIC 版本。

路由器使用什么协议?

网络路由器使用某些协议来发现通往其他路由器的最有效网络路径。这些协议不用于传输用户数据。重要的网络路由协议包括:

网络协议对网关软件的困扰

可以看到网络协议如此繁花似锦,上述列举的主体协议之外,还有各种场景有着自己的协议,甚至mysql,redis也是有着自己的通信协议。

不过基本99.9%都是基于tcp、udp,这两核心协议无论在系统、网卡、编程语言都有着强大的支持。所以对网关来说,支持了他们俩无疑等同于支持了全部。

但是对于具体网站的性能优化上,无论在复用、安全等各方面存在缺失,所以也是http的七层负载均衡代理软件网关如此流行的原因。

支持如此多协议便是对开发网关软件终身的困扰,只有协议没有使用的那天,才是网关不支持协议的时候。

后面我们将构建 tcp 、udp、http的网关。

目录