全面掌握网络术语、接口与协议:从入门到精通的实用指南

简介

引言

对于任何管理服务器的人来说,理解网络是非常重要的。它不仅对于将您的服务在线上并正常运行至关重要,而且还能让您洞察问题所在,进行诊断。

这篇文章将概述一些常见的网络概念。我们将讨论术语、常见协议,以及网络不同层级的职责和特征。

这份指南不受操作系统限制,但在服务器上实施利用网络的功能和服务时应非常有帮助。

网络术语字典

首先,我们将定义一些常见的术语,这些术语将在本指南以及其他与网络相关的指南和文档中经常出现。

这些术语将在后续适当的章节中进行详细阐述。

  • 连接(Connection):在网络中,连接指的是通过网络传输的相关信息片段。通常来说,连接是在数据传输之前建立的(通过遵循协议中规定的程序),并可能在数据传输结束时被拆除。
  • 数据包(Packet):数据包是故意通过网络传输的最小单位。当通过网络通信时,数据包是承载您的数据(以片段形式)从一个端点到另一个端点的信封。

数据包包含一个包头部分,其中包含有关数据包的信息,包括源地址、目标地址、时间戳、网络跳数等。数据包的主要部分包含正在传输的实际数据。有时也被称为正文或有效载荷。

  • 网络接口(Network Interface):网络接口可以指任何类型的网络硬件的软件接口。例如,如果您的计算机中有两个网卡,您可以单独控制和配置与它们相关联的每个网络接口。

一个网络接口可以与物理设备关联,也可以是虚拟接口的表示。在大多数Linux环境中可用的”环回”设备就是这样的一个例子,它可以用于连接回同一台机器。

  • 局域网(LAN):LAN代表”局域网”(local area network)。它指的是一个网络或网络的一部分,不向更大的互联网公开访问。家庭或办公网络就是局域网的例子。
  • 广域网(WAN):WAN代表”广域网”(wide area network)。它意味着一个比局域网大得多的网络。虽然WAN是用来描述大型、分散网络的通用术语,但通常它指的是整个互联网。

如果说一个接口已连接到广域网(WAN),通常会认为它可以通过互联网进行访问。

  • 协议(Protocol):协议是一套规则和标准,定义了设备可以用来通信的语言。网络中广泛使用了许多协议,它们通常在不同的层中实现。

一些低级协议包括TCP、UDP、IP和ICMP。一些基于这些低级协议构建的应用层协议的熟悉例子有HTTP(用于访问网络内容)、SSH和TLS/SSL。

  • 端口(Port):端口是单台机器上的一个地址,可以绑定到特定的软件。它不是物理接口或位置,但它允许您的服务器能够使用多个应用程序进行通信。
  • 防火墙(Firewall):防火墙是一个决定是否允许来自或去往服务器的流量的程序。防火墙通常通过为哪种类型的流量在哪些端口上可接受创建规则来工作。通常,防火墙会阻止服务器上特定应用程序未使用的端口。
  • 网络地址转换(NAT):NAT代表网络地址转换。它是一种重新打包和发送传入请求到路由服务器,然后到局域网上的相关设备或服务器的方法。这通常在物理局域网中实施,作为一种通过一个IP地址路由请求到必要的后端服务器的方式。
  • 虚拟专用网络(VPN):VPN代表虚拟专用网络。它是一种通过互联网连接单独的局域网,同时保持隐私的方法。这用于将远程系统连接起来,就好像它们在本地网络上一样,通常出于安全原因。

在未来的学习过程中,你会遇到许多其他术语,而这个列表并不是详尽无遗的。我们将在需要时为你解释其他术语。目前,你应该理解一些高层次的概念,以便我们更好地讨论即将要涉及的话题。

网络层次

尽管网络通常以水平的拓扑结构(主机之间)进行讨论,但在任何计算机或网络中,它的实现是以垂直方式分层的。

这意味着通信需要建立在多种技术和协议的基础之上。每一层的上级层都对原始数据进行了一些抽象处理。

这还可以帮助你以新的方式利用较低层,而无需投入时间和精力开发处理这些类型流量的协议和应用。

无论使用哪种模型来讨论分层方案,我们用来交流各个分层模式的语言都会有显著差异。然而,无论使用哪个模型来讨论这些层级,数据的路径都是相同的。

在数据从一台机器发送出去时,它从堆栈的顶部开始向下过滤。在最低层,将数据实际传输到另一台机器。此时,数据通过另一台计算机的各层向上传输。

每一层都有能力在接收到来自相邻层的数据时,为其添加自己的”包装器”,这将帮助后续层对数据进行决策。

TCP/IP模型

传输控制协议/互联网协议模型,更常被称为互联网协议套件,是一种广泛采用的分层模型。它定义了四个独立的层次:

  • 应用层(Application):在此模型中,应用层负责在应用程序之间创建和传输用户数据。应用程序可以在远程系统上,并且对于最终用户来说应该表现得像在本地操作一样。这种通信被认为是在对等方之间进行的。
  • 传输层(Transport):传输层负责进程之间的通信。这一层级的网络利用端口来寻址不同的服务。
  • 互联网层(Internet):互联网层用于在网络中的节点之间传输数据。这一层知道连接的端点,但不关心从一个地方到另一个地方实际需要的连接。IP地址在这一层中定义,作为一种以可寻址方式到达远程系统的方法。
  • 链路层(Link):链路层实现了允许互联网层呈现可寻址接口的本地网络的实际拓扑。它建立相邻节点之间的连接以发送数据。

正如你可以看到的,TCP/IP模型是抽象且流动的。这使得它成为了流行的实现方式,并使其成为了网络层次被分类的主流方式。

接口

接口是计算机的网络通信点。每个接口都与一个物理或虚拟的网络设备相关联。

通常情况下,您的服务器将为每个以太网或无线网卡配置一个可配置的网络接口。

此外,它将定义一个名为”回送”或本地主机接口的虚拟网络接口。这被用作将单台计算机上的应用程序和进程连接到其他应用程序和进程的接口。在许多工具中,您可以看到它被引用为”lo”接口。

很多时候,管理员会配置一个接口用于处理与互联网的通信流量,另一个接口用于局域网或私有网络。

在启用私有网络的数据中心(包括Silicon Cloud vServers),您的VPS将具有两个网络接口。”eth0″接口将配置为处理来自互联网的流量,而”eth1″接口将用于与私有网络进行通信。

协议

网络工作是通过在一系列不同的协议上进行叠加来实现的。通过这种方式,一个数据可以使用多个协议相互嵌套地传输。

我们将从较低的网络层开始实施协议,并逐步向更高的抽象层协议发展。

媒体访问控制

媒体访问控制是一种通信协议,用于区分特定设备。每个设备在制造时应获得一个唯一的、硬编码的媒体访问控制地址(MAC地址),以将其与互联网上的其他设备区分开来。

通过MAC地址来定位硬件,即使上层软件在运行过程中更改了特定设备的名称,您仍能通过唯一的值来引用该设备。

MAC地址是你很可能会定期与之交互的低层链路层中的少数协议之一。

互联网协议(IP)

IP协议是允许互联网正常运作的基础协议之一。每个网络上的IP地址都是唯一的,它们允许机器在网络上彼此通信。在TCP/IP模型中,IP协议被实现在互联网层。

网络可以连接在一起,但当跨越网络边界时,必须进行路由处理。该协议假设网络不可靠,并且存在多条可动态切换的到达同一目的地的路径。

现在有许多不同的协议实现。如今最常见的实现是IPv4地址,其遵循123.123.123.123的模式,尽管由于可用的IPv4地址有限,IPv6地址的使用越来越普遍,它遵循2001:0db8:0000:0000:0000:ff00:0042:8329的模式。

互联网控制消息协议(ICMP)

ICMP是互联网控制消息协议的缩写。它用于在设备之间发送消息以指示它们的可用性或错误情况。这些数据包在各种网络诊断工具(如ping和traceroute)中使用。

通常情况下,当不同类型的数据包遇到问题时,会传输ICMP数据包。它们用作网络通信的反馈机制。

传输控制协议(TCP)

TCP是传输控制协议的缩写。它被实现在TCP/IP模型的传输层,用于建立可靠连接。

TCP是将数据封装成数据包的协议之一,然后通过底层可用的方法将其传输到连接的远程端。在另外一端,它可以检查错误,请求重新发送指定的部分,并将信息重新组装成一个逻辑部分发送到应用层。

此协议通过称为”三次握手”的系统,在数据传输之前建立连接。这是通信双方确认请求并商定确保数据可靠性的方法。

在数据发送完毕后,使用类似的四次握手来中断连接。

对于互联网的许多最受欢迎的用途,包括WWW、SSH和电子邮件,TCP是首选的协议。

用户数据报协议(UDP)

UDP代表用户数据报协议。它是TCP的流行伴侣协议,并且也被实现在传输层。

UDP和TCP的基本差异在于,UDP提供的是不可靠的数据传输。它不验证数据是否已在连接的另一端接收。这听起来可能不好,对于许多目的来说确实如此。但是,对于某些功能来说,这也非常重要。

因为UDP不需要等待确认数据是否已接收并强制重新发送数据,所以它比TCP更快。它不会与远程主机建立连接,只是在没有确认的情况下发送数据。

因为这是一个直接的交易,对于像查询网络资源这样的通信非常有用。它也不维持状态,这使得它非常适合将数据从一台机器传输到许多实时客户端。这使得它成为VOIP、游戏和其他不能容忍延迟的应用的理想选择。

超文本传输协议(HTTP)

HTTP代表超文本传输协议。它是应用层中定义的一种协议,构成了网络通信的基础。

HTTP定义了一些动词,告诉远程系统你在请求什么。例如,GET,POST和DELETE使用不同的方式与所请求的数据交互。要查看不同HTTP请求的示例,请参考《如何在Express中定义路由和HTTP请求方法》。

域名系统(DNS)

DNS代表域名系统。它是一个应用层协议,用于为互联网资源提供人类友好的命名机制。它将域名与IP地址关联起来,使您能够通过浏览器的名称访问网站。

安全外壳协议(SSH)

SSH代表着安全外壳协议。这是一个应用层中实现的加密协议,可以用于安全地与远程服务器通信。由于其端到端加密和广泛应用的特性,许多附加技术围绕着这个协议而建立。

尽管我们还有许多未涉及但同样重要的协议,但以上概述应该让你对构建互联网和网络的一些基本技术有个良好的了解。

结论

到这个阶段,你应该熟悉一些网络术语,并且能够理解不同组件是如何相互通信的。这将帮助你理解其他文章和系统文档。

接下来,作为一个高级的真实世界示例,你可能想阅读《如何在Go中进行HTTP请求》。

bannerAds