Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

互联网常用名词 #10

Open
exposir opened this issue Sep 29, 2022 · 6 comments
Open

互联网常用名词 #10

exposir opened this issue Sep 29, 2022 · 6 comments
Labels

Comments

@exposir
Copy link
Owner

exposir commented Sep 29, 2022

  • 服务器
    • Linux
    • CentOS
    • Ubuntu
    • Debian
    • Unix shell
    • Z shell
    • Bash
    • whoami
  • 数据库
    • MySQL
    • MongoDB
    • 关系数据库
    • NoSQL
    • Redis
    • Ruby
    • Nginx
  • 网络
    • 反向代理
    • CDN 内容分发网络
    • HTTP 超文本传输协议
    • HTTPS 超文本传输安全协议
    • IPS 互联网协议套件
    • TCP 传输控制协议
    • UDP 用户数据报协议
    • DNS 域名系统
    • TLS/SSL
    • URI 统一资源标志符
    • gRPC
    • Wget
    • cURL
    • ping
    • HTTP 压缩
    • gzip
    • Secure Shell
    • FTP文件传输协议
  • 前端
    • CommonJS
    • ECMAScript
    • Ecma 国际
    • W3C 万维网联盟
    • TC39
    • Cookie
    • Session 对谈
    • CORS 跨域资源共享
    • JSONP
    • 同源策略
    • XML
    • SSG static site generator
    • SSRserve side render
  • 其他
    • JSON
    • Homebrew
    • WebP
    • PNG
    • GIF
    • JPEG
    • Base64
    • JIT 即时编译
    • Unicode
    • UTF-8
    • ASCII
    • Dos 拒绝服务攻击
    • Docker
    • Kubernetesk8s
    • OSS 对象储存
    • SaaS 软件即服务
    • LaaS 基础设施即服务
    • PaaS 平台即服务
@exposir exposir added Blog else and removed Blog labels Sep 29, 2022
@exposir exposir mentioned this issue Sep 29, 2022
@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

服务器 ⬆️

Linux

Linux 是一种自由和开放源码的类 UNIX 操作系统。该操作系统的内核由林纳斯·托瓦兹在 1991 年 10 月 5 日首次发布,在加上用户空间的应用程序之后,成为 Linux 操作系统。Linux 也是自由软件和开放源代码软件发展中最著名的例子。只要遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。大多数 Linux 系统还包括像提供 GUI 的 X Window 之类的程序。除了一部分专家之外,大多数人都是直接使用 Linux 发行版,而不是自己选择每一样组件或自行设置。

Linux 严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。如今 Linux 常用来指基于 Linux 的完整操作系统,内核则改以 Linux 内核称之。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于 1983 年发起的 GNU 计划提供,自由软件基金会提议将其组合系统命名为 GNU/Linux[7][8],但 Linux 不属于 GNU 计划,这个名称并没有得到社群的一致认同。

Linux 最初是作为支持英特尔 x86 架构的个人电脑的一个自由操作系统。目前 Linux 已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux 可以运行在服务器和其他大型平台之上,如大型计算机和超级计算机。世界上 500 个最快的超级计算机已 100%运行 Linux 发行版或变种[9]。Linux 也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的 Android 操作系统就是创建在 Linux 内核之上。

通常情况下,Linux 被打包成供个人计算机和服务器使用的 Linux 发行版,一些流行的主流 Linux 发布版,包括 Debian(及其派生版本 Ubuntu、Linux Mint)、Fedora(及其相关版本 Red Hat Enterprise Linux、CentOS)和 openSUSE 等。Linux 发行版包含 Linux 内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的 Linux 发行版通常包含 X Window 和一个相应的桌面环境,如 GNOME 或 KDE。桌面 Linux 操作系统常用的应用程序,包括 Firefox 网页浏览器、LibreOffice 办公软件、GIMP 图像处理工具等。由于 Linux 是自由软件,任何人都可以创建一个符合自己需求的 Linux 发行版。

CentOS

CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux(RHEL)依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同,在于 CentOS 并不包含封闭源代码软件。CentOS 对上游代码的主要修改是为了移除不能自由使用的商标。[3]2014 年,CentOS 宣布与 Red Hat 合作[4],但 CentOS 将会在新的委员会下继续运作,并不受 RHEL 的影响[5]。

CentOS 和 RHEL 一样,都可以使用 Fedora EPEL 来补足软件。

Ubuntu

Ubuntu(国际音标:/ʊˈbʊntuː/,uu-BUUN-too)[7][8]是基于 Debian,以桌面应用为主的 Linux 发行版。Ubuntu 有三个正式版本,包括桌面版、服务器版及用于物联网设备和机器人的 Core 版。前述三个版本既能安装于实体电脑,也能安装于虚拟电脑。从 17.10 版本开始,Ubuntu 以 GNOME 为默认桌面环境。[9]

Ubuntu 是著名的 Linux 发行版之一,也是目前最多用户的 Linux 版本。Ubuntu 每六个月(即每年的四月与十月)发布一个新版本,长期支持(LTS)版本每两年发布一次。普通版本一般只支持 9 个月,但 LTS 版本一般能提供 5 年的支持。

Ubuntu 由英国 Canonical 公司发布,他们提供商业支持[10]。它是基于自由软件,其名称来自非洲南部祖鲁语或科萨语的“Ubuntu”一词(译为乌班图),意思是“人性”、“我的存在是因为大家的存在”,[11]是非洲传统的一种价值观。

Canonical 由南非企业家 Mark Shuttleworth 创立。Canonical 通过销售与 Ubuntu 相关的技术支持和其他服务来产生收益。[12]Ubuntu 项目公开承诺开源软件开发的原则;鼓励人们使用自由软件,研究它的运作原理,改进和分发。[13][14]

Debian

Debian(/ˈdɛbiən/[5])是完全由自由软件组成的类 UNIX 操作系统,其包含的多数软件使用 GNU 通用公共许可协议授权,并由 Debian 计划的参与者组成团队对其进行打包、开发与维护。

Debian 计划最初由伊恩·默多克于 1993 年发起,Debian 0.01 版在 1993 年 9 月 15 日发布[6],而其第一个稳定版本则在 1996 年发布。[7]

该计划的具体工作在互联网上协调完成,由 Debian 计划领导人带领一个志愿者团队开展工作,并以三份奠基性质的文档作为工作指导:Debian 社群契约、Debian 宪章和 Debian 自由软件指导方针。操作系统版本定期进行更新,候选发布版本将在经历过一定时间的冻结之后进行发布。

作为最早的 Linux 发行版之一,Debian 在创建之初便被定位为在 GNU 计划的精神指导下进行公开开发并自由发布的项目。该决定吸引自由软件基金会的注意与支持,他们为该项目提供从 1994 年 11 月至 1995 年 11 月为期一年的赞助。[8]赞助终止后,Debian 计划创立非营利机构 Software in the Public Interest 以提供支持并令其持有 Debian 商标作为保护机构。Debian 也接受世界多个非营利组织的资金支持。

Unix shell

Unix shell,一种壳层与命令行界面,是 UNIX 操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。

普通意义上的 shell 就是可以接受用户输入命令的程序。它之所以被称作 shell 是因为它隐藏了操作系统低层的细节。同样的 Unix 下的图形用户界面 GNOME 和 KDE,有时也被叫做“虚拟 shell”或“图形 shell”。

Unix 操作系统下的 shell 既是用户交互的界面,也是控制系统的脚本语言。当然在这点也有别于 Windows 下的命令行,虽然也提供了很简单的控制语句。在 Windows 操作系统下,可能有些用户从来都不会直接的使用 shell,然而在 Unix 系列操作系统下,shell 仍然是控制系统启动、X Window 启动和很多其他实用工具的脚本解释程序。

Z shell

Z shell(Zsh)是一款可用作交互式登录的 shell 及脚本编写的命令解释器。Zsh 对 Bourne shell 做出了大量改进,同时加入了 Bash、ksh 及 tcsh 的某些功能。

自 2019 年起,macOS 的默认 Shell 已从 Bash 改为 Zsh。

Bash

Bash,Unix shell 的一种,在 1987 年由布莱恩·福克斯为了 GNU 计划而编写。1989 年发布第一个正式版本,原先是计划用在 GNU 操作系统上,但能运行于大多数类 Unix 系统的操作系统之上,包括 Linux 与 Mac OS X v10.4 起至 macOS Mojave 都将它作为默认 shell,而自 macOS Catalina,默认 Shell 以 zsh 取代。

whoami

whoami 是操作系统中用于查看当前有效用户名的命令,自 Windows Server 2003 以来每个 Windows 操作系统和大多数类 Unix 操作系统上都可以找到。它是英文“Who am I?”(我是谁?)的拼接结果。当被调用时,打印当前用户的有效用户名。它与 Unix 命令 id -un 具有相同的效果。

在类 Unix 操作系统上,命令的输出与USER 稍有不同因为 whoami 输出用户正在使用的用户名USER 输出用于登录的用户名。例如,假使用户以用户名 John 登录并使用命令 su(su 默认不调用 login shell)获得了 root 权限,此时若使用 whoami 命令会输出 root,而 echo $USER 对应的输出则是 John。

该程序最早创建于 BSD 2.9 中,作为命令“who am i”我是谁的一种便利形式,即伯克利 Unix(Berkeley Unix)打印登录用户身份的方式。[1] GNU 版本由 Richard Mlynarik 编写,是 GNU 核心工具组(coreutils)的一部分。 该命令也可作为 Windows 2000 Resource Kit[2]和 Windows XP SP2 支持工具的一部分[3]。 除此以外,文件服务器上 Netware 的公共文件夹内也包含了该程序。它还输出当前工作站所连接的服务器的用户名。

@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

数据库 ⬆️

MySQL

MySQL(官方发音为/maɪ ˌɛskjuːˈɛl/“My S-Q-L”[5],但也经常被读作/maɪ ˈsiːkwəl/“My Sequel”)原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的 MySQL AB 公司,该公司于 2008 年被昇阳微系统(Sun Microsystems)收购。2009 年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL 成为 Oracle 旗下产品。

MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。

MongoDB

MongoDB 是一种面向文档的数据库管理系统,用 C++等语言撰写而成,以解决应用程序开发社区中的大量现实问题。MongoDB 由 MongoDB Inc.(当时是 10gen 团队)于 2007 年 10 月开发,2009 年 2 月首度推出,现以服务器端公共许可(SSPL)分发。

关系数据库

关系数据库(英语:Relational database),是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于 1970 年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言 SQL 就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

NoSQL

NoSQL(最初表示 Non-SQL[1],后来有人转解为 Not only SQL[2][3]),是对不同于传统的关系数据库的数据库管理系统的统称。 允许部分资料使用 SQL 系统存储,而其他资料允许使用 NOSQL 系统存储。其数据存储可以不需要固定的表格模式以及元数据(metadata),也经常会避免使用 SQL 的 JOIN 操作,一般有水平可扩展性的特征。

Redis

Redis 是一个使用 ANSI C 编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。从 2015 年 6 月开始,Redis 的开发由 Redis Labs 赞助,而 2013 年 5 月至 2015 年 6 月期间,其开发由 Pivotal 赞助。[1]在 2013 年 5 月之前,其开发由 VMware 赞助。[2][3]根据月度排行网站 DB-Engines.com 的数据,Redis 是最流行的键值对存储数据库。[4]

Ruby

Ruby 是一种面向对象、指令式、函数式、动态的通用编程语言。在 20 世纪 90 年代中期由日本计算机科学家松本行弘(Matz)设计并开发。

遵守 BSD 许可证和 Ruby License[10][注 1]。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了 JRuby(Java 平台)、IronRuby(.NET 平台)等其他平台的 Ruby 语言替代品。

Nginx

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。该软件由伊戈尔·赛索耶夫(Игорь Сысоев)开发并于 2004 年首次公开发布[6]。2011 年成立同名公司以提供支持服务[7]。2019 年 3 月 11 日,Nginx 公司被 F5 网络公司以 6.7 亿美元收购[8]。

Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。一大部分 Web 服务器使用 Nginx[9],通常作为负载均衡器。[10]

@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

网络 ⬆️

反向代理

反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如 Web 服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的 IP 地址,而不知道在代理服务器后面的服务器集群的存在[1]。

与前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如 Web 服务器)只知道代理的 IP 地址而不知道客户端的 IP 地址;而反向代理是作为服务器端(如 Web 服务器)的代理使用,而不是客户端。客户端借由前向代理可以间接访问很多不同互联网服务器(集群)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。

反向代理在现时的互联网中并不少见,而另一些例子,像是 CDN、SNI 代理等,是反向代理结合 DNS 的一类延伸应用。

CDN(内容分发网络)

内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

HTTP(超文本传输协议)

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP 是万维网的数据通信的基础。

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP 的发展是由蒂姆·伯纳斯-李于 1989 年在欧洲核子研究组织(CERN)所发起。HTTP 的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的 RFC,其中最著名的是 1999 年 6 月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本——HTTP 1.1。

HTTPS(超文本传输安全协议)

超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。

HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。

历史上,HTTPS 连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初,HTTPS 开始广泛使用,以确保各类型的网页真实,保护账户和保持用户通信,身份和网络浏览的私密性。

另外,还有一种安全超文本传输协议(S-HTTP)的 HTTP 安全传输实现,但是 HTTPS 的广泛应用而成为事实上的 HTTP 安全传输实现,S-HTTP 并没有得到广泛支持。

IPS(互联网协议套件)

互联网协议套件(英语:Internet Protocol Suite,缩写 IPS)[1]是网络通信模型,以及整个网络传输协议家族,为网际网络的基础通信架构。它常通称为 TCP/IP 协议族(英语:TCP/IP Protocol Suite,或 TCP/IP Protocols),简称 TCP/IP[2]。因为该协议家族的两个核心协议:TCP(传输控制协议)和 IP(网际协议),为该家族中最早通过的标准[3]。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又称为 TCP/IP 协议栈(英语:TCP/IP Protocol Stack)[4][5] 。这些协议最早发源于美国国防部(缩写为 DoD)的 ARPA 网项目,因此也称作 DoD 模型(DoD Model)[6]。这个协议族由互联网工程任务组负责维护。

TCP/IP 提供了点对点链接的机制,将资料应该如何封装、寻址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议族下的各种协议,依其功能不同,分别归属到这四个层次结构之中[7][8],常视为是简化的七层 OSI 模型。

OSI 模型

  • 应用层(application layer):HTTP、SMTP、FTP、SSH、DNS
  • 表示层(presentation layer):ASCLL
  • 会话层(session layer):RPC
  • 传输层(transport layer):TCP、UDP、TLS/SSL、RTP
  • 网络层(network layer):IP(IPv4、IPv6)、ICMP
  • 数据链路层(data link layer):以太网、MAC
  • 物理层(physical layer):调制调节器、无线电、光纤

为什么 DNS 使用 UDP 而不是 TCP?

DNS 在进行区域传输的时候使用 TCP,普通的查询使用 UDP。为什么查询是使用 UDP 呢?网络上大部分答案都说 UDP 性能更好,打开网页速度快。如果是这样的话,为什么 HTTP 却是使用 TCP 呢?

浏览器响应时间= DNS 域名解析时间+ TCP 连接建立时间 + HTTP 交易时间 采用 TCP 传输,则域名解析时间为:DNS 域名解析时间 = TCP 连接时间 + DNS 交易时间 采用 UDP 传输,则域名解析时间为:DNS 域名解析时间 = DNS 交易时间

总结:

  • 使用 UDP 传输是由于效率高,传输小于等于 512 字节报文。
  • 使用 TCP 传输是由于可以传输大于 512 字节报文。

TCP(传输控制协议)

传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。在简化的计算机网络 OSI 模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。

在因特网协议族(Internet protocol suite)中,TCP 层是位于 IP 层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是 IP 层不提供这样的流机制,而是提供不可靠的包交换。

应用层向 TCP 层发送用于网间传输的、用 8 位字节表示的数据流,然后 TCP 把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后 TCP 把结果包传给 IP 层,由它来透过网络将包传送给接收端实体的 TCP 层。TCP 为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认信息(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失并进行重传。TCP 用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。

UDP(用户数据报协议)

用户资料包协议(英语:User Datagram Protocol,缩写:UDP;又称用户资料包协议)是一个简单的面向资料包的通信协议,位于 OSI 模型的传输层。该协议由 David P. Reed 在 1980 年设计且在 RFC 768 中被规范。典型网络上的众多使用 UDP 协议的关键应用在一定程度上是相似的。

在 TCP/IP 模型中,UDP 为网络层以上和应用层以下提供了一个简单的接口。UDP 只提供资料的不可靠传递,它一旦把应用程序发给网络层的资料发送出去,就不保留资料备份(所以 UDP 有时候也被认为是不可靠的资料包协议)。UDP 在 IP 资料包的头部仅仅加入了复用和资料校验字段。

UDP 适用于不需要或在程序中执行错误检查和纠正的应用,它避免了协议栈中此类处理的开销。对时间有较高要求的应用程序通常使用 UDP,因为丢弃资料包比等待或重传导致延迟更可取。

DNS(域名系统)

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 端口 53[1]。当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。

开始时,域名的字符仅限于 ASCII 字符的一个子集。2008 年,ICANN 通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于 Punycode 码的 IDNA 系统,可以将 Unicode 字符串映射为有效的 DNS 字符集。因此,诸如“XXX.中国”、“XXX.台湾”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入、难以在国际推广等。

TLS/SSL

传输层安全性协议(英语:Transport Layer Security,缩写:TLS)及其前身安全套接层(英语:Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在 1994 年推出首版网页浏览器-网景导航者时,推出 HTTPS 协议,以 SSL 进行加密,这是 SSL 的起源。IETF 将 SSL 进行标准化,1999 年公布 TLS 1.0 标准文件(RFC 2246)。随后又公布 TLS 1.1(RFC 4346,2006 年)、TLS 1.2(RFC 5246,2008 年)和 TLS 1.3(RFC 8446,2018 年)。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛使用这个协议。许多网站,如 Google、Facebook、Wikipedia 等也以这个协议来创建安全连线,发送资料。目前已成为互联网上保密通信的工业标准。

SSL 包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用 X.509 认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的资料做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

URI(统一资源标志符)

统一资源标志符(英语:Uniform Resource Identifier,缩写:URI)在电脑术语中是用于标志某一互联网资源名称的字符串。 该种标志允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI 的最常见的形式是统一资源定位符(URL),经常指定为非正式的网址。更罕见的用法是统一资源名称(URN),其目的是通过提供一种途径。用于在特定的名字空间资源的标志,以补充网址。

gRPC

gRPC (gRPC Remote Procedure Calls) 是 Google 发起的一个开源远程过程调用 (Remote procedure call) 系统。该系统基于 HTTP/2 协议传输,使用 Protocol Buffers 作为接口描述语言。[2]

其他功能:

  • 认证( authentication)
  • 双向流(bidirectional streaming)
  • 流控制(flow control)
  • 超时(timeouts)

最常见的应用场景是:

  • 微服务框架下,多种语言服务之间的高效交互。
  • 将手机服务、浏览器连接至后台
  • 产生高效的客户端库

Wget

GNU Wget(常简称为 Wget)是一个在网络上进行下载的简单而强大的自由软件,其本身也是 GNU 计划的一部分。它的名字是“World Wide Web”和“Get”的结合,同时也隐含了软件的主要功能。目前它支持通过 HTTP、HTTPS,以及 FTP 这三个最常见的 TCP/IP 协议协议下载。

cURL

cURL 是一个开源项目,主要的产品是 curl(命令行工具)和 libcurl(C 语言的 API 库),两者功能均是:基于网络协议,对指定 URL 进行网络传输。[3][4]

cURL 涉及是任何网络协议传输,不涉及对具体数据的具体处理。(如:html 的渲染等)

ping

ping(呯)是一种计算机网络工具,用来测试数据包能否透过 IP 协议到达特定主机。ping 的运作原理是向目标主机传出一个 ICMP 的请求回显数据包,并等待接收回显回应数据包。程序会按时间和成功响应的次数估算丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)。

在 1983 年 12 月,Mike Muuss 编写了首个这样的程序,用于在 IP 网络出现问题时方便探查其根源。因为这个程序的运作原理与潜水艇的主动声纳相似,他便用声纳的声音来为程序取名。David L. Mills 曾提出另一个取名:Packet Internet Grouper/Gopher(后者指地鼠)。

网络管理员之间也常将 ping 用作动词,如“ping 一下计算机 XXX,看它是否开着。”

HTTP 压缩

HTTP 压缩是一种内置到网页服务器和网页客户端中以改进传输速度和带宽利用率的方式。[1]

HTTP 数据在从服务器发送前就已压缩:兼容的浏览器将在下载所需的格式前宣告支持何种方法给服务器;不支持压缩方法的浏览器将下载未经压缩的数据。最常见的压缩方案包括 brotil、gzip 和 Deflate,但可用方案的完整列表由 IANA 维护。[2]此外,第三方可能开发新的方法并纳入到其自身的产品,例如 Google 的面向 HTTP 共享字典压缩(SDCH)方案就实现在 Google Chrome 浏览器和使用在 Google 的服务器上。

在 HTTP 中有两种不同的方式可以完成压缩。在较低层级,Transfer-Encoding 头可以指示 HTTP 消息的有效载荷被压缩。在较高层级,Content-Encoding 头可以指示一个被转码、缓存或引用的资源已压缩。使用 Content-Encoding 的压缩比 Transfer-Encoding 有更广泛的支持,并且某些浏览器不宣告 Transfer-Encoding 压缩以避免触发服务器的缺陷。[3]

gzip

Gzip 是一种压缩文件格式并且也是一个在类 Unix 上的一种文件解压缩的软件,通常指 GNU 计划的实现,此处的 gzip 代表 GNU zip。也经常用来表示 gzip 这种文件格式。软件的作者是 Jean-loup Gailly 和 Mark Adler。在 1992 年 10 月 31 日第一次公开发布,版本号 0.1,1993 年 2 月,发布了 1.0 版本。

OpenBSD 中所包含的 gzip 版本实际上是 compress 程序,其对 gzip 文件的支持在 OpenBSD 3.4 中被添加,此处的 g 代表免费(gratis)[1]。

Secure Shell

Secure Shell(安全外壳协议,简称 SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境[1]。SSH 通过在网络中创建安全隧道来实现 SSH 客户端与服务器之间的连接[2]。SSH 最常见的用途是远程登录系统,人们通常利用 SSH 来传输命令行界面和远程执行命令。SSH 使用频率最高的场合是类 Unix 系统,但是 Windows 操作系统也能有限度地使用 SSH。2015 年,微软宣布将在未来的操作系统中提供原生 SSH 协议支持[3],Windows 10 1803 版本已提供 OpenSSH 工具[4]。

在设计上,SSH 是 Telnet 和非安全 shell 的替代品。Telnet 和 Berkeley rlogin、rsh、rexec 等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人攻击[5]。SSH 旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。

不过,SSH 也被指出有被嗅探甚至解密的漏洞。早在 2011 年,中国的互联网审查机构已经有能力针对 SSH 连线的刺探及干扰。[6][7]而后爱德华·斯诺登泄露的文件也指出,美国国家安全局有时能够把 SSH 协议传输的信息解密出来,从而读出 SSH 会话的传输内容[8]。2017 年 7 月 6 日,非营利组织维基解密确认美国中央情报局已经开发出能够在 Windows 或 Linux 操作系统中窃取 SSH 会话的工具。[9]

FTP(文件传输协议)

文件传输协议(英语:File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由 FTP 提供,后者由如 NFS 等应用系统提供[1]。RFC 959 定义了此规范。

FTP 是一个 8 位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像 MIME 或 Unicode 一样。但是,FTP 有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。

@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

前端 ⬆️

CommonJS

CommonJS 是一个项目,其目标是为 JavaScript 在网页浏览器之外创建模块约定。创建这个项目的主要原因是当时缺乏普遍可接受形式的 JavaScript 脚本模块单元,模块在与运行 JavaScript 脚本的常规网页浏览器所提供的不同的环境下可以重复使用。

ECMAScript

ECMAScript 是一种由 Ecma 国际(前身为欧洲计算机制造商协会)在标准 ECMA-262 中定义的脚本语言规范。这种语言在万维网上应用广泛,它往往被称为 JavaScript 或 JScript,但实际上后两者是 ECMA-262 标准的实现和扩展。

Ecma 国际

Ecma 国际(英语:Ecma International)是一家国际性会员制度的信息和电信标准组织。1994 年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。

组织在 1961 年的日内瓦创建为了标准化欧洲的计算机系统。在欧洲制造、销售或开发计算机和电信系统的公司都可以申请成为会员。

W3C(万维网联盟)

万维网联盟(英语:World Wide Web Consortium,縮寫 W3C),又称 W3C 理事会,是万维网的主要国际标准组织[2],为半自治非政府组织(quasi-autonomous nongovernmental organization)。

TC39

所属 Ecma International 的 TC39 是一个由 JavaScript 开发者、实现者、学者等组成的团体,与 JavaScript 社区合作维护和发展 JavaScript 的标准。

我们在 GitHub 上开发 JavaScript(正式名称为 ECMAScript)规范,每两个月开会讨论一次提案。要了解更多关于这个过程的信息,请查看新语言功能提案的五个阶段。请参阅我们的会议议程和会议记录,了解更多信息。

Cookie

Cookies(复数形态:Cookies),又称“小甜饼”。类型为“小型文本文件”[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。由网景公司的前雇员卢·蒙特利在 1993 年 3 月发明[2]。最初定义于 RFC 2109,历经 RFC 2965,至现在的 RFC 6265。目前使用最广泛的 Cookie 标准却不是 RFC 中定义的任何一个,而是在网景公司制定的标准上进行扩展后的产物。

对谈(Session)

电脑科学领域来说,尤其是在网路领域,对谈session,Microsoft Windows 中文版译作工作阶段连线阶段)是一种持久网路协定,在使用者(或使用者代理)端和伺服器端之间建立关联,从而起到交换封包的作用机制,session 在网路协定(例如telnetFTP)中是非常重要的部分。

在不包含会话层(例如UDP)或者是无法长时间驻留会话层(例如HTTP)的传输协定中,会话的维持需要依靠在传输资料中的进阶别程式。例如,在浏览器和远端主机之间的 HTTP 传输中,HTTP cookie 就会被用来包含一些相关的资讯,例如 session ID,参数和权限资讯等。

CORS(跨域资源共享)

跨域资源共享(英语:Cross-origin resource sharing,缩写:CORS),用于让网页的受限资源能够被其他域名的页面访问的一种机制。[1]

通过该机制,页面能够自由地使用不同源(英语:cross-origin)的图片、样式、脚本、iframes 以及视频。[2]一些跨域的请求(特别是 Ajax)常常会被同源策略(英语:Same-origin policy)所禁止的。跨源资源共享定义了一种方式,为的是浏览器和服务器之间能互相确认是否足够安全以至于能使用跨源请求(英语:cross-origin requests)。[3]比起纯粹的同源请求,这将更为自由和功能性的(functionality),但比纯粹的跨源请求更为安全。

跨域资源共享是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略[4]。

JSONP

JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域获取资料。另一个解决这个问题的新方法是跨来源资源共享。

由于同源策略,一般来说位于 server1.example.com 的网页无法与 server2.example.com 的服务器沟通,而 HTML 的 <script>元素是一个例外。利用 <script>元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的 JavaScript,用 JavaScript 解释器执行而不是用 JSON 解析器解析。

同源策略

同源策略是指在 Web 浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的 URI、主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据。 同源策略对 Web 应用程序具有特殊意义,因为 Web 应用程序广泛依赖于 HTTP cookie[1]来维持用户会话,所以必须将不相关网站严格分隔,以防止丢失数据泄露。

值得注意的是同源策略仅适用于脚本,这意味着某网站可以通过相应的 HTML 标签[2]访问不同来源网站上的图像、CSS 和动态加载脚本等资源。而跨站请求伪造就是利用同源策略不适用于 HTML 标签的缺陷。

XML

可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言。XML 是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL 和 XPath 等。

SSG(static site generator)

https://www.cloudflare.com/zh-cn/learning/performance/static-site-generator/

什么是静态网站生成器?

静态网站生成器是一种基于原始数据和一组模板生成完整静态 HTML 网站的工具。从本质上讲,静态站点生成器自动完成对单个 HTML 页面进行编码的任务,并让这些页面提前准备好为用户提供服务。因为这些 HTML 页面是预先构建的,所以它们可以在用户的浏览器中非常快速地加载。

静态网站生成器是内容管理系统 (CMS) 的替代品,后者是另一种用于管理 Web 内容、生成网页和实施模板的工具。(模板是 Web 内容的可重用格式;开发人员使用模板来避免一遍又一遍地编写相同的格式。)静态站点生成器通常是  JAMstack Web 开发方法的一部分。

什么是静态网站?

静态网站由一个或多个 HTML 网页组成,这些网页每次都以相同的方式加载。静态网站与动态网站形成对比,动态网站根据一些不断变化的数据输入(例如用户的位置、一天中的时间或用户操作)进行不同的加载。静态网页是可以快速加载的简单 HTML 文件,而动态网页需要在浏览器中执行 JavaScript 代码才能呈现。

静态网站生成器和 CMS 之间有什么区别?

在互联网的早期,网站被存储为静态 HTML 站点,所有网页都预先布局和硬编码。这是低效的,因为它需要开发人员手动编码每个网页。

内容管理系统 (CMS) 的出现让开发人员能够避免所有这些手动设置。内容存储在 CMS 数据库中,而不是提前对页面进行编码,当用户请求页面时,服务器会执行以下操作:

  1. 查询数据库,寻找正确的内容
  2. 识别该内容将适合的模板
  3. 生成页面
  4. 向用户提供页面

CMS 中的内容必须适合 CMS 数据库提供的字段之一,但只要符合要求,它就应该每次都出现在网站上的适当位置。

静态站点生成器是这两种方法的折衷方案。与 CMS 一样,它允许开发人员使用模板并自动生成网页——但它会提前完成后者,而不是响应用户的请求。这可以提高网站性能,因为网页可以立即交付给最终用户。它还为开发人员提供了更大的定制能力,因为他们不受 CMS 提供的数据库字段的限制。

SSR(serve side render)

SSR 服务器端渲染(英语:server side render)指一般情况下,一个web 页面的数据彩现完全由客户端或者浏览器端来完成。先从服务器请求,然后到页面;再通过AJAX请求到页面数据并把相应的数据填充到模板,形成完整的页面来呈现给用户。服务器端彩现把数据的初始请求放在了服务器端,服务器端收到请求后,把数据填充到模板形成完整的页面,由服务器端把彩现的完整的页面返回给客户端。这样减少了一次客户端到服务器端的HTTP请求,加快了相应速度,一般用于效能最佳化。[1]

@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

其他 ⬆️

JSON

JSON(JavaScript Object Notation, /ˈdʒeɪsən/)是由道格拉斯·克罗克福特构想和设计的一种轻量级资料交换格式。其内容由属性和值所组成,因此也有易于阅读和处理的优势。JSON 是独立于编程语言的资料格式,其不仅是 JavaScript 的子集,也采用了 C 语言家族的习惯用法,目前也有许多编程语言都能够将其解析和字符串化,其广泛使用的程度也使其成为通用的资料格式。

Homebrew

Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程,最初由马克斯·霍威尔(Max Howell)写成。因其可扩展性得到了一致好评,而在 Ruby on Rails 社区广为人知。

Homebrew 使用 GitHub,通过用户的贡献扩大对软件包的支持。2012 年,Homebrew 是 GitHub 上拥有最多新贡献者的项目。2013 年,Homebrew 同时成为 GitHub 上最多贡献者及最多已关闭问题的项目。

WebP

WebP(发音:weppy[6][7])是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式[8]。

WebP 最初在 2010 年 9 月发布,其支持库于 2018 年 4 月发布 1.0 版本。截至 2021 年 5 月,已有 94%的浏览器支持此格式[9]。

WebP 的设计目标是在减少文件大小的同时,达到和 JPEG、PNG、GIF 格式相同的图片质量,并希望借此能够减少图片档在网络上的发送时间。[10]根据 Google 较早的测试,WebP 的无损压缩比网络上找到的 PNG 档少了 45%的文件大小,即使这些 PNG 档在使用 pngcrush 和 PNGOUT 处理过,WebP 还是可以减少 28%的文件大小[11]。

WebP 支持的像素最大数量是 16383x16383。有损压缩的 WebP 仅支持 8-bit 的 YUV 4:2:0 格式。而无损压缩(可逆压缩)的 WebP 支持 VP8L 编码与 8-bit 之 ARGB 色彩空间。又无论是有损或无损压缩皆支持 Alpha 透明通道、ICC 色彩配置、XMP 诠释资料。

WebP 有静态与动态两种模式。动态 WebP(Animated WebP)支持有损与无损压缩、ICC 色彩配置、XMP 诠释资料、Alpha 透明通道。

PNG

便携式网络图形(英语:Portable Network Graphics,PNG)是一种支持无损压缩的位图图形格式,支持索引、灰度、RGB 三种颜色方案以及 Alpha 通道等特性。PNG 的开发目标是改善并取代 GIF 作为适合网络传输的格式而不需专利许可,所以被广泛应用于互联网及其他方面上。

PNG 另一个非正式的名称来源为递归缩写:“PNG is Not GIF”。PNG 的官方念法是“平”(/pɪŋ/),[1]但是多数人是当成三个英文字母分开读。[2]

PNG 图片大多数都使用 PNG 作为扩展名,其互联网媒体类型为 image/png。[3]PNG 于 1997 年 3 月作为知识性 RFC 2083 发布,于 2004 年作为 ISO/IEC 标准发布。

GIF

图像互换格式(英语:Graphics Interchange Format,简称 GIF)是一种位图图形文件格式,以 8 位色(即 256 种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用 LZW 压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。它是目前万维网广泛应用的网络传输图像格式之一。

JPEG

JPEG 或称 JPG,是一种针对照片影像而广泛使用的有损压缩标准方法,由联合图像专家小组(英语:Joint Photographic Experts Group)开发。此团队创立于 1986 年,1992 年发布了 JPEG 的标准而在 1994 年获得了 ISO 10918-1 的认定。JPEG 与视频音频压缩标准的 MPEG(Moving Picture Experts Group)很容易混淆,但两者是不同的组织及标准。

JPEG 本身只有描述如何将一个影像转换为字节的数据流(streaming),但并没有说明这些字节如何在任何特定的存储媒体上被封存起来。JPEG 的压缩方式通常是有损压缩,即在压缩过程中图像的质量会遭受到可见的破坏,有一种以 JPEG 为基础的标准 Lossless JPEG 是采用无损的压缩方式,但 Lossless JPEG 并没有受到广泛的支持。

一个由 C-Cube Microsystems 等公司所创建的额外标准,称为 JFIF(JPEG File Interchange Format,JPEG 文件交换格式,联合图像专家小组文件交换格式)详细说明如何从一个 JPEG 流,产出一个适合于电脑存储和传输(像是在互联网上)的文件。在普遍的用法,当有人称呼一个“JPEG 文件”,一般而言他是意指一个 JFIF 文件,或有时候是一个 Exif JPEG 文件。然而,也有其他以 JPEG 为基础的文件格式,像是 JNG。

使用 JPEG 格式压缩的图片文件一般也被称为 JPEG Files,最普遍被使用的扩展名格式为.jpg,其他常用的扩展名还包括.JPEG、.jpe、.jfif 以及.jif。JPEG 格式的资料也能被嵌进其他类型的文件格式中,像是 TIFF 类型的文件格式。

JPEG/JFIF 是万维网上最普遍的被用来存储和传输照片的格式。它并不适合于线条绘图(drawing)和其他文字或图标(iconic)的图形,因为它的压缩方法用在这些类型的图形上,得到的结果并不好(PNG 和 GIF 通常是用来存储这类的图形;GIF 每个像素只有 8 比特,并不很适合于存储彩色照片,PNG 可以无损地存储照片,但是文件太大的缺点让它不太适合在网络上传输)。

对于 JFIF 的 MIME 媒体类型是 image/JPEG(定义于 RFC 1341)。

Base64

Base64(基底 64)是一种基于 64 个可打印字符来表示二进制数据的表示方法。每 6 个比特为一个单元,对应某个可打印字符。3 个字节相当于 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。在 Base64 中的可打印字符包括字母 A-Z、a-z、数字 0-9,这样共有 62 个字符,此外两个可打印符号在不同的系统中而不同。一些如 uuencode 的其他编码方法,和之后 BinHex 的版本使用不同的 64 字符集来代表 6 个二进制数字,但是不被称为 Base64。 Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。

JIT(即时编译)

在计算机技术中,即时编译(英语:just-in-time compilation,缩写为 JIT;又译及时编译[1]、实时编译[2]),也称为动态翻译或运行时编译[3],是一种执行计算机代码的方法,这种方法涉及在程序执行过程中(在执行期)而不是在执行之前进行编译。[4]通常,这包括源代码或更常见的字节码到机器码的转换,然后直接执行。实现 JIT 编译器的系统通常会不断地分析正在执行的代码,并确定代码的某些部分,在这些部分中,编译或重新编译所获得的加速将超过编译该代码的开销。

JIT 编译是两种传统的机器代码翻译方法——提前编译(AOT)和解释——的结合,它结合了两者的优点和缺点。[4]大致来说,JIT 编译将编译代码的速度与解释的灵活性、解释器的开销以及额外的编译开销(而不仅仅是解释)结合起来。JIT 编译是动态编译的一种形式,允许自适应优化,比如动态重编译和特定于微架构的加速[nb 1][5]——因此,在理论上,JIT 编译比静态编译能够产生更快的执行速度。解释和 JIT 编译特别适合于动态编程语言,因为运行时系统可以处理后期绑定的数据类型并实施安全保证。

Unicode

Unicode,联盟官方中文名称为统一码[1],是计算机科学领域的业界标准。它整理、编码了世界上大部分的文字系统,使得电脑可以用更为简单的方式来呈现和处理文字。

Unicode 伴随着通用字符集的标准而发展,同时也以书本的形式[2]对外发表。Unicode 至今仍在不断增修,每个新版本都加入更多新的字符。目前最新的版本为 2021 年 9 月公布的 14.0.0[3],已经收录超过 14 万个字符(第十万个字符在 2005 年获采纳)。Unicode 除了视觉上的字形、编码方法、标准的字符编码资料外,还包含了字符特性(如大小写字母)、书写方向、拆分标准等特性的资料库。

Unicode 的发展由非营利机构统一码联盟负责,该机构致力于让 Unicode 方案取代既有的字符编码方案。因为既有的方案往往空间非常有限,亦不适用于多语环境。

Unicode 备受认可,并广泛地应用于电脑软件的国际化与本地化过程。有很多新科技,如可扩展置标语言(Extensible Markup Language,简称:XML)、Java 编程语言以及现代的操作系统,都采用 Unicode 编码。Unicode 也被 ISO 作为国际标准采纳于通用字符集,即 ISO/IEC 10646,且 Unicode 兼容 ISO/IEC 10646 且完整对应各个版本标准。[4][5]

UTF-8

UTF-8(8-bit Unicode Transformation Format)是一种针对 Unicode 的可变长度字符编码,也是一种前缀码。它可以用一至四个字节对 Unicode 字符集中的所有有效编码点进行编码,属于 Unicode 标准的一部分,最初由肯·汤普逊和罗布·派克提出。[2][3]由于较小值的编码点一般使用频率较高,直接使用 Unicode 编码效率低下,大量浪费内存空间。UTF-8 就是为了解决向后兼容 ASCII 码而设计,Unicode 中前 128 个字符,使用与 ASCII 码相同的二进制值的单个字节进行编码,而且字面与 ASCII 码的字面一一对应,这使得原来处理 ASCII 字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字优先采用的编码方式。

自 2009 年以来,UTF-8 一直是万维网的最主要的编码形式(对所有,而不仅是 Unicode 范围内的编码)(并由 WHATWG 宣布为强制性的“适用于所有事物(for all things)”,[4]截止到 2019 年 11 月, 在所有网页中,UTF-8 编码应用率高达 94.3%(其中一些仅是 ASCII 编码,因为它是 UTF-8 的子集),而在排名最高的 1000 个网页中占 96%。[5] 第二热门的多字节编码方式 Shift JIS 和 GB 2312 分别具有 0.3%和 0.2%的占有率。[6][7][1]Internet 邮件联盟( Internet Mail Consortium, IMC)建议所有电子邮件程序都能够使用 UTF-8 展示和创建邮件,[8] W3C 建议 UTF-8 作为 XML 文件和 HTML 文件的默认编码方式。[9]互联网工程工作小组(IETF)要求所有互联网协议都必须支持 UTF-8 编码[10]。互联网邮件联盟(IMC)建议所有电子邮件软件都支持 UTF-8 编码。[11]

ASCII

ASCII(发音: /ˈæski/ ASS-kee[1],American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准 ISO/IEC 646。

1968 年版 ASCII 编码速见表 美国信息交换标准代码是这套编码系统的传统命名,互联网号码分配局现在更倾向于使用它的新名字 US-ASCII[2]。

美国信息交换标准代码是美国电气和电子工程师协会里程碑之一。

ASCII 由电报码发展而来。第一版标准发布于 1963 年[3][4],1967 年经历了一次主要修订[5][6],最后一次更新则是在 1986 年,至今为止共定义了 128 个字符;其中 33 个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等 8-bit 符号),且这 33 个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在 33 个字符之外的是 95 个可显示的字符。用键盘敲下空白键所产生的空白字符也算 1 个可显示字符(显示为空白)。

ASCII 的局限在于只能显示 26 个基本拉丁字母、阿拉伯数字和英式标点符号,因此只能用于显示现代美国英语(且处理 naïve、café、élite 等外来语时,必须去除附加符号)。虽然 EASCII 解决了部分西欧语言的显示问题,但对更多其他语言依然无能为力。因此,现在的软件系统大多采用 Unicode,特别是与 ASCII 向下兼容的 UTF-8。

拒绝服务攻击(Dos)

拒绝服务攻击(英语:denial-of-service attack,简称 DoS 攻击)亦称洪水攻击,是一种网络攻击手法,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。

当黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击时,称为分布式拒绝服务攻击(distributed denial-of-service attack,简称 DDoS 攻击)。据 2014 年统计,被确认为大规模 DDoS 的攻击>已达平均每小时 28 次。[1]DDoS 发起者一般针对重要服务和知名网站进行攻击,如银行、信用卡支付网关、甚至根域名服务器等。

DoS 也常见于部分网络游戏,被心怀不满的玩家或是竞争对手广泛使用。DoS 也常被用于抗议,自由软件基金会创办人理查德·斯托曼曾表示,DoS 是“网络街头抗议”的一种形式。[2]

Docker

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker 允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。[1]

Docker 容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker 也为容器提供更强的业界的隔离兼容。[2]

Docker 利用 Linux 核心中的资源分离机制,例如 cgroups,以及 Linux 核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一 Linux 实体下运作,避免启动一个虚拟机造成的额外负担[3]。Linux 核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户 ID 与挂载文件系统,而核心的 cgroup 提供资源隔离,包括 CPU、存储器、block I/O 与网络。从 0.9 版本起,Dockers 在使用抽象虚拟是经由 libvirt 的 LXC 与 systemd - nspawn 提供界面的基础上,开始包括 libcontainer 库做为以自己的方式开始直接使用由 Linux 核心提供的虚拟化的设施,

依据行业分析公司“451 研究”:“Dockers 是有能力打包应用程序及其虚拟容器,可以在任何 Linux 服务器上执行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以执行,无论是公用云端服务器、私有云端服务器、单机等。” [4]

Kubernetes(k8s)

Kubernetes(常简称为 K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。[3]该系统由 Google 设计并捐赠给 Cloud Native Computing Foundation(今属 Linux 基金会)来使用。

它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。[4] 它支持一系列容器工具,包括 Docker 等。

对象储存(OSS)

对象存储(英语:Object storage)是一种计算机数据存储架构,它将数据作为对象进行管理,与其他存储架构不同(如文件系统将数据作为文件层次结构进行管理,而块存储则将数据作为扇区和轨道内的块进行管理)。[1] 每个对象通常包括数据本身、数量不等的元数据和一个全局唯一的标识符。对象存储可以在多个层面实现,包括设备层面(对象存储设备)、系统层面和接口层面。在每一种情况下,对象存储都试图实现其他存储架构所不具备的能力,如可由应用程序直接编程的接口,可跨越多个物理硬件实例的命名空间,以及数据管理功能,如数据复制和对象级粒度的数据分发。

对象存储系统允许保留大量的非结构化数据。对象存储的用途包括:在 Facebook 上存储照片,在 Spotify 上存储歌曲,或在在线协作服务(如 Dropbox)中存储文件。[2]

软件即服务(SaaS)

软件即服务(英语:Software as a Service,缩写:SaaS,发音:/sæs/或/sɑs/[1]),亦可称为“按需即用软件”(即“一经要求,即可使用”)[2],它是一种软件交付模式[3]。在这种交付模式中,软件仅需通过网络,不须经过传统的安装步骤即可使用,软件及其相关的数据集中托管于云端服务。用户通常使用精简客户端,一般即经由网页浏览器来访问、访问软件即服务。SaaS 最大的特色在于软件本身并没有被下载到用户的硬盘,而是存储在提供商的云端或者服务器。相较于传统软件需要花钱购买和下载,软件即服务只需要用户租用软件,在线使用,不但大大减少了用户购买风险, 也无需下载软件本身,无设备要求的限制[4]。

对于许多商业应用来说,软件即服务已经成为一种常见的交付模式。这些商业应用包括会计系统[2]、协同软件、客户关系管理、管理信息系统、企业资源计划、开票系统、人力资源管理、内容管理、以及服务台管理[5]。软件即服务已经被吸纳进所有领先的企业级软件公司的战略中[6]。这些公司的最大的卖点之一就是通过将硬件和软件维护及支持外包给软件即服务的提供者,来降低信息技术(Information Technology,简称 IT)成本[7]。

根据一份高德纳集团(Gartner Group,也称顾能集团)的评估[8],软件即服务的销售在 2010 年达到了 100 亿美元,并且曾被预计在 2011 年要达到 121 亿美元,比 2010 年上升 20.7%。高德纳集团估计,到 2015 年,软件即服务的收入将会超过它的 2010 年的收入的 2 倍以上,并且达到预计的 213 亿美元。客户关系管理系统持续成为软件即服务的最大市场。在客户关系管理市场中的软件即服务曾被预测会从 2010 年的 32 亿美元上升到 2011 年的 38 亿美元[9]。

“软件即服务”(SaaS)的术语被认为是云计算的命名法的一部分,还有 IaaS、PaaS、桌面即服务(DaaS)都被认为是云计算的学术名称[10]。

基础设施即服务(LaaS)

基础设施即服务(英语:Infrastructure as a Service,简称 IaaS)是提供消费者处理、储存、网络以及各种基础运算资源,以部署与执行操作系统或应用程序等各种软件。

IaaS 是云服务的最底层,主要提供一些基础资源。它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。

客户端无须购买服务器、软件等网络设备,即可任意部署和运行处理、存储、网络和其它基本的计算资源,不能控管或控制底层的基础设施,但是可以控制操作系统、储存装置、已部署的应用程序,有时也可以有限度地控制特定的网络元件,像是主机端防火墙。下面这些都属于 IaaS。

平台即服务(PaaS)

平台即服务(英语:platform as a service,缩写:PaaS)是一种云计算服务,提供运算平台与解决方案服务。在云计算的典型层级中,PaaS 层介于软件即服务与基础设施即服务之间。

PaaS 提供用户将云端基础设施部署与创建至客户端,或者借此获得使用编程语言、程序库与服务。用户不需要管理与控制云端基础设施(包含网络、服务器、操作系统或存储),但需要控制上层的应用程序部署与应用托管的环境。

PaaS 将软件研发的平台做为一种服务,以软件即服务(SaaS)模式交付给用户。因此,PaaS 也是 SaaS 模式的一种应用。但是,PaaS 的出现可以加快 SaaS 的发展,尤其是加快 SaaS 应用的开发速度。

PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。下面这些都属于 PaaS。

@exposir
Copy link
Owner Author

exposir commented Sep 29, 2022

⬆️

Repository owner locked and limited conversation to collaborators Sep 29, 2022
@exposir exposir converted this issue into a discussion Sep 29, 2022
@exposir exposir reopened this Nov 18, 2022
@exposir exposir added Blog and removed else labels Nov 18, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant