网络出现的历史背景
计算机的出现使得计算的效率得到大幅提升,但是伴随人与人之间需要进行信息交流,随之而来的便是主机与主机之间的数据互通需求。此时,单纯依靠软盘、磁带等离线介质进行 "物理搬运",已经无法满足远距离、实时、高效的数据交换要求。人们迫切需要一种能够让计算机之间直接、自动、可靠地传递信息的方式,计算机网络正是在这样的背景下应运而生。它从最初的多机互联、资源共享,逐步演变为如今覆盖全球的通信基础设施,成为连接计算、信息与人的核心纽带。
网络其实没那么神奇 ------ 从系统总线看网络本质
从内部总线到分布式互联 计算机系统与网络的底层逻辑高度同源,本质都是数据的可靠传输与协同 。 系统内部依靠物理导线、总线、PCB走线,以电信号完成芯片间的硬件通信; 网络则将这条"内部总线"无限拉长,通过光纤、电磁波等介质,实现设备与设备、系统与系统的远程互联。 二者共用一套核心思想: 无论是系统里的地址、数据、控制信号,还是网络中的IP、端口、协议、数据包, 最终都是为了解决同一个问题------如何有序、高效、无冲突地完成信息传递。
可以说:网络,就是被拉长、无线化、分布式的系统总线。 内部协同靠系统,外部互联靠网络,共同构筑起整个数字世界的运转基石。
协议
协议概念
在计算机体系与网络通信中,协议 是通信实体之间为完成数据交换而预先约定的规则、格式与时序的集合。它规定了数据如何封装、寻址、传输、应答与纠错,使异构设备能够屏蔽底层差异,按照统一标准进行可靠交互。协议是数字化信息世界的 "通用语言",是系统协同与网络互联得以实现的核心基础。
就像两个人打电话,接通后第一句说 "喂",用来确认对方是否在线、声音是否正常,这种大家默认遵守的交流方式,就是一种现实中的 "协议"。
在计算机网络里,协议同样如此:什么时候发、发什么格式、出错了怎么办、如何确认对方收到......所有这些约定俗成、必须共同遵守的规则集合 ,就是网络协议。其实不光网络,计算机主机内部也存在大量协议,比如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:SATA,IDE,SCSI等。只不过我们感知不到罢了。总之,协议就是针对问题提出的统一的、规范的解决方案。
网络中就以传输层的两类协议为例:UDP、TCP
其中UDP协议保证传输过程具有有连接、可靠传输、面向字节流等特点。
TCP则具有无连接、不可靠传输、面向数据报等特点。
二者并没有好与坏之分,而是偏向性能或者偏向稳定的不同特色,因此不同协议没有真正的孰强孰弱之分,而是不同协议有不同的应用场景,根据场景选择合适的协议才能发挥协议的最大效果。
协议分层与协议栈
能够进行协议定制的肯定都是具有很强的公信力或者某领域领头的单位/企业比如:IEEE(电⽓和电⼦⼯程师协会),ISO(国际标准化组织),ITU(国际电信联盟)等等。
国际标准化组织 ISO 提出了一套通用的网络体系结构,称为 OSI 参考模型 。该模型将复杂的网络通信流程,自下而上划分为七层,每一层只专注于单一职责,并通过标准接口与上下层交互。

网络协议分层的核心目的,就是解耦 。通过明确每一层的职责与接口,上层不必关心下层的具体实现,下层也不依赖上层的业务逻辑。层与层之间只通过标准约定交互,使得每一层可以独立设计、独立优化、独立替换 ,而不影响整个体系的稳定。分层本质上是一种模块化思想 ,让复杂的网络通信从一团混乱,变成结构清晰、易于维护、易于扩展的系统。这些从上到下、各司其职的分层结构组合在一起,就构成了协议栈。
OSI参考模型的设计将分层做得非常细致,使得总体耦合度非常低,并且每一层各司其职,完全符合高内聚,低耦合的核心思想,但是其过于复杂的结构也导致其设计难度飙升,难以落地商用,因此目前互联网真正使用的协议是TCP/IP协议,OSI成为了一种理想化模型。TCP/IP 协议栈在结构上,本质是将 OSI 七层模型的上三层(应用层、表示层、会话层)合并为了一层 ------ 应用层,下四层则做了精简与对齐,最终形成四层结构:应用层、传输层、网络层、网络接口层。这种合并让实现更简单、更轻量化,更适合工程落地。

局域网
MAC地址的认识
是网络接口设备(如网卡)在生产时固化在硬件中的全球唯一物理地址,用于在同一局域网内部标识设备,实现数据链路层的寻址与数据转发。MAC 地址由 48 位二进制数构成,通常表示为 12 位十六进制格式,是设备在局域网中进行通信的底层硬件标识。
同一局域网,是指在同一个物理或逻辑广播域内、不需要经过路由器转发,直接通过交换机就能互相通信的设备集合 。这些设备使用相同的网络段 ,彼此通信时只需要依靠 MAC 地址 在数据链路层完成寻址,不需要跨网络路由,因此传输效率高、延迟低。
局域网传输大致流程
局域网通信类似于上课过程,整个教室称为局域网,而老师在上课发出指令(发出数据)往往会带上指定学生姓名(目标MAC地址),此时整个教室都会听到指令,但是只有目标同学会接受数据并做出反应。局域网中进行数据传输的过程就是如此,主机A发出数据后,局域网内所有主机都会收到信号(这个过程就叫做泛洪),但是数据链路层会对目标MAC地址进行接受与检查,随后拿到属于自己的信息,不匹配则直接丢弃。在早期共享式网络(集线器)中,整个局域网属于同一个冲突域(碰撞域) ,同一时间只能有一台设备发送数据,否则信号会发生冲突。此时主机就需要对发出的信号进行碰撞检测 ,与其他信号发生冲突就会稍后重新发送。后来交换机取代集线器,通过学习 MAC 地址表实现精准转发,不再全量广播,大大提升了局域网效率和安全性。
通信的起点,是用户操作的应用层 ,它只关心 "要发什么数据",不关心怎么发、走哪条路。而真正把数据变成电信号、光信号,在物理介质上传输的,是最底层的物理层(如网卡、网线、接口等硬件)。
从应用层到物理层,上层只负责业务与逻辑,下层负责封装、传输与硬件驱动,层层向下传递,最终由物理层发出信号 。因此,信号的发送需要经过协议层从上至下层层递进,当其他设备收到信息也需要从下至上层层递进,对于发送过程中层层向下的流程中会进行封装 处理,这样做的目的是实现解耦,让接收端不同层能拿到属于本层能'看懂'的数据随后执行相应指令,实现分层工作,对于每一层进行的不同封装数据叫做报头 ,由应用层发起的数据本身叫做有效载荷 。而接收端从下至上进行数据递送的过程叫做解包与分用

其中解包过程是每一层拿到属于本层报头的过程,分用则是该层拿到报文后经过解析将剩余报文(报头+有效载荷)分发给上层对应的协议或进程。

分层的本质,就是模拟每一层只拿到自己这一层数据的场景。 每一层只看到自己的有效数据 + 本层报头,完全看不见上层和下层的细节。而在整个传输过程中,不断地进行报头的封装和解包,从上至下进行封装(报头入栈),从下至上进行解包分用(报头出栈),其过程就是一个入栈出栈的动作,因此有了协议栈的来源。
跨网传输
IP地址的认识
IP是网络层用于标识网络中唯一主机或网络设备的逻辑地址,负责实现不同局域网之间的寻址与路由选择,使数据能够跨越多个网络到达目标设备。
与固化在硬件中的 MAC 地址不同,IP 地址是逻辑可配置的,由网络规划或 DHCP 动态分配,用于区分不同的网络与主机。在数据跨网传输时,IP 地址负责确定目标所在的网络位置,指导路由器完成逐跳转发。
跨网传输大致流程
其实,跨网传输并不是一件多么神奇复杂的事情,它的本质非常清晰朴素:数据并非一次性飞跃千山万水直达目标,而是在网络中一段一段、一跳一跳地接力传递。
每一段本地传输,都依靠 MAC 地址 在相邻设备之间完成通信;无数段这样的 MAC 链路,串联起来,就构成了一条完整的 IP 跨网传输路径。
在整个过程中,路由器就像是一位精准的指路人 :它根据目标 IP 地址 判断方向,再为当前这一跳指明下一个设备的 MAC 地址 。数据就在这样不断的 "指路 --- 转发 --- 再指路 --- 再转发" 中,从源主机一步步抵达目标主机。
所以,互联网的核心原理可以概括为:MAC 负责本地送达,IP 负责定位目标,路由负责指路,层层封装、逐跳转发,就是跨网传输最真实的样子。 总结来说就是同一网段看 MAC,跨网段看 IP,路由器负责跨网转发。