万物互联的起点:走进 Linux 网络的心脏 今天这篇文章不打算用枯燥的公式和代码来轰炸你。相反我想邀请你放下畏难情绪随我一起推开那扇看似厚重的大门以最直观的视角去初次感受 Linux 网络这颗“心脏”的跳动规律。让我们从宏观出发先看清这片波澜壮阔的连接图景。一.计算机网络背景在现实世界中我们人之间是需要协作的而我们同样也需要使用计算机来完成工作我们人直接可以直接面对面来进行通信交流合作来完成一些工作。 但是计算机呢计算机是人的工具人之间既然需要协作那么计算机之间也要协作那么计算机之间又该如何进行协作呢 答案当然就是我们今天的主题网络。在计算机的发展历程中从它的诞生再到操作系统最后到计算机网络技术这些技术的诞生都是源于人们日益增长的需求而出现的所以这个世界产生计算机网络技术是必然的结果那么下面我们来简单了解一下网络的发展过程那么最开始呢每个计算机之间相互独立每个计算机中都存储着不同的数据在这个阶段我们想要实现计算机之间的协同工作需要用到类似软盘等硬件将这种硬件插入到不同的电脑中借此来完成数据的共享但是这种方式显然太麻烦了。后来就有了最初的网络多个计算机中的数据可以通过网络上传到服务器中不必再靠硬件来实现计算机之间数据的共享方便了许多。再到后来计算机的数量更多了此时又出现了新的设备交换机和路由器这些计算机通过这些设备来完成协作这种方式我们就叫做局域网LAN。此时的技术就已经能支持不同地区的计算机之间的通信了。最后将多个局域网合并在一起就形成我们今天的广域网WAN它所覆盖的范围就更广泛了甚至可以跨越国家。二.初识协议协议简单理解就是一种约定什么意思呢以上图为例子我们知道计算机之间的传输介质是光信号和电信号通过频率和强弱来标识0和1这样的信息那么此时产生的问题就是你的计算机将信息传给另一个计算机它怎么知道你传的信息是什么意思呢所以这之间要有一个约定比如我传1010是什么意思1111是什么意思等等我们之间要约定好也就是需要约定好双方的数据格式这个约定我们就叫做协议。但是此时又有一个问题能够通信的两台计算机只约定好协议就可以了吗就比如上面我们只约定好我们传递的信息只能是0和1但是你用频率表示01我用强弱来表示01就好比我用中国话你用英语虽然大家遵守的是一套通信规则但是只是定好了基本的协议也是无法正常通信的。所以一份完善的协议需要我们去制定更多更细致的规则并让参与的人都要遵守就比如1.计算机生产厂商有很多 2.计算机操作系统也有很多 3.计算机网络硬件设备同样有很多所以为了让这些不同厂商生产的计算机能够互相通信就需要约定一个共同的标准大家都要遵守这就是网络协议。但是网络协议也不是什么人都能够来制定的一般是具有定制协议或者标准的资格的组织或者公司或者具有江湖规则的组织或者公司。就比如在5G领域华为就有资格来制定网络协议它在这个领域是具有很大的话语权的对应的就是上面的公司。三.协议分层3.1软件分层的好处协议本质也是软件在设计上为了更好地进行模块化解耦合也是被设计成为层状结构的。这在我们日常写的代码中其实也能够体现分层的思想就比如我们写的基类和子类基类就是一层而子类又是一层我们要想让基类的某个函数实现不同的功能只需要修改子类即可不需要修改基类。而对于软件分层的好处下面我们通过一个简单的例子来去理解我们日常在打电话时在语言层面我们都是用汉语在沟通但是在通信设备层即电话机它们可不是用汉语来进行沟通的它们有自己的协议通过遵守协议的内容他们就能知道对面的电话机传来的信息是什么意思进而对它进行解码转化为我们能听懂的汉语。 在上面的例子中我们的协议只有两层语言层通信设备层。可以很明显的看到不同的层级区别还是很大的。