045 网络基础

045 网络基础
小米里的大麦网络基础
1. 计算机网络背景
1. 网络发展
计算机网络的发展是技术迭代与需求驱动共同作用出的历史必然结果,据搜索:可大致分为以下 5 个关键阶段:
1. 起源:军事科研的 “抗毁通信” 需求(20 世纪 60 年代末)
- 核心事件:1969 年,美国国防部高级研究计划局(ARPA)启动了 ARPANET(阿帕网)项目。当时正值冷战,美国军方需要一种 “去中心化” 的通信网络 —— 即使部分节点被摧毁,其余节点仍能正常通信。
- 技术特点:ARPANET 最初仅连接了加州大学洛杉矶分校、斯坦福研究院等 4 个节点,采用 “分组交换” 技术(将数据拆分成小数据包传输,提高效率和抗毁性),这是现代网络的核心底层逻辑雏形。
2. 互联基础:TCP/IP 协议的诞生(20 世纪 70 年代)
- 核心问题:随着网络节点增多,不同网络(如 ARPANET 与其他科研网络)因 “语言不通” 无法互通。
- 关键突破:1974 年,文顿 ・ 瑟夫(Vinton Cerf)和罗伯特 ・ 卡恩(Robert Kahn)提出了 TCP/IP 协议族(传输控制协议 / 网际协议)。其中,IP 协议负责 “定位” 网络中的设备(类似地址),TCP 协议负责 “可靠传输” 数据(确保数据完整、有序到达)。
- 意义:TCP/IP 协议解决了 “不同网络如何互联” 的问题,成为全球网络的 “通用语言”,为互联网的全球化奠定了基础。
3. 扩张:从军事到学术的开放(20 世纪 80 年代)
- 核心事件:1986 年,美国国家科学基金会(NSF)建立了 NSFNET(国家科学基金会网络),将全美高校和科研机构的网络连接起来,并开放了 TCP/IP 协议的使用权限。
- 变化:网络用途从军事转向学术研究,科学家、教授可以通过网络共享数据、协作研究,网络规模快速扩大,节点数从数百增长到数万。
4. 普及:万维网与浏览器让互联网 “触手可及”(20 世纪 90 年代)
- 核心突破:1989 年,英国科学家蒂姆 ・ 伯纳斯 - 李(Tim Berners-Lee)在欧洲核子研究中心(CERN)提出 “万维网(WWW)” 构想,通过 “超文本传输协议(HTTP)” 和 “统一资源定位符(URL)” 实现文本、图片等内容的跨网络链接;1993 年,Mosaic 浏览器(首款图形化浏览器)诞生,普通人无需专业知识即可上网。
- 意义:互联网从 “科研工具” 转变为大众可使用的信息平台,网页、电子邮件、早期搜索引擎(如 Yahoo)开始普及,标志着 “互联网时代” 正式到来。
5. 爆发:移动化、智能化与全场景渗透(21 世纪至今)
- 技术驱动:宽带网络(提高传输速度)、移动互联网(3G/4G/5G 让网络摆脱有线束缚)、社交媒体(如 Facebook、微信)、云计算(远程存储与算力共享)、物联网(设备互联)等技术持续突破。
- 现状:互联网从 “信息传递工具” 升级为 “社会基础设施”,渗透到购物、办公、教育、医疗等几乎所有领域,形成了 “万物互联” 的数字生态。
2. 网络连接形态演进
1. 独立模式 —— 计算机之间相互独立,数据封闭
这是网络发展最原始的状态 —— 计算机相互独立,数据、业务完全本地化。
- 特点:每个终端(A/B/C)“各自为战”,业务 ①/②/③ 的数据只存在于对应终端;人(小松、小竹、小梅 )要切换业务,必须 “物理移动” 到对应终端前,且需等待前一个人用完(串行处理)。
- 本质:没有网络连接,设备间无法协同,资源(数据、算力)无法共享,效率极低。
2. 网络互联 —— 多台计算机连接在一起,完成数据共享
随着需求升级,“多机互联 + 服务器集中管理” 的模式出现,解决独立模式的低效问题。
- 特点:引入 “服务器” 作为 “数据中心”,小松、小竹、小梅有了 专属计算机,业务 ①/②/③ 的数据不再分散在终端,而是统一存在服务器里;人无需物理移动,通过专属计算机就能自由切换业务(并行处理)。
- 本质:网络开始发挥 “连接与共享” 价值 —— 通过服务器集中管理数据,多设备可协同,资源利用效率大幅提升。
3. 局域网(LAN) —— 规模扩大,设备分层连接
当用户、设备数量进一步增加,“交换机 + 路由器” 组成的局域网架构出现,解决 多设备高效组网 问题。
- 特点:用交换机连接 “同一区域内的设备”(如一个办公室 / 楼层),再通过路由器实现 “不同交换机间的连接”;设备数量突破 “几台” 的限制,形成 小规模、本地化的网络集群。
- 本质:通过 “分层设备(交换机负责内网,路由器负责跨网段)”,让更多设备有序连接,支持更复杂的本地组网需求(比如企业内部、校园网络 )。
4. 广域网(WAN) —— 打破地域,全局互联
最终,网络突破 “本地” 限制,走向广域互联,将远隔干里的计算机都连在一起。
- 特点:用路由器连接 “不同地域的局域网”(如大阪、东京、洛杉矶的 LAN),形成跨城市、跨国家的 广域网络;“局域网” 和 “广域网” 的边界被模糊(本质是 “更大范围的连接”)。
- 本质:网络从 “本地化协同” 升级为 “全球化互联”,支持跨地域的数据传输、资源共享(比如你在上海访问美国服务器的内容 )。
所谓 “局域网” 和 “广域网” 只是一个相对的概念,还有 “天朝特色” 的城域网,城域网是 介于局域网和广域网之间,以城市为主要覆盖范围的专用 / 公用网络 ,它的本质是 局域网技术在城市规模上的应用拓展 ,我们只需要将其看做一个比较大的局域网即可。
2. 认识协议
1. 协议的本质
网络协议本质就是一种约定。它规定了网络中设备如何通信、数据怎么传输之类的。就好比大家都说同一种语言才能交流,网络协议就是网络设备之间交流的“语言”,像 TCP/IP 协议就是很常用的,它保证了全球的网络能有序联通。
打个比方,就像我们在路上开车,得遵守交通规则,红灯停绿灯行,大家都这么做,交通才能顺畅。网络协议也是,它规定了数据在网络里怎么打包、传输、接收和处理。不同的网络设备,像电脑、手机、服务器等,只有都按照这些协议来“行事”,数据才能准确无误地在它们之间传递,这样我们才能正常上网冲浪、收发邮件什么的,所以说它就是一种大家都得遵守的约定。
2. 计算机中协议的理解
- 协议的生活类比:快递盒子上的快递单就类似协议,只有双方按格式填写,寄件人和收件人才能达成协议/约定完成“联通”。同样的,收快递时收件人不只是收到了快递,还收到了快递单的信息,在实际计算机中也是如此,当我们收到信息时,同时也收到了协议报头等信息。
- 计算机协议理解:
- 协议用结构体表示成二进制数据,添加报头后传输。
- 同一网络下,双方用相同源代码可认识协议结构体。
- 协议本质是二进制约定,用结构体定义公共数据类型。
- 光电信号含义:计算机传光电信号,其含义由协议遵守的源代码解释。
3. 网络协议的标准
- 网络标准定制:网络通信需统一标准,含软硬件多方面,常由顶级团队定制并推广。
- 标准推动因素:各厂商需要标准协议,否则无法进行连通,典型的有各手机厂商他们的充电协议、适配苹果等。标准被接受的驱动力是创造价值,吸引他人参与,一般推翻较难。
- 技术落地关键:技术要找应用场景,创造价值,才能获广泛使用,改变世界。
- 网络协议分层:网络协议分层是因传送问题复杂,需逐个解决。
一旦某种协议落地,想要推翻其实很难,就像微信用户如此庞大,即使做一个仿微信 APP 也很难受众。像如今 AI 竞争如此激烈,本质上也存在各国之间想要制定一种协议,拿到话语权。
3. 分层概念
1. 软件分层概念
核心意思:把复杂的软件系统按功能切成一层一层,每层只关心自己的事情,并且只通过明确的接口与上下层交互。例子:
- C++ 继承 + 多态: 子类(下层)实现细节变化,不会影响父类(上层)的使用。
- 虚拟文件系统(VFS): 通过函数指针和统一的数据结构,在用户和硬件驱动之间插入“中间层”,用户不用关心底层硬件细节。
2. 软件分层的原因 & 维护原则
为什么要分层?
- 降低耦合度:上层不必依赖下层的具体实现
- 便于维护:大项目拆成小模块,出问题时只修对应的层
维护原则:
- 低耦合:层与层之间的接口尽量简单、轻量
- 高内聚:同一层的代码、逻辑、数据要紧密相关
理想设计 = 高内聚 + 低耦合
3. 网络协议分层的原因
网络通信特别复杂,必须分层:
- 技术原因:模块化管理,方便团队开发、调试和扩展。
- 问题本身呈层次性:
- 主机和相邻设备如何通信(物理/链路层问题)
- 如何找到目标主机(网络层问题)
- 如何保证数据可靠传输(传输层问题)
4. 分层结构的类比(电话通信)
打电话时,你觉得自己直接和对方说话,实际上,你是在跟 电话设备 交互,信号会经过一系列处理和传输。分为:
- 语言层(人和电话之间的交流协议)
- 设备层(电话设备与通信网络的协议)
这样做的好处:某一层出问题,不会影响其他层 → 降低维护成本
分层就是“楼房结构”——每层有自己的功能和规则,楼层之间只通过楼梯/电梯(接口)连接,改一层不必拆整栋楼。软件分层如此,网络分层也是如此。
4. OSI 七层模型
虽 OSI 模型完善,不过因分得过细,工程实践中网络协议层状结构划分为五层协议。
自顶向下层数 | 分层名称 | 功能 | 每层功能概览 |
---|---|---|---|
7 | 应用层 | 针对特定应用的协议 | |
6 | 表示层 | 设备固有数据格式和网络标准数据格式的转换 | |
5 | 会话层 | 通信管理。负责建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层 | |
4 | 传输层 | 管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠地传送到目标地址) | |
3 | 网络层 | 地址管理与路由选择 | |
2 | 数据链路层 | 互连设备之间传送和识别数据帧 | |
1 | 物理层 | 以“0”、”1” 代表电压的高低、灯光的闪灭。界定连接器和网线的规格 |
5. TCP/IP 五层(或四层)模型
TCP/IP 是一组协议的代名词,它还包括许多协议,共同组成了 TCP/IP 协议簇。TCP/IP 通讯协议采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层: 负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的 WiFi 无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。[集线器](集线器 - Search Images)(Hub)就是工作在物理层的。
- 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。数据链路层底层的网络通信标准有很多,如以太网、令牌环网、无线 LAN 等。交换机(Switch)就是工作在数据链路层的。
- 网络层: 负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识一台主机,并通过路由表的方式规划出两台主机之间数据传输的线路(路由)。路由器(Router)就是工作在网络层的。
- 传输层: 负责两台主机之间的数据传输。例如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。
- 应用层: 负责应用程序间沟通。比如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层的。
标准虽好,但工程中会话和表示层交给应用层完成。网络通信里网络层和传输层最重要,代表性协议分别是 IP 和 TCP。
物理层我们考虑的比较少,因此很多时候也可以称为 TCP/IP 四层模型,一般而言:
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容。
- 对于一台路由器,它实现了从网络层到物理层的内容。
- 对于一台交换机,它实现了从数据链路层到物理层的内容。
- 对于集线器,它只实现了物理层的内容。
但这并不是绝对的,比如很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。
6. 网络传输
以两台主机进行文件传输为例,此时各层对应的协议如下:
首先需要明确的是,同一个局域网内的主机是能够直接进行通信的,因为最初局域网设计的目的,就是为了让局域网内的主机能够进行通信。
分用思想:
- 几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力。
- 几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议的能力一。
有效载荷:
- 在应用层看:有效载荷就是用户的实际数据(比如聊天文字、图片)。
- 在某一协议层看:有效载荷是来自 上一层的整个报文(包括上层的报头和上层的用户数据)。
从下到上分 链路层、网络层、传输层、应用层,每层有 “对等协议”(如应用层 FTP、传输层 TCP、网络层 IP ),发数据时上层依赖下层服务,收数据时下层为上层 “解包”,实现 “逻辑上的端到端通信”(比如用户 1 和用户 2 的 FTP,看似直接交互,实际依赖各层协议协作)。
1. 数据封装:“加头” 传递,层层打包
应用层: 用户进程生成数据(如“你好”),传递给应用层协议(如 FTP)。应用层协议可能添加一些信息(如“V1”)。
传输层: 数据传递到传输层,传输层协议(如 TCP)对其进行封装。TCP 添加序列号、确认号等控制信息,形成 TCP 段(数据段、数据报)。例如:“序号 V1 你好”。
网络层: 数据传递到网络层,网络层协议(如 IP)添加源 IP 地址和目的 IP 地址等头部信息,标识 “主机位置”,形成 IP 数据包。例如:“src, dst 序号 V1 你好”。
链路层: 数据传递到链路层,链路层协议(如以太网)添加源 MAC 地址和目的 MAC 地址等头部信息,标识 “局域网设备”,形成 以太帧。例如:“src mac dst mac src, dst 序号 V1 你好”。
物理层: 最终,数据被转换为二进制信号,通过物理介质(如以太网电缆)发送出去。
2. 解包:“拆头” 还原,层层上交
接收方相反:链路层先拆 “以太网头”,交给网络层;网络层拆 “IP 头”,交给传输层;传输层拆 “TCP 头”,还原出应用层数据,最终交给用户(如 FTP 服务器收到 “V1 你好” )。
3. 放大网络传输过程
数据 封装 的过程:
数据 分用 的过程:
7. 以太网通信
1. 以太网命名的由来
19 世纪,物理学家假设宇宙中充满 “以太”,认为它是光传播的介质。虽然后来实验证明以太并不存在,但这个词却留在了科学史上,带着一点浪漫色彩和遗憾意味。1973 年,美国施乐公司罗伯特·梅特卡夫正在研究一种局域网技术。它的特点是信息可以像广播一样传到网络中的所有节点。梅特卡夫灵机一动:这不就像当年物理学家设想的“以太”吗?虽然在物理世界里它是虚构的,但在计算机世界里,我真的做出了这样一个“传送信息的介质”!于是,他将这种技术命名为 Ethernet(以太网)。他把数据比作在 “无形的介质” 中流动,就像 “以太” 曾被认为是光传播的介质一样,虽然现实中不需要以太,但网络中的设备通过电缆(或无线)互相连接,数据在其中自由传输,如同 “以太” 无处不在。所以以太网命名是为了比喻数据在网络中如同在 “无形介质” 中传输,是对其传输特性的一种形象类比,也是对早期科学概念的一种借鉴与致敬,既借用了物理学的浪漫,也暗示了网络的广播特性。这个名字从此流传下来,成为计算机世界最重要的基础技术之一。
2. 局域网(LAN)通信原理
- 局域网(LAN): 类比 “教室”,是多台设备(主机)共享的通信空间。
- 主机(电脑、打印机等): 类比 “每位同学”,是局域网内的通信主体。
- MAC 地址: 类比 “同学的名字 / 学号”,是主机的全球唯一硬件标识(由网卡出厂时固化,48 比特长度)。其核心作用是在局域网内区分不同主机,确保唯一性(但实际上只需保证在同一局域网内唯一即可))。
局域网内数据传递需经过 “封装 - 广播 - 筛选 - 处理” 四步,具体如下:
- 数据帧封装: 发送主机将数据打包为 “数据帧”,帧中包含 源 MAC 地址(发送方身份)和 目标 MAC 地址(接收方身份),类似信件上的 “寄件人” 和 “收件人” 信息。
- 广播传递: 数据帧通过物理介质(网线、无线信号)发送到局域网后,会被 同一碰撞域内的所有主机网卡接收(类似老师在教室说话,所有同学都能听到)。
- 地址筛选: 每台主机在数据链路层(驱动层)解析数据帧,对比帧中的 “目标 MAC 地址” 与自身 MAC 地址:
- 若地址匹配(如 “被老师叫到名字的同学做出回应”),则保留数据并向上层交付处理;
- 若地址不匹配(如 “未被叫到的同学选择忽略”),则直接丢弃数据帧,不占用上层资源。
3. 小结
同一局域网内的主机通过数据帧中的 MAC 地址实现通信。数据帧包含源 MAC 地址(发送主机标识)和目标 MAC 地址(接收主机标识),发送后会被局域网内所有主机的网卡接收。但在正常模式下,只有目标 MAC 地址与自身匹配的主机会解析并处理该数据帧,从而拿到数据本身;其他主机检测到目标 MAC 地址不匹配后,会直接丢弃数据帧,不做进一步处理。
而 “网卡混杂模式” 是一种特殊工作状态,开启后网卡会接收局域网内所有数据帧,无论其目标 MAC 地址是否为自身,这使得其他主机的通信数据可被抓取(即 “数据裸奔”)。但正常情况下,网卡默认仅处理目标为自身的帧,混杂模式需手动开启,常被用于网络调试或潜在安全风险场景。局域网的广播特性导致数据在信道中 “半公开传递”,存在被窃取的风险,尽管底层数据可被捕获,对 应用层加密 仍能保障数据安全:
- 以太网底层协议(数据链路层、网络层)逻辑公开(如 Linux 内核开源),但应用层可通过加密算法(如 HTTPS)对数据加密;
- 即使数据被抓取,未掌握密钥的攻击者也无法解读内容(类似对话时用暗号交流,偷听者无法理解)。
大部分的抓包软件的原理其实就是使用了网卡的混杂模式,对于局域网内传递的信息不做比对丢弃,而是全部拿到手。
8. 数据碰撞问题:多设备共享信道的 “冲突与协调”
局域网本质是 “多主机共享物理信道” 的网络,多设备同时发送数据会导致信号干扰,即 “数据碰撞”,类似教室中多人同时说话导致的混乱。
1. 碰撞原因与表现
- 原因:多台主机同时向信道发送数据时,光电信号在物理介质中叠加干扰,导致数据帧损坏失效(类似多人说话声音混杂,无法分辨内容)。
- 表现:数据传输失败、网络卡顿(如宿舍多人同时上网时网速变慢);极端情况下,恶意发送大量垃圾数据可直接瘫痪局域网(“杀敌一千自损八百” 的攻击逻辑)。
2. 碰撞避免机制
为解决碰撞,以太网通过 “随机延迟重发算法” 协调主机发送时机:
- 主机发送数据前检测信道是否空闲,空闲则发送;
- 若检测到碰撞(发送方会收到自身信号与干扰信号的叠加),立即停止发送,并 随机等待一段时间后重试;
- 随机延迟通过算法生成,大幅降低多主机再次碰撞的概率(类似说话冲突后,大家随机等待一会儿再开口,减少重复抢话)。
3. 碰撞域划分:交换机的 “分区优化”
局域网内主机越多,同时发送数据的概率越高,碰撞风险越大。为缓解这一问题,便可引入 交换机 设备:
- 核心作用:通过记录 “端口与 MAC 地址对应关系”,将局域网划分为多个 碰撞域(类似将大教室拆分为多个小教室)。
- 优化逻辑:当主机 A 向主机 B 发送数据时,交换机仅将数据转发到主机 B 所在的端口,而非广播到整个网络,减少无效数据传播,降低碰撞概率。
- 注意:交换机划分碰撞域后,局域网仍是统一网络,主机间仍可正常通信(如小教室间同学仍能通过老师传递消息)。
4. 本质总结:临界资源的 “有序访问”
局域网通信的本质是 多进程对共享临界资源(通信信道)的有序访问:
- 局域网作为 “临界资源”,需通过碰撞检测、延迟重发等机制保证 “互斥访问”,避免数据冲突;
- 每台主机的通信行为由进程驱动(如淘宝客户端、迅雷下载),网络问题本质是进程对共享资源的协调问题 ——“系统与网络不分家”。
通过 MAC 地址实现定向传递、通过算法与交换机减少碰撞、通过应用层加密保障安全,局域网通信机制最终实现了 “共享信道上的高效、准确、相对安全的数据交互”,是构建复杂网络的基础。
9. 网络中的地址管理
1. IP 与 MAC 的关系与区别
对比 | IP 地址 | MAC 地址 |
---|---|---|
所属层 | 网络层(IP 协议) | 数据链路层(以太网协议) |
长度 | IPv4:32 位(4 字节),总数约 43 亿个,目前面临地址枯竭问题。 IPv6:128 位(16 字节),极大地扩展了地址空间,解决 IPv4 不足问题。 |
48 位(6 字节) |
表示形式 | IPv4 常见为 点分十进制(192.168.0.1) IPv6 为冒号分隔的 16 进制(fe80:: 1) |
冒号或连字符分隔的 16 进制(08:00:27:03:fb: 19) |
谁分配的 | 网络管理员或 DHCP 服务器分配 | 硬件地址,生产网卡时由厂商烧录(全球唯一,虚拟机中的 mac 地址不是真实的 mac 地址,可能会冲突) |
是否可变 | 可变(临时或永久) | 大多数情况不变,但部分网卡可手动修改 |
作用 | 标识网络中的“位置” | 标识物理设备的“身份” |
类比 | 家庭地址(你在哪个城市哪条街) | 身份证号(唯一标识这个人) |
关键:
- MAC 地址 是物理设备唯一 ID,不随位置变化而变。
- IP 地址 是你在网络中的位置标识,可能会变(比如换网络、重启路由器)。
- 在通信中,IP 决定找谁,MAC 决定送给谁。
2. ifconfig
Linux 下可以使用 ifconfig 命令用于查看、配置和管理网络接口(Windows 用 ipconfig),几个关键的含义如下:
回环接口其实就是一张 虚拟的网卡,它只存在于操作系统内部,不连接任何物理网络设备。
3. FTP 客户端与服务器之间的通信过程
当你从一台电脑(FTP 客户端)通过网络传文件到另一台电脑(FTP 服务器)时,数据要经过多个“层次”和不同类型的网络(比如以太网和令牌环网)。IP 协议就像“导航系统”,负责给数据包写上源地址和目标地址,决定它该往哪走;路由器就像是“交通警察”,根据 IP 地址把数据包从一个网络(比如以太网)转发到另一个网络(比如令牌环网)。而以太网驱动和令牌环驱动,就像是两种不同的“交通工具”——一个适用于以太网,一个适用于令牌环网,它们负责把 IP 数据包“打包”成对应网络能识别的格式。令牌环网直观上就像一群人围成一圈,只有拿到“令牌”(通行令牌)的人才能说话(发数据),避免大家同时说话造成混乱,保证了通信有序、不冲突。
IP 协议就像全球通信的“通用语言”,它给每台主机一个逻辑地址(IP 地址),而路由器作为“翻译官”和“导航员”,工作在 IP 层,根据 IP 地址将数据包从一个网络(如以太网)转发到另一个网络(如令牌环网)。无论底层是哪种物理网络,数据在传输过程中都被封装成 IP 报文。这样,IP 协议屏蔽了以太网、令牌环网等底层技术的差异,构建了一个统一的、虚拟的全球网络层,实现了“一切皆是 IP 报文”的互联互通。