网络术语、接口和协议简介

介绍

了解网络对于任何管理服务器的人都很重要。它不仅对于将您的服务上线并顺利运行至关重要,还能帮助您诊断问题。

本文将概述一些常见的网络概念。我们将讨论术语、常见协议以及网络不同层的责任和特性。

本指南与操作系统无关,但在您的服务器上实施利用网络的功能和服务时应该非常有帮助。

网络词汇表

首先,我们将定义一些您将在本指南和其他关于网络的指南和文档中看到的常见术语。

这些术语将在随后的适当章节中进行扩展:

  • 连接:在网络中,连接指的是通过网络传输的相关信息。一般来说,数据传输之前会建立连接(遵循协议中规定的程序),数据传输结束时可能会解除连接。

  • 数据包: 数据包是有意传输的最小单位。在网络通信中,数据包就像是把您的数据(分成片段)从一个端点传输到另一个端点的信封。

数据包有一个头部部分,包含有关数据包的信息,包括源和目标,时间戳,网络跳数等。数据包的主要部分包含实际传输的数据。有时被称为主体或有效载荷。

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

A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.

  • 局域网(LAN): 局域网是指一个网络或网络的一部分,对于更大的互联网不可公开访问。家庭或办公室网络是局域网的一个例子。

  • 广域网:广域网代表“广域网络”。它指的是比局域网更广泛的网络。虽然广域网是描述大型分散网络的相关术语,但通常指的是整个互联网。

如果说一个接口连接到广域网,通常认为它可以通过互联网访问。

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

一些低层协议包括TCP、UDP、IP和ICMP。一些构建在这些较低协议之上的应用层协议的熟悉示例包括HTTP(用于访问Web内容)、SSH和TLS/SSL。

  • 端口:端口是单个机器上与特定软件关联的地址。它不是物理接口或位置,但它允许服务器能够使用多个应用程序进行通信。

  • 防火墙:防火墙是一个决定服务器传入或传出的流量是否应被允许的程序。防火墙通常通过为哪种类型的流量在哪个端口上可接受创建规则来工作。通常,防火墙会阻止服务器上未被特定应用程序使用的端口。

  • NAT:NAT代表网络地址转换。这是一种重新封装和发送传入请求到路由服务器,以便将其发送到局域网中相关设备或服务器的方式。这通常在物理局域网中实施,作为通过一个IP地址将请求路由到必要的后端服务器的方式。

  • VPN(虚拟专用网络):VPN是虚拟专用网络的缩写。它是通过互联网连接分离的局域网,同时保持隐私的一种方式。通常出于安全原因,它用于将远程系统连接起来,就像它们在同一局域网上一样。

在你将会遇到许多其他术语,而这个列表并不详尽无遗。在需要的时候,我们会解释其他术语。此时,你应该理解一些高层次的概念,这将使我们更好地讨论即将涉及的主题。

网络层次

虽然网络通常是以水平方式在主机之间的拓扑结构中讨论的,但在任何给定的计算机或网络中,它的实施是以垂直方式分层的。

这意味着有多个技术和协议是建立在彼此之上的,以使通信正常工作。每个后续的、更高的层次都会对原始数据进行更多的抽象。

它还允许您以新的方式利用较低层次,而无需投入时间和精力开发处理这些类型流量的协议和应用程序。

我们用来谈论每种分层方案的语言在不同的模型中有很大的差异。无论使用哪个模型来讨论层,数据的路径都是相同的。

当数据从一个机器发送出去时,它从堆栈的顶部开始并向下过滤。在最低级别,实际的传输到另一台机器发生。在这一点上,数据通过另一台计算机的层向上传播。

每个层都有能力在接收到来自相邻层的数据时添加自己的“包装”,这将有助于之后的层决定在数据被移交时该做什么。

TCP/IP 模型

TCP/IP 模型,更常被称为 Internet 协议套件,是一种被广泛采用的分层模型。它定义了四个独立的层:

  • 应用:在这个模型中,应用层负责在应用程序之间创建和传输用户数据。应用程序可以在远程系统上,并且应该表现得像对最终用户来说是本地操作的。这种通信被称为发生在对等体之间。

  • 传输:传输层负责进程之间的通信。这个网络层级利用端口来定位不同的服务。

  • 互联网:互联网层用于在网络中从节点到节点传输数据。这一层意识到连接的端点,但不关心从一个地方到另一个地方所需的实际连接。在这一层中定义了IP地址,作为一种以可寻址方式到达远程系统的方式。

  • 链路:链路层实现了本地网络的实际拓扑,允许互联网层呈现出可寻址的接口。它建立相邻节点之间的连接以发送数据。

正如你所看到的,TCP/IP模型是抽象且灵活的。这使它成为实施的热门选择,并使其成为网络层分类的主导方式。

接口

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

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

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

许多时候,管理员会配置一个接口用于处理互联网流量,另一个接口用于LAN或私有网络。

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

协议

网络工作通过在彼此之上叠加多种不同的协议来实现。通过这种方式,可以使用嵌套的多个协议传输一段数据。

我们将从在较低的网络层上实现的协议开始,逐步介绍到更抽象的高层协议。

介质访问控制

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

通过使用MAC地址定位硬件,即使顶层软件在操作过程中更改了该特定设备的名称,您仍可以通过唯一值引用该设备。

MAC地址是您可能经常与之交互的低级链路层中唯一的协议之一。

IP

IP协议是使互联网正常工作的基本协议之一。IP地址在每个网络上都是唯一的,它们允许机器在网络上相互寻址。它实现在TCP/IP模型的互联网层。

网络可以连接在一起,但在跨越网络边界时必须进行路由。该协议假定存在不可靠的网络和到同一目的地的多条路径,它可以在这些路径之间动态变化。

该协议有许多不同的实现。今天最常见的实现是IPv4地址,其遵循模式123.123.123.123,尽管由于IPv4地址有限,IPv6地址的使用正在增长,其遵循模式2001:0db8:0000:0000:0000:ff00:0042:8329

ICMP

ICMP代表互联网控制消息协议。它用于在设备之间发送消息,指示它们的可用性或错误条件。这些数据包在各种网络诊断工具中使用,例如pingtraceroute

通常在不同种类的数据包遇到问题时会传输ICMP数据包。它们被用作网络通信的反馈机制。

TCP

TCP代表传输控制协议。它在TCP/IP模型的传输层中实现,并用于建立可靠的连接。

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

该协议在数据传输之前使用一种称为三次握手的系统建立连接。这是通信的两端确认请求并就确保数据可靠性的方法达成一致的方式。

在数据被发送之后,使用类似的四次握手来关闭连接。

TCP是许多互联网最流行用途的首选协议,包括WWW、SSH和电子邮件。

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请求

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols