当前位置: 首页 > news >正文

Linux网络基础全面解析:从协议分层到局域网通信原理

Linux系列


文章目录

  • Linux系列
  • 前言
  • 一、计算机网络背景
    • 1.1 认识网络
    • 1.2 认识协议
  • 二、网络协议初识
    • 2.1 协议分层
    • 2.2 OSI七层模型
    • 2.3 TCP/IP协议栈
    • 2.4 网络协议栈与OS的关系
    • 2.5 网络协议在网络传输时的作用
  • 三、网络通信
      • 局域网通信的安全隐患与应对
      • 总结


前言

Linux系统部分的学习告一段落,接下来我们将步入Linux网络部分。在本篇文章里,我们会着重介绍网络部分的基础概念,助力大家搭建起初步的知识框架。不过,本文不会对知识点进行深入剖析。


一、计算机网络背景

特别声明:为了让逻辑自洽,以便大家更好理解,下面的故事是编的,大致方向是没错的

1.1 认识网络

我们知道,计算机最初被应用于军事领域,用于处理海量数据。那时,每台计算机都是独立运行的个体。想象一下,在一个军事指挥中心,有情报分析人员要整理数据、审核人员要核对数据准确性、战术研究人员要依据数据开展模拟实验等。这些工作理论上可以同时进行,但由于计算机之间无法传输数据,他们只能依次等待,原本可以并行开展的任务,变成了按顺序逐个执行。这就凸显出问题:当多人需要基于同一份数据协同工作时,数据难以转移成为极大阻碍。正因如此,网络的诞生成为必然,它打通了数据流通的壁垒,让协同作业得以高效实现。

基于上述需求,网络应运而生。起初,计算机之间通过线缆连接,实现信息传输。随着应用场景的拓展,“服务器”的概念诞生。各计算机能够将自身数据上传至服务器,当其他主机有需求时,可直接从服务器将数据拉取到本地。如此,最初的局域网雏形便形成了。

在这里插入图片描述

随着计算机技术的进步,各类实验室开始部署小型计算机网络用于学术研究。然而,不同实验室的网络之间无法直接传输数据,导致学术成果难以高效共享,严重制约了协作效率。

为打破这种信息孤岛,将不同实验室的局域网连接起来实现跨网络传输的需求日益迫切。在历史进程中,各个实验室的子网逐渐互联,这种子网的集联催生出规模更大的网络-------广域网。与此同时,新的问题随之涌现:

  • 地理距离限制:当两个实验室位于不同楼层或楼宇时,会面临信号衰减等
  • 设备定位难题:跨网络传输时,如何精准识别数据该发往哪个实验室的哪台设备

为解决这些问题,能够连接不同子网的路由器、交换机等网络设备应运而生(具体原理后续章节详细解析)。

在这里插入图片描述

1.2 认识协议

协议的本质是一种规则性约定,其诞生旨在解决网络通信中的各类实际问题。数据在网络传输过程中可能面临以下核心挑战:

  • 传输可靠性:如何确认数据是否成功抵达目标主机;
  • 数据处理逻辑:接收方如何解析和处理收到的数据;
  • 路径寻址准确性:如何确保数据按正确路径传输至下一个节点。

通过预先约定“成功标识”“数据接收确认机制”等规则,不仅能降低主机间的通信成本,更能显著提升交互效率。计算机间的通信依赖光信号或电信号,通过频率高低信号强弱来编码二进制信息(0和1)——这正是网络协议的核心价值之一。

协议部分后续的文章我们会详细介绍

二、网络协议初识

2.1 协议分层

接下来我们通过下面示例进一步了解协议:
在这里插入图片描述
日常打电话时,我们是通过接口与电话机交互。电话机依据底层协议,将信息传递给另一部电话机,随后这部电话机再经接口把信息传达给对方用户。从本质上看,这一过程是人与电话的沟通,但在逻辑层面,我们常觉得是人与人、电话与电话在交流。

打电话时,我们开口说的第一声“喂” ,类似于语音层通信中的一次握手。在这个过程中,人们并不在意电话之间遵循的协议,电话也无需理会人与人交流使用的语言(汉语、英语)。这便是协议分层的优势体现:层与层之间低耦合、高内聚,各层专注自身功能,互不干扰 。
网络通信也使用了协议分层思想, 在这个例子中, 我们的协议只有两层,但是实际的网络通信会更加复杂, 需要分更多的层次,为了实现解耦,会在每一层都提供对应的协议,下面我们来学习一下。

2.2 OSI七层模型

``
OSI(国际标准化组织)是网络协议制定领域极具权威性的机构,网络分层标准由其制定。基于网络分层需求,OSI构建了七层网络模型,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 。

在这里插入图片描述

2.3 TCP/IP协议栈

由于部分层次的功能复杂庞大,难以完全融入操作系统,在工程实践中,网络协议的分层结构最终被简化为五层,即物理层、数据链路层、网络层、传输层和应用层,会话层与表示层未被直接纳入协议架构。不过,在代码编写过程中,开发者会发现,尽管这两层未在底层协议中明确体现,但在实际编程实现中是不可或缺的。通常,会话层与表示层的功能并非由操作系统内核实现,而是由上层应用程序来完成 。

在操作系统里,网络层和传输层是尤为关键的两层协议。传输层中最具代表性的协议是TCP(传输控制协议),网络层中则是IP(网际协议) 。

物理层:负责光/电信号的传输方式。像常见的以太网网线、光纤,以及如今WiFi无线网借助的电磁波等,都属于物理层范畴。 它决定了网络的最大传输速率、传输距离和抗干扰能力等。集线器(Hub)就工作在这一层。

数据链路层:主要处理设备间数据帧的传送与识别。涵盖网卡驱动、冲突检测。存在以太网、令牌环网、无线LAN等标准。交换机(Switch)工作于此层。

网络层:承担地址管理和路由选择任务。以IP协议为例,用IP地址标识主机,通过路由表规划主机间数据传输路径(路由)。路由器(Router)工作在网络层。

传输层:负责实现两台主机间的数据传输。比如传输控制协议(TCP),能保障数据从源主机可靠发至目标主机。

应用层:负责应用程序之间的通信,像简单电子邮件传输、文件传输协议等。网络编程很多时候针对的就是应用层。

2.4 网络协议栈与OS的关系

在之前我们学习了,Linux系统部分的知识,而今天我们把网络协议栈也有了大致了解,那么这两个又存在什么样的对应关系呢?

在这里插入图片描述
在整个协议栈体系中,网络层与传输层的核心功能均由操作系统内核实现(即内置在操作系统底层架构中),当主机A通过网络向主机B发送数据时,本质上是用户A与用户B通过网络进行通信。在此过程中,数据必须通过网卡才能发送至网络,而用户无法直接访问硬件设备,因此数据需在协议栈中逐层传递,这一过程会贯穿整个网络协议栈。同理,用户B若想获取A发送的数据,必须由网卡接收数据,再经过逐层解析与转换,最终才能获取数据。所以网络通信的本质就是在访问硬件!!
但是我们的数据要想贯穿协议栈就必须访问操作系统,而操作系统又不允许用户直接访问操作系统,所以, 我们对应的系统在网络层就必须给我们提供系统调用!!! 而开发者根据系统调用, 就能开发出各种各样的应用协议。

2.5 网络协议在网络传输时的作用

我们已经了解到,在网络协议栈的分层结构中,每一层都有对应的协议,而协议的核心作用是解决网络通信中的各类问题。接下来,我们通过一个的例子来模拟网络通信过程,直观呈现协议所发挥的关键作用:
在这里插入图片描述
每一层,具有下滑线的为该层的有效载荷,新添加的为报头,报文=报头+有效载荷
当客户A在给服务器发送“你好”请求时,该数据需要贯穿协议栈到达网卡进入网络,为了保证数据安全高效的传递,在网络协议栈的每一层,我们都会给该数据添加一些报头(专业名词),如:应用层:添加软件版本号、传输层:添加数据序号(防止传输过程中,数据紊乱)等。当接收方收到数据后,会对该报文逐层解包,并将解包后的报文再次传递给上层,在通信双方看来,各自都是在和对方对应的网络层直接通信,并不关心他的上一层,或下一层具体做了什么事。

在网络协议栈的分层结构中,每一层添加的报头本质上多为结构体对象。由于不同主机遵循同一协议标准,共享相同的结构体定义,因此接收方能够识别发送方添加的报文格式,并完成解析工作。这一机制确保了异构设备在网络中实现标准化通信。

我们还能发现, 当我们的数据包到达目标主机的时候, 从底向上的交付的过程, 其实就是去掉报头的过程。 我们把它, 叫做解包, 而通信的过程, 本身就是做不断地封装和解包的过程!
此处示例为方便理解每层只展示了一个协议,但实时上同一层存在许多协议
为此我们还需要知道下面两个实现思想:
第一个问题
若直接将碗中水倒入水桶则无法分离,但若用瓶子装水再放入水桶,取瓶即可分离。
类比协议:每层协议封装时需用报头(如瓶身)标记载荷边界,便于接收方逐层解包(如取瓶倒水),实现报头与载荷分离。

第二个问题
瓶身若标注“饮用”(类似报头信息),水桶管理者会将瓶中水分给“饮用水区”而非“浇花区”。
类比协议:报头需标明载荷归属的上层协议,确保数据精准分发给对应模块,即“分用能力”。

总结:
1、任何协议都必须提供,一种将报文和有效载荷分离的能力。
2、任何协议都要在报头中提供,决定将自己的有效载荷交付给上层哪个协议的能力。

三、网络通信

接下来我们以,以太网通信(局域网)为例,具体介绍
在这里插入图片描述

这是一间教室,老师正在给同学们上课。班级里有很多学生,其中有两位同学分别叫张三和李四。

当老师说“张三,站起来,你作业写没写”时,全班同学都听到了这句话,但只有张三会站起来。为什么李四没有反应?因为同学们在听到老师的“报文”后,会提取其中的关键信息——老师喊的是“张三”而非自己的名字,因此判断该消息与己无关,便将其“丢弃”了。

随后,张三回答:“老师,我交给您了,您忘记了。”这时全班同学又都听到了这句话,但其他同学(如李四)不会回应,因为他们意识到这是张三与老师之间的对话,并非针对自己。于是,其他同学再次将这条消息“丢弃”,只有老师会处理并回应张三的回答。

在这个场景中,老师和张三都认为彼此在直接沟通,但实际上全班同学都接收到了通信内容。只不过其他同学通过“提取报文中的目标标识”(如名字),判断自己并非接收方,从而忽略了消息。这种“一对多广播发送,但接收方仅处理目标为自己的消息”的模式,正是局域网(如以太网)的通信原理——数据在局域网中广播传输,每个设备通过解析报头中的目标地址(类似“名字”),决定是否处理该数据。在主机间通信时每个主机都已Mac地址作为自己的名字,该地址存在于数据链路层的报文中。
在这里插入图片描述
当主机H1向主机H10发送数据时,数据会以帧的形式通过以太网进行传播。在此过程中,H2、H3、H4等局域网内的所有主机都会接收到该帧,并对其进行解包处理。这些主机会首先检查帧头部中的目标MAC地址,发现该地址并非自己的MAC地址后,便会将整个帧丢弃。而H10主机在接收到该帧后,同样会对帧头部进行检查,当其发现目标MAC地址与自己的MAC地址相匹配时,就会将该帧的数据部分向上传递至网络层,随后再逐层进行解包处理,最终将数据交付给对应的应用程序。这就是以太网中主机的通信原理。

在局域网环境中,多台主机同时发送消息时,可能会引发数据碰撞问题在以太网中,当光电信号发生碰撞时,波形会紊乱,导致信息混乱。若想干扰局域网正常通信,一种简单的方式是持续向网络中发送垃圾信息,使其与正常信息频繁碰撞。

为解决这一问题,发送数据的主机需执行碰撞避免算法(由以太网驱动程序实现)。其核心原理是:当检测到碰撞发生时,主机暂停发送并随机延迟一段时间后重新尝试,通过“错峰发送”降低再次碰撞的概率。

局域网通信的安全隐患与应对

  1. 数据明文(裸漏、不加保护)传输风险
    当主机H1向H10发送数据时,信息会以明文形式在局域网中传播。理论上,其他主机(如H2)虽默认会丢弃非目标帧,但通过将网卡设置为混杂模式(非正常工作模式),可强制接收并解析所有流经的数据帧。此时,若数据未加密,H2等主机便可窃取并读取通信内容。

  2. 数据加密的重要性
    应对上述风险的有效手段是上层数据加密。例如,在应用层对数据进行加密处理后,再将密文传递给下层协议栈。即使数据在局域网中被截获,攻击者也难以破解加密后的内容。反之,若数据全程以明文形式传输(未加密),则存在极高的信息泄露风险。

总结

局域网的碰撞问题可通过驱动层的算法优化缓解,而通信安全的核心在于数据加密——通过上层协议对数据“加密保护”,即使我们的数据被非法窃取,也不会出现安全风险。

相关文章:

  • 【原创】ubuntu22.04下载编译AOSP 15
  • Git的windows开发与linux开发配置
  • femap许可与云计算集成
  • 量子通信技术:原理、应用与未来展望
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - 3 项目目录结构
  • Vue百日学习计划Day43-45天详细计划-Gemini版
  • 怎样解决photoshop闪退问题
  • ajax post请求 解决自动再get请求一次
  • 深度剖析ZooKeeper
  • 新书速览|GraphPad Prism图表可视化与统计数据分析:视频教学版
  • 接口自动化可视化展示
  • 业务流程和数据结构之间如何对应
  • 2025.05.20【Treemap】树图数据可视化技巧
  • 云计算与大数据进阶 | 27、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(上)
  • 精益数据分析(73/126):黏性阶段的功能优先级法则——七问决策模型与风险控制
  • SpringBoot集成Jasypt对数据库连接密码进行加密、解密
  • 请问交换机和路由器的区别?vlan 和 VPN 是什么?
  • ip地址改了网络还能用吗?ip地址改了有什么后果
  • OSI 网络七层模型中的物理层、数据链路层、网络层
  • SpringBoot-6-在IDEA中配置SpringBoot的Web开发测试环境
  • 海南征集民生领域涉嫌垄断违法行为线索,包括行业协会等领域
  • 国家发改委:内卷式竞争扭曲市场机制、扰乱公平竞争秩序,必须整治
  • 钟南山谈新冠阳性率升高:可防可治不用慌,高危人群应重点关注
  • 人民日报评论员观察:稳企业,全力以赴纾困解难
  • 媒体:多家国有大行存款利率即将迎来新一轮下调
  • 习近平:坚持科学决策民主决策依法决策,高质量完成“十五五”规划编制工作