什么是计算机网络以及如何真正理解它们
无论您是开发领域的新手,还是已经从事开发工作很长时间,或者即使您只是喜欢计算机并每天使用互联网的人,您都必须了解网络的基础知识,特别是计算机网络的基础知识。
如果您想深入了解服务器、服务器安全性以及如何从远程客户端连接到服务器,所有这些都需要您具备一些计算机网络及其组件的知识。我已尝试在本文中涵盖与计算机网络相关的大部分主题。
此外,从这里开始,我将把“计算机网络”简称为“网络”。
让我们首先看一下我对计算机网络的定义:
计算机网络可以定义为借助电缆、光纤等数据线在世界各地的计算机之间交换网络数据包。
互联网是一种计算机网络。某种程度上来说。
我们将了解一些常用的术语和组件以及它们在计算机网络中的功能,其中一些在上图中。
计算机网络中常用术语
节点
计算机网络中的节点是指任何尝试通过网络向另一个类似设备发送和接收网络数据包的计算设备,例如计算机、手机、平板电脑等。
网络数据包
网络数据包只不过是源节点想要向目标节点发送/接收的信息或数据单元。在本文中,网络数据包/数据包都传达相同的含义。
互联网协议 (IP)
假设你想在朋友生日那天送他一份生日礼物,你会把它寄到哪里?寄到他们的街道地址对吗?
这里的情况也是如此。早期的计算机科学家希望用一个独特的数字来识别互联网上的计算机,就像今天的电话号码一样。因此,他们提出了 TCP/IP 的概念。
计算机设备的 IP 地址是该设备在计算机网络中的地址。从技术上讲,它是一个 32 位的数字,用于标识网络中的设备。该网络中设备的所有通信都将通过其 IP 地址进行。
假设您正在将文件上传到任何网站或 Google 云端硬盘。
从网络通信的最低层来说,您的文件被转换为数据包,每个数据包都带有目标节点地址,而该地址只不过是 IP 地址。
从更高层次上讲,IP 地址分为两种类型:
- IPv4:如定义中所述,IPv4 地址为 32 位(四字节)。例如,104.244.42.129 就是一个 IPv4 地址,它是 twitter.com 的 IPv4 地址。IPv4 地址使用稳定,因此如今已用于识别世界各地的机器。
- IPv6:IPv6 地址对世界来说相当新,基本上是由八个十六进制数字组成的,中间用“:”分隔。IPv6 地址的示例如下:2001:0cb8:85a3:0000:0000:8a2e:0370:7334。它们不稳定,因此尚未得到广泛应用。由于 IPv4 比较稳定,互联网仍在使用 IPv4。由于 IPv6 目前还不稳定,因此我们无法预测何时会开始使用 IPv6。
IPv4 分为五类,分别为 A、B、C、D、E 类。
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类IP地址:
网络位 = 8,主机位 = 24。
由于网络位 = 8,主机位 = 24,所以它们的和必须为 32(因为 IPv4 地址是 32 位)。但是,由于我们使用 1 位(第一个八位字节的第一位)来标识类别:
可用网络位数=网络位数 - 常量位数 = 8 - 1 = 7
因此,A 类中可能的网络数量 = 2^7 — 2 = 126,
A 类中每个网络可能的主机数(即可连接到网络的设备)= 2^24-2 = 16277214
。
现在,对于 A 类,您可能想知道为什么我从可能的网络数量中额外减去了 2。这是因为 A 类127.x.y.z
保留了 2 个网络。对于其他类别,则使用通常的公式。
因此,A 类 IP 地址范围从1.x.x.x
到126.x.x.x
。
B类:情况与B类类似。唯一的区别是第一个八位字节中有两位是常数(10),它们标识IP地址属于B类。其他计算方法相同,我在此不再赘述,因为从上表很容易找到。它们的范围从128.0.x.x
到191.255.x.x
。
C 类:第一个八位字节的 3 位为常数(110),它们标识该类为 C 类。它们的范围从192.0.0.x
到223.255.255.x
。
D 类和 E 类:D 类和 E 类用于实验目的。
IPv4地址主要有两种类型:
静态:这些 IP 地址是指设备在一段时间内保持不变的 IP 地址。例如,我们用来托管应用程序、网站等的远程服务器,我们会使用 SSH 客户端通过 SSH 连接到这些服务器。
动态:通常,这些 IP 地址分配给互联网中的普通计算机。尝试关闭路由器,您会看到计算机的 IP 地址发生变化!(但只有在阅读本文后才知道 😛)。现在,您可能想知道是谁分配了这些 IP 地址?是 DHCP(动态主机配置协议)服务器,本文将对此进行简要介绍。
注意:一个设备可以同时拥有多个 IP 地址。假设一个设备连接到两个网络(WiFi 或任何 LAN 网络),它将拥有两个 IP 地址。这意味着 IP 地址分配给接口,而不是直接分配给计算机。
好的,到目前为止一切顺利。我们继续。
路由器
顾名思义,路由器是一个负责路由数据包的硬件组件。它确定数据包来自哪个节点,以及发送方节点希望将其发送到哪个目标节点。没有计算机知道其他计算机的位置,数据包也不会发送到每台计算机。路由器会识别网络数据包需要发送到的目标节点地址,并将其转发到所需的地址。
路由器有特定的“路由协议”,它定义了与其他路由器或网络节点交换数据的格式。换句话说,路由协议定义了路由器之间如何通信。
路由器建立一个“路由表”,用于识别在网络发送数据包时应采用的最优化路径。
从技术上讲,路由表就是一张表,其中列出了从一个路由器到另一个路由器的“路由”。每条路由都包含网络中其他路由器/节点的地址以及如何到达它们。
目的地 | 网关 | 基因掩码 | 旗帜 | 公制 | 参考文献 | 伊法斯 |
---|---|---|---|---|---|---|
默认 | 192.168.0.1 | 0.0.0.0 | 本科生 | 1024 | 233 | eth0 |
192.168.0.0 | * | 255.255.255.0 | 加州大学 | 0 | 0 | 无线网络 |
192.168.0.0 | * | 255.255.255.0 | 呃 | 0 | 2 | eth0 |
以上是路由表的示例。这里需要注意的关键点是:
- 目标:这是目标节点的 IP 地址。它指示网络数据包最终到达的位置。
- 网关:网关是连接两个网络的组件。假设你有一个连接到另一个路由器的路由器。每个路由器都连接着其他设备。因此,网络数据包进入另一个网络(例如 R2 的网络)时所经过的最后一个路由器(此处为 R1)的地址称为网关。通常,网关就是路由器。我再举一个例子:假设你的房间属于一个网络,而你隔壁兄弟姐妹的房间属于另一个网络,那么这两个房间之间的“门”就可以被视为网关。人们有时将“路由器”称为网关,因为它们就是“通往另一个网络的网关”。
- Genmask/子网掩码:它就是网络/子网掩码。子网掩码是一个数字,它与 IP 地址组合在一起,可以将 IP 地址空间划分成越来越小的块,用于物理网络和逻辑网络。子网掩码的计算方式超出了本文的讨论范围。
- 标志:不同的标志具有不同的含义。例如,在第一个路由中,“UG”中的“U”表示路由处于“UP”状态,而“UG”中的“G”表示“GATEWAY”。由于该路由表示“GATEWAY”,因此它是通往另一个网络的门户。每当我们通过此路由发送任何数据时,它都会被发送到另一个网络。
- Iface(网络接口):网络接口是指路由表中定义的路由将目标计算机连接到的网络。也就是说,如果您连接到 Wi-Fi,则该接口为“wlan”;如果您连接到 LAN,则该接口为“eth”。这就是路由器在路由协议和路由表的帮助下工作的原理。
到目前为止一切都很好。但是,你肯定在想——
“好的!不过,我们这里学习的是组件。我需要把它们连接起来,了解互联网是如何运作的。”
太棒了!再了解一些术语,你就能正确理解这一切了。
网络地址转换 (NAT)
网络地址转换 (NAT) 是路由器使用的一种技术,用于在减少公网 IP 使用量的情况下,为更多设备提供互联网服务。因此,ISP 会为路由器分配一个 IP 地址,并将私有 IP 分配给所有连接到路由器的设备。NAT 可以帮助 ISP 为更多用户提供互联网访问。
因此,如果您连接到家中的路由器,您的公网 IP 将对外界可见,但私网 IP 则不会。所有网络数据包的通信都将由您的公网 IP(即分配给路由器的公网 IP)进行寻址。
考虑上图。假设在您的家庭网络中,您正尝试从您的计算机(私有 IP:192.168.1.100)访问 medium.com(远程静态 IP:72.14.204.147)。
因此,对于您的计算机,连接如下所示:
192.168.1.100:37641 → 72.14.204.147:80。
“37641” 是 NAT 路由器分配给您的设备/计算机的随机端口号。(当计算机上不同端口上运行的守护进程之间进行网络通信时,NAT 将使用相应的端口)。每个出站连接都会由 NAT 路由器分配一个端口。
在 NAT 中建立的连接如下:
私有IP | 私人港口 | 公共IP | 公共端口 | 偏僻的 | 远程端口 |
---|---|---|---|---|---|
192.168.1.100 | 37641 | 104.244.42.129 | 59273 | 72.14.204.147 | 80 |
但是,由于网络外部不知道您的私人地址,因此与 medium.com 的连接如下所示:
104.244.42.129:59273 → 72.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 地址。DHCP 服务器由 ISP 或之前的路由器(如果存在连接主机的路由器链)维护。
因此,IP 地址的分配由 DHCP 服务器完成。通常,ISP 会维护一个 DHCP 服务器,我们家里的路由器会从 DHCP 服务器获得一个公网 IP。
注意:每当路由器或由 ISP 或路由器维护的 DHCP 服务器重新启动时,IP 地址分配都会重新开始,并且为设备分配的 IP 与以前不同。
域名系统/服务器
我们已经讨论过,任何机器都是通过 IP 地址来识别的。
好的,现在你在本地主机上运行着一个 Web 服务器。如果你查看过任何 Linux 机器上的 hosts 文件,你可能会遇到类似这样的情况:
127.0.0.1 | 本地主机 |
---|---|
255.255.255.255 | 广播主持人 |
::1 | 本地主机 |
这意味着即使您127.0.0.1
在浏览器的 URL 栏中输入,其含义也与 相同localhost
。
与上述类似,您日常使用的网站是运行在某个具有静态 IP 地址的远程实例/节点上的 Web 服务器。那么,在浏览器的 URL 栏中输入该 IP 地址就能转到该网站吗?
是的,肯定会。但是,你真的能记住成千上万个网站的IP地址吗?
不。
因此,我们使用的域名有 medium.com、twitter.com、behance.net、codementor.io 等。
域名服务器是具有大量域名映射IP地址记录的服务器,它会搜索域名输入并返回您要访问的网站所在机器的相应IP地址。
DNS 实际上是如何工作的?
- DNS 由您的 ISP(互联网服务提供商)管理。
- 当我们在地址栏中输入 URL 时,数据包会通过您的路由器(也许是多个路由器)传输到您的 DNS 服务器所在的 ISP。
- ISP 的 DNS 服务器在其数据库中查找域名。如果找到条目,则返回该条目。
- 如果在其维护的主数据库中找不到任何条目,DNS服务器将通过互联网访问其他ISP维护的DNS服务器,并检查该条目是否在该DNS服务器的数据库中可用。除了返回从其他DNS服务器获取的IP地址外,DNS服务器还会使用此新条目更新主数据库。
- 因此,有时(很少)DNS 服务器可能必须遍历多个 DNS 服务器才能获得匹配的条目。
- 如果在遍历互联网上的大量 DNS 服务器后仍未获得匹配的条目,则 DNS 服务器将抛出错误,指示“域名无效或不存在”。
注:互联网名称与数字地址分配机构 (ICANN)是一个联盟(非营利性公司),代表社区管理域名和 IP 地址范围的分配。
域名分为三个部分,如下图所示。
-
协议:访问网站所使用的协议,例如 HTTP、HTTPS 等。
-
域名:我们域名中的主域名。可以是 ICANN 注册中心提供的任何域名。
-
域名后缀:这是购买域名时需要考虑的重要因素。通常,它分为两种类型:
- 通用顶级域名 (gTLD):包括最受欢迎的域名扩展名,如 .com、.org、.net、.edu、.co 等。
- 国家代码顶级域名 (ccTLD):这些域名表示该域名与域名后缀中指定的国家代码相关。例如,“.in”表示该网站源自印度。此外,一些 ccTLD 要求购买域名的人必须来自同一国家/地区。大多数小型国家代码后缀在该国/地区以外无法搜索。
互联网服务提供商 (ISP)
互联网服务提供商 ( ISP)是为每个人提供互联网服务的公司。您正在阅读的文章正是得益于您的 ISP 提供的互联网服务。
ISP 提供互联网,负责将您的请求路由到正确的目的地,借助他们维护的 DNS 缓存解析域名,并处理所有这些使我们能够使用互联网的网络基础设施。
互联网服务提供商 (ISP) 是互联网上的一个层级结构。ISP 分为几类,即一级 ISP、二级 ISP 和三级 ISP。
Tier 1 ISP 是连接互联网主要网络的 ISP。它们就像互联网的主要高速公路。它们几乎连接到互联网上的每个网络。此外,它们还为 Tier 2 ISP 提供互联网接入。例如 CERFNet、UUNet、PSINet。它们也称为网络服务提供商。这些 ISP 通过海底大型电缆相互连接。Tier
2 (区域) ISP 主要为组织、消费者(即“我们”)或 Tier 3 ISP 提供互联网服务。您使用的互联网连接来自 Tier 2 ISP。但是,组织也可以从 Tier 1 ISP 获得互联网接入。Tier
3(本地) ISP 与 Tier 2 类似。它只是从 Tier 2 ISP 购买带宽并将其出售给消费者的又一个层级。
通过路由器的流量也会经过第 3 层(如果存在)、第 2 层,最终通过第 1 层 ISP 到达另一个网络。
哇喔!真高兴你还陪着我。我们现在就把一切都整理好。
把以上所有的东西放在一起
到目前为止,我们已经了解了使一切正常运转所需的所有组件。现在,我们将把它们组合在一起。
让我们总结一下我们所学到的一切:
- 当计算机/设备上线时,它会获得路由器分配的私有 IP。路由器会从 ISP 获取公网 IP。网络中的其他设备则会分配唯一的私有 IP。
- 互联网服务提供商 (ISP) 遍布全球,彼此互联。他们向区域和本地 ISP 出售互联网服务,而我们消费者则从这些 ISP 那里购买互联网服务。
- 因此,当一个设备尝试与其他网络上的其他设备建立网络连接时,它会以其网关(路由器)的身份进行连接。然后,路由器会将私有 IP 和私有端口号与公有 IP 和随机的高整数公有端口号进行映射。
- 然后,路由器将数据包发送到所需的目的地,在那里其他路由器或网关执行与之前的路由器相同的操作,并分析该数据包来自哪台计算机/设备。
- 远程计算机/设备通过将目的地作为路由器的公共 IP 和公共端口发送来做出响应。
- 然后,路由器再次检查私有 IP 和私有端口,并转发网络数据包。这就是互联网(一种使用 TCP/IP 协议的计算机网络)的工作原理。
感谢阅读本文。如有任何疑问,欢迎在下方评论区留言。
如果你喜欢这篇文章,请在推特上给我留言(私信已开放),并与大家分享。下次再见!你太棒了!
再次感谢您的阅读!欢迎通过Twitter和GitHub与我联系。
文章来源:https://dev.to/lunaticmonk/what-are-computer-networks-and-how-to-actually-understand-them-20f9