前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络杂谈

网络杂谈

作者头像
SH的全栈笔记
发布2023-08-17 09:24:13
发布2023-08-17 09:24:13
1710
举报
文章被收录于专栏:SH的全栈笔记

互联网是什么相信不用在这里赘述,大家平时“网上冲浪”都离不开它。本篇文章中我们就来翻译翻译,什么 ** 的叫 ** 的网络。

网络的概念

对于网络,我们可能听过非常多的名词,比如因特网、万维网、互联网。三者的关系其实为:

互联网 > 因特网 > 万维网

那么一个简单的网络看起来会是这样:

1.png

一个简单的网络会由多个节点(AKA 计算机)和连接他们的链路组成。就好像你家里有 3 台电脑,然后它们都相互连接,这样你家里的 3 台电脑就组成了一个简单的网络。而所谓的互联网,就是网络的网络,如下所示:

1.png

而不同的网络之间可以通过路由器来相互连接,就形成了覆盖范围更大的互联网。所以总的来说,网络连接了许多的计算机,而因特网将许多网络连接到了一起。因此,因特网也是目前全球最大的计算机网络。

因特网的发展

第一阶段

互联网的起源带有一点战争的背景。它起源于 1960s,当时正值冷战,美国国防部开发了一个分布式的、预期能够抵御核攻击的通讯网络,而这就是世界上第一个互联网的原型 — ARPANET

在 1983 年,TCP/IP 协议成为了 ARPANET 上的标准协议,只要是使用了 TCP/IP 协议,计算机之间都能够相互通信。

第二阶段

1985 年,美国国家科学基金会围绕了 6 个大型计算机中心建设计算机网络,这一阶段的特点是形成了三级结构的因特网,分别是:主干网、地区网、校园网(企业网)。这个三级结构的网络覆盖了当时全美主要的大学和研究所。后续,越来越多的企业接入了因特网,导致了网络上通信量激增,由于当时的因特网是由政府维护的,其容量已经满足不了当时的需求了,所以美国政府决定将主干网转交给私人企业经营,并开始收费。

第三阶段

随着主干网开始由私人企业经营,该阶段形成了多层次 ISP 结构的因特网。什么叫 ISP?其实也就是互联网(因特网)服务的提供商。给你举个例子你就知道了,比如咱们国内的三巨头:中国联通、电信、移动,他们就是典型的 ISP。

ISP 其实也是一层代理,因为他们也是从因特网管理机构去申请的一堆 IP 地址,然后我们去 ISP 那办理宽带,支付费用,然后我们就能够在使用期间,用这个 IP 地址上网“冲浪”。

因特网中的协议

经过了这么多年的发展,互联网已经演变成了一个横跨全球、极其复杂的网络。这就好像我们每个城市的内部是通过各种道路相互连接的,而城市与城市之间也是相互连接的,而所有这些城市相互连接就组成了这个大型的“国家互联网”。连接到互联网的机器可以相互通信,而在“国家互联网”中的城市也可以相互“通信”。

你说包裹有可能在运输途中丢失吗?当然有可能,这样的例子还不少。同理,我们发送出去的数据包也有可能丢失。

所以为了保证数据包的准确送达,互联网使用了很多种协议。例如我们非常熟悉的 TCP/IPTCP 全称是 Transmission Control Protocol,IP 全称是 Internet Protocol。

它们分工明确,IP 负责数据包的路由,让它从一个“中转站”跳到下一个“中转站”,而 TCP 则是确保包裹可靠、准确、有序的到达“中转站”。

当然,在互联网这个巨大的概念里,TCP/IP 协议并不是全部,还有我们非常熟悉的 DNS(Domain Name System)和 HTTP(Hypertext Transfer Protocol)。

不太熟悉 DNS 及其底层原理的可以看看我之前写的这篇文章你的域名是如何变成 IP 地址的?

还有像 SSL 和 TLS 这样的网络安全加密协议,让我们的数据能够安全的在互联网上传播。当然,现在 TLS 已经将 SSL 给替代了,因为 TLS 有着更高的安全性和更强的认证机制。

在互联网的通信和数据交换流程中,协议扮演了一个非常关键的角色。这就好像人与人之间要进行沟通,语言是非常重要的一样。语言不通,沟通起来是非常非常困难的。通信的前提也是双方需要使用一样的协议。

而协议其实就是一堆的规则,这些规则规定了信息交换的细节。就比如咱们的老朋友三次握手、四次挥手就属于 TCP/IP 协议的一部分。而规定使用这些协议有什么好处?

答案当然是标准化,用标准化来屏蔽不通制造商或者不通系统之间的差异。举个例子,假设不同的制造商的制造出来的手机使用了不同的协议,那么某个 APP 在制造商 A 上能用,在制造商 B 上又不能用,又或者不同的操作系统之间不能相互通信,这类问题以现在的眼光来看肯定是不能接受的。

再举个标准化协议的例子,像我们用的 Type-C 这种接口的充电线就是一种标准,不管是哪个厂家生产的,只要遵循了这个标准,消费者就能够正常使用。再举一个协议不同的例子,不同的国家使用的充电器的标准不同,不同的标准之间要想充电则需要使用转接头,及其的不方便。

网络分层模型

OSI 七层模型

相信大家曾经都被问过一个问题:“请简单描述一下 OSI 七层模型”。这个网络模型是啥意思?怎么来的?或者说,为什么需要网络模型这个玩意儿?

这是因为 70 年代,网络快速发展演进出了不同网络体系结构,而由于全球的经济发展,迫切的需要使在不同的网络结构体系结构中的用户相互通信,交换信息。为了达成这一目的,国际标准化组织在 1977 年成立了专门的机构来研究这个问题。

而他们的研究成果就是著名的 OSI 模型。在 OSI 模型中总共包含了 7 层(到这里是不是很多人就条件反射的开始全文背诵了),从下至上分别是:物理层、数据链路层、传输层、网络层、会话层、表示层、应用层。

OSI1.png

但,OSI 模型的设计,理想很丰满,现实很骨感。OSI 仅仅取得了理论上的成果,这些专家在设计的时候,并没有太考虑商业化,并且,OSI 协议设计过于复杂,复杂则导致其运行效率低下,并且 OSI 的层次中有重复的层次。

所以用一句话来总结 OSI 七层模型就是:既复杂又不实用

TCP/IP 体系

相对于 OSI 的不实用,TCP/IP 是一个四层的体系结构,分别是:应用层、运输层、网际层、网络接口层,和 OSI 的对比如下图所示:

TCP_IP1.png

消息如何发送

简单的了解了一些背景之后,我们来看看网络中的消息是如何发送的。那在一般的认知中,所谓的通信是啥样的呢?可能看起来是这样:

假设现在有 A、B 两台机器,其 IP 地址分别为 1.2.3.4 和 4.3.2.1,它们的 IP 地址都不相同,并且需要通过上图中的“网络”进行通信。那如果 A 要发送消息给 B,这个消息该如何“传输”到 B 呢?当然是通过连接到 B 机器上的网线(假设是有线),我们知道,线路中传输的是电信号,这套转换的流程当然不需要我们手动的实现,这些功能都内置在了计算机中,而上面说的转化,则是由协议栈来完成的,协议栈的大致工作流程如下:

这样讲有点抽象,比如协议栈到底是啥,它是通过什么方式来处理的数据的,都不知道。关于协议栈相关的概念,以及数据包发送、接收的大致流程,在我之前写的 数据包从发送到接收,都经历了什么 这篇文章里都有详细的介绍,在此不再赘述。

这里我们拿 TCP/IP 协议栈来举个例子,它分为 4 层,大致长这样:

  • 应用层,就比如你看这篇文章所使用到的 HTTP 协议
  • 传输层,TCP 协议
  • 网络层,IP 协议
  • 硬件层,使用的是以太网协议,将二进制的数据转换成电信号,以及相互转换,就比如网卡

那结合上面这个图,就会变成这样:

这个流程跟上面举过的网购、快递包裹的例子非常类似,我们下单了东西,卖家会将东西层层的包装,而这个“打包”的过程跟协议栈对数据包的处理非常像,从上至下,将数据「Hi, there」一步步的处理。而对于我们收快递的人来说,我们会一点点从外至里的打开这个包裹,最终拿到我们购买的货物。而对于 4.3.2.1 的协议栈来说,一步步的将电信号还原成「Hi, there」也是同样的道理。

而我们将这个打包的细节添加到上图的话,看起来就会是这样,以 HTTP 协议来说:

可以看到,每一层的包都是由 XX 头和 XX 数据包组成的,通过协议栈的“层层加码”,通信所需要的关键的信息也会被打包进去:

  • 传输层,会将 HTTP 报文添加到 TCP 的数据包中,并在 TCP 头中添加发送方、接收方的端口号
  • 网络层,会将上一层的 TCP 包添加到 IP 数据包中,并且在 IP 头中添加发送方、接收方的 IP 地址
  • 硬件层,会将 IP 包添加到以太网数据包中,并在以太网头中添加发送方、接收方的 Mac 地址。

那么问题来了,我们现在只知道中间有个“网络”,那从 1.2.3.4 机器 A 中出发的数据包,是如何找到 4.3.2.1 B 这台机器的呢?A 从一开始就知道该走哪条线路

1.2.3.4 发送的数据,会经过协议栈从上至下的处理,变成一个一个的数据包,然后 4.3.2.1 收到数据包之后,也会经过协议栈从下至上的处理,解析出原始的消息。

参考

  • How Does the Internet Work?
  • 《计算机网络》
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SH的全栈笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网络的概念
  • 因特网的发展
    • 第一阶段
      • 第二阶段
        • 第三阶段
        • 因特网中的协议
        • 网络分层模型
          • OSI 七层模型
            • TCP/IP 体系
            • 消息如何发送
            • 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档