什么是计算机网络以及如何真正理解它们

无论你是开发世界的新手,或者即使你是一个喜欢电脑并且每天都使用互联网的人 - 你必须了解网络的基础知识,特别是计算机网络。

如果你想更深入地了解服务器,安全性以及如何从远程客户端连接到服务器,所有这些都需要了解计算机网络及其组件。我试图在本文中介绍有关计算机网络的大多数主题。

此外,从这里开始,我将“计算机网络”简称为“网络”。

我们先来看看对计算机网络的定义:

计算机网络可以定义为借助于诸如线缆,光纤等数据线在世界各地的计算机之间交换网络数据包。

该网络是一种计算机网络

下面我将介绍一些常用的术语和组件以及它们如何在计算机网络中运行,其中一些在上图中。

计算机网络中常用的术语

节点(Nodes)

计算机网络中的节点是指任何计算设备,例如计算机,移动电话,平板电脑等,它们试图通过网络向另一个类似设备发送和接收网络数据包。

网络数据包(Network Packets)

网络数据包只不过是源节点希望向/从目标节点发送/接收的信息或数据单元。在本文中,网络数据包/数据包都传达了相同的含义。

互联网协议(IP)

考虑一下你想在他们的生日那天送你的朋友生日礼物,你会在哪里发送?他们的街道地址对吗?

这里的情况也是如此。早期的计算机科学家想要在互联网上识别具有唯一编号的计算机,就像今天的电话号码一样。因此,他们提出了TCP / IP的概念。

计算机设备的IP是计算机网络中该设备的地址。从技术上讲,它是一个32位数字,用于识别网络中的设备。来自该网络中的设备的所有通信将根据其IP地址完成。

请注意,您要将文件上传到任何网站,或者说要转到Google云端硬盘。

在最低级别的网络通信中,您的文件将转换为数据包,每个数据包都有目标节点地址,只有IP地址。

在更高级别上,IP地址分为两种类型:

  • IPv4:IPv4地址是32位(四个字节),如定义中所述。IPv4地址的示例是104.244.42.129,它是twitter.com的IPv4地址。 它们是的稳定的,因此现在用于识别世界上的机器。
  • IPv6:IPv6地址对于世界来说是相当新的,基本上是由“:”分隔的八个十六进制数字。IPv6地址的示例将是2001:0cb8:85a3:0000:0000:8a2e:0370:7334。它们不稳定,因此尚未广泛使用。由于网络稳定性,网络仍在使用IPv4,因为目前尚不稳定,因此无法估计何时开始使用IPv6。

IPv4分为五类,分别为A类,B类,C类,D类,E类。

IP地址中的八位字节

A类:如上图所示,对于A类IP地址,IP地址的第一个八位字节的第一位是常量,为“0”。

第二列表示网络位和相应IP地址类的主机位。考虑到A类IP地址,我们有以下公式:

网络/子网数量= 2^(# of network bits)

每个子网中的有效主机数= 2^(# of host bits) — 2

网络位和主机位的数量由IP地址类的默认子网掩码决定。

A类IP地址的默认子网掩码是255.0.0.0,即11111111.00000000.0000000.00000000`。因此,对于A类:

网络位= 8,主机位= 24。

由于网络位= 8,主机位= 24,因此它们的总和必须为32,因为IPv4地址是32位。但是,因为我们使用一位(第一个八位位组中的第一位)来识别类:

可用网络位数 =网络位数 - 常数位数= 8-1 = 7

因此,A类中可能的网络数量 =2^7 — 2 = 126和可能的主机数量(也就是可连接到网络的设备)中的一类每个网络 = 2^24-2 = 16277214

现在,在这里,对于A类,您可能想知道为什么我从可能的网络数量中减去额外的2。这是因为,对于A类,127.xyz被保留。对于其他类,使用通常的公式。

因此,IP类从地址A范围1.x.x.x126.x.x.x

B类:这种情况与B类相似。唯一的区别是第一个八位位组的2位是常数(10),它们识别出属于B类的IP地址类。所有其他计算都是相同的,我没有提到他们在这里,因为他们很容易从上面的表中抓取。他们的范围从 。128.0.x.x191.255.x.x

C类:第一个八位字节的3位是常数(110),并且它们标识类如类C.它们的范围从192.0.0.x223.255.255.x

D类和E类:D 类和E类用于实验目的。

IPv4地址主要有两种类型:

  • 静态:这些IP地址是设备随时间保持不变的地址。这些例子是我们用来托管我们的应用程序,网站等的远程服务器,我们使用ssh客户端来ssh到我们的服务器。
  • 动态:通常,这些是分配Internet网络中的公共计算机的IP地址。尝试关闭路由器,您将看到计算机IP地址的变化!(但只有在阅读本文后才能阅读)。现在,您可能在想谁分配这些IP地址?它是DHCP(动态主机配置协议)服务器,本文将进一步简要介绍。

注意:设备可以同时拥有多个IP地址。考虑连接到两个网络的设备,wifi以及任何LAN网络 - 它将具有两个IP地址。这意味着IP地址被分配给接口而不是直接分配给计算机。

路由器

顾名思义,路由器是一个负责路由数据包的硬件组件。它确定数据包来自哪个节点以及发送方节点要将其发送到哪个目标节点。没有计算机知道其他计算机的位置,并且数据包不会发送到每台计算机。路由器识别必须向其发送网络数据包的目标节点地址,并将其转发到所需的地址。

路由器具有特定的“路由协议”,它定义了与另一个路由器或网络节点交换数据的格式。换句话说,路由协议定义了路由器如何相互通信。

路由器构建一个“路由表”,用于标识在发送数据包时在网络中采用的最优化路径。

从技术上讲,路由表只是一个表,其中包含从一个路由器到另一个路由器的“路由”列表。每条路由包含网络中其他路由器/节点的地址以及如何到达它们。

代码语言:javascript
复制
Routing table:
代码语言:javascript
复制
Destination  Gateway     Genmask        Flags Metric Refs Iface
default      192.168.0.1 0.0.0.0        UG    1024   233  eth0
192.168.0.0  *           255.255.255.0  UC    0      0    wlan0
192.168.0.0  *           255.255.255.0  UH    0      2    eth0

以上是路由表的示例。需要注意的关键点是:

  • 目标:这是目标节点的IP地址。它指示网络数据包应该在哪里结束。
  • 网关:网关是连接两个网络的组件。请考虑您将路由器连接到另一台路由器。每个路由器都连接有设备。因此,网络数据包进入另一个网络(比如R2的网络)之后的最后一个路由器(例如R1)的地址称为网关。通常,网关只不过是路由器。让我举一个例子:说你的房间是一个网络,而你兄弟房间旁边的房间是另一个网络,那么两个房间之间的“门”可以被视为网关。人们有时会将“ 路由器 ”称为网关,因为它们就是“ 通往另一个网络的网关 ”。
  • Genmask / Subnet mask:它只是网络/子网掩码。子网掩码是一个数字,当与IP地址结合使用时,您可以将IP空间划分为越来越小的块,以便在物理和逻辑网络中使用。子网掩码计算如何发生的解释超出了本文的范围。
  • 标志:不同的标志有不同的含义。例如,在第一路线中,“UG”中的“U”表示路线是UP,而“UG”中的“G”表示GATEWAY。由于路线表示GATEWAY,因此它是通往其他网络的门。每当我们通过这条路线发送任何数据时,它就会被发送到另一个网络。
  • Iface(网络接口):网络接口是指路由表中定义的路由具有目标计算机的网络。即如果您连接到Wifi,那么它将是“wlan”并且当您连接到局域网,然后它将是“eth”。

所以这是路由器的工作方式,借助路由协议和路由表。

到现在为止。我们在这里学习组件。我需要将它们拼接在一起,并了解互联网是如何工作的。“

知道更多的术语,你将对一切如何进行正确的理解。

网络地址转换(NAT)

网络地址转换是路由器用于向更多设备提供互联网服务的技术,其中公共IP的使用较少。因此,ISP为路由器分配单个IP地址,并将私有IP分配给连接到它的所有设备。NAT帮助ISP为更多消费者提供互联网接入。

因此,如果您连接到您家的路由器,您的公共IP将对全世界可见,但私有IP不会。无论通信的网络数据包将由您的公共IP(即分配给路由器的公共IP)进行寻址。

通过上图看。比方说,在你的家庭网络,您试图访问medium.com(远程静态IP: )72.14.204.147,从你的计算机(私有IP: 192.168.1.100)。

因此,对于您的计算机,连接如下所示:

192.168.1.100:3764172.14.204.147:80

“37641”是NAT路由器为您的设备/计算机分配的随机端口号。(当在计算机上的不同端口上运行的守护程序之间存在网络通信时,NAT使用相应的端口)。每个出站连接都由NAT路由器获取分配的端口。

连接在NAT中建立如下:

代码语言:javascript
复制
Private IP   |PrivatePort |PublicIP |PublicPort |Remote |RemotePort
代码语言:javascript
复制
------------- ------------ --------- ----------- ------- -----------
代码语言:javascript
复制
192.168.1.100 | 37641 | 104.244.42.129 | 59273 | 72.14.204.147 | 80

但是,由于网络的外部世界不知道您的私人地址,因此连接如下所示:medium.com:

104.244.42.129:5927372.14.204.147:80

这样,我们实现了分配更多数量的IP地址而不浪费许多公共IP。

现在,当medium.com将响应发回时104.244.42.129:59273 ,它会一直传输到您的家庭路由器,然后查找相应的私有IP和专用端口,并将数据包重定向到您的设备/计算机。

注意:NAT是一个通用概念。NAT可以实现为1:1,1:N,其中1,N是网络中的IP地址数。称为“IP伪装”的技术是1:N NAT。

动态主机配置协议(DHCP)

动态主机配置协议或DHCP负责为主机分配动态IP地址。如果有一系列路由器到达主机,则由ISP或以前的路由器维护DHCP服务器。

因此,IP地址的分配由DHCP服务器执行。通常,ISP维护DHCP服务器,并且我们家中的路由器从DHCP服务器分配公共IP。

注意:每当路由器或由ISP或路由器维护的DHCP服务器重新启动时,IP地址分配将再次启动,并且设备将分配与先前的IP不同的IP。

域名系统/服务器

我们已经讨论过任何机器都是由IP地址识别的。

好的,所以你localhost在你的机器上运行一个Web服务器。如果你在任何Linux机器上的主机中dug around,你会遇到这样的事情:

代码语言:javascript
复制
127.0.0.1 localhost 
255.255.255.255 broadcasthost 
:: 1 localhost

这意味着即使您键入127.0.0.1浏览器的URL栏,也意味着相同localhost

与上述类似,您每天使用的网站是在具有静态IP地址的某个远程实例/节点上运行的Web服务器。那么,在浏览器的URL栏中输入该IP地址将带您进入该网站?

是的,肯定会的。但是,你是一个超级记住数千个网站的IP地址吗?回答是记不住的。

因此,我们使用的域名,例如medium.com,twitter.com,behance.net,codementor.io等。

域名服务器是具有巨大域名映射IP地址记录的服务器,其搜索域输入并返回托管您要访问的网站的机器的相应IP地址。

DNS如何实际工作?

  1. DNS由您的ISP(互联网服务提供商)管理。
  2. 当我们在地址栏中键入URL时,数据包通过您的路由器,可能是多个路由器到您的DNS服务器所在的ISP。
  3. ISP上的DNS服务器在其数据库中查找域。如果找到条目,则返回该条目。
  4. 如果在其维护的主数据库中找不到任何条目,则DNS服务器将通过Internet传输到另一个ISP维护的另一个DNS服务器,并检查该条目是否在该另一个DNS服务器的数据库中可用。除了返回从另一个DNS获取的IP地址外,它还将使用此新条目更新主数据库。
  5. 因此,有时(非常罕见地)DNS服务器可能必须遍历到多个DNS服务器以获得匹配的条目。
  6. 如果在遍历互联网上的大量DNS服务器之后,它没有获得匹配的条目,则DNS服务器抛出错误,指示“域名无效或不存在”。

注意:

互联网名称与数字地址分配机构(ICANN)是一个联盟(非营利性公司),代表社区管理域名和IP地址范围的分配。

域分为三个部分,如下图所示。

  1. 协议:用于访问网站的协议,例如HTTP,HTTPS等。
  2. 域名:我们域中的主域名。这可以是根据ICANN注册管理机构提供的任何内容。
  3. 域名扩展:这是在购买域名时被认为重要的域名。通常,它分为两种类型:
  • 通用顶级域名(gTLD):包括.com,.org,.net,.edu,.co等最受欢迎的域名扩展。
  • 国家/地区代码顶级域名(ccTLD):这些域名表明域名与域名扩展中指定的国家/地区代码相关。例如,“.cn”表示该网站源自中国。此外,某些ccTLD要求购买域名的人应来自同一个国家/地区。大多数小国家/地区代码扩展都无法从该国家/地区以外的地方进行搜索。

互联网服务提供商(ISP)

互联网服务提供商是为每个人提供互联网的公司。您现在正在阅读的文章是因为您的ISP为您提供的互联网。

ISP提供互联网,处理将您的请求路由到正确的目的地,在他们维护的DNS缓存的帮助下解析域名,并处理所有这些使我们能够使用互联网的网络基础设施。

ISP是一种在互联网上工作的层次结构。有某些类型的ISP,即第1层,第2层,第3层ISP。

  • 第1层 ISP是连接互联网上主要网络的ISP。将它们视为互联网的主要高速公路。它们几乎连接到互联网上的每个网络。此外,他们还提供对第2层ISP的互联网访问。恩。CERFNet,UUNet,PSINet。他们也被称为网络服务提供商。这些ISP通过海底的大型电缆相互连接。
  • 在第2层(区域)互联网服务供应商是那些谁主要是组织,消费者提供互联网服务(即“我们”)或第3周的ISP。您使用的互联网连接来自第2层ISP。但是,组织也可以从第1层ISP获得Internet访问权限。
  • 第3层(本地)互联网服务提供商就像第2层一样。它只是一层层次结构,从第2层ISP购买带宽并将其出售给消费者。

通过路由器的流量也通过第3层(如果存在),第2层,最终通过第1层ISP到达另一个网络。

将所有上述内容放在一起

到目前为止,我们已经了解了使一切工作所需的所有组件。现在,我们将它们粘合在一起。

计算机网络的详细图表

让我们总结一下我们学到的所有东西:

  • 当计算机/设备联机时,它将获得路由器分配的专用IP。路由器从ISP获取公共IP。
  • 网络中的其他设备被分配唯一的私有IP。
  • 互联网服务提供商是世界各地的互联网服务提供商。他们向区域和本地ISP销售互联网服务,我们和消费者从中购买互联网。
  • 因此,当设备尝试与某个其他网络上的某个其他设备建立网络连接时,它会使用其网关(路由器)的标识来实现。然后,路由器将私有IP和专用端口号映射为公共IP和随机高整数公共端口号。
  • 然后路由器将数据包发送到所需的目的地,其中一些其他路由器或网关与先前的路由器做同样的事情并分析该数据包来自哪个计算机/设备。
  • 远程计算机/设备通过将目的地作为路由器的公共IP和公共端口来响应。
  • 然后路由器再次检查私有IP和专用端口并转发网络数据包。

因此,这就是互联网又称一种使用TCP / IP协议的计算机网络的工作原理。