目录
[OSI 七层模型](#OSI 七层模型)
计算机网络的发展历程
计算机网络的发展历程,是一幅从封闭、昂贵的专用系统,逐步走向开放、普及的全球信息基础设施的壮丽画卷。这个过程通常被划分为几个具有鲜明特征的阶段
🌱 第一阶段:面向终端的计算机网络(20世纪50年代-60年代)
这是计算机网络的萌芽与诞生期 。在计算机昂贵且庞大的时代,为了解决远距离使用计算机的问题,第一代网络应运而生。其核心特征是以一台大型主机为中心,通过通信线路连接大量没有独立处理能力的"哑终端"。
核心逻辑:主机负责所有的计算和存储,终端仅负责输入和显示。这种"主机-终端"模式,本质上是分时系统的延伸。
典型代表:美国半自动地面防空系统(SAGE)和美军/IBM联合开发的航空订票系统(SABRE)。它们实现了远程信息处理,但并非真正意义上的计算机互联。
🔗 第二阶段:计算机-计算机网络(20世纪60年代-70年代)
这是计算机网络的形成期与核心突破期 。真正的计算机网络从这里开始,其标志性特征是多台具有自主处理能力的计算机相互连接,实现了资源共享。
核心突破:分组交换 。早期的电路交换技术效率低下,无法满足突发性的计算机通信需求。1960年代,分组交换技术被提出,它将数据分割成独立的数据包进行传输,极大地提高了线路利用率。
里程碑事件:ARPANET(阿帕网) 。1969年,美国阿帕网投入运行,最初只有4个节点。它首次实现了分组交换网络,并提出了通信子网 (负责数据传输)和资源子网(负责数据处理)的概念,奠定了现代计算机网络的基本形态,被公认为Internet的前身。
其他探索:与此同时,英国的NPL网和法国的CYCLADES网也在进行类似的研究,共同丰富了网络设计的理论基础。
📜 第三阶段:开放式标准化网络(20世纪70年代末-80年代)
这是计算机网络的成熟期与规范期。随着各大厂商(如IBM的SNA)推出自己的网络体系结构,网络"封闭"且难以互联的问题日益突出。为解决此问题,网络体系结构走向标准化。
两大体系结构:
OSI参考模型:国际标准化组织(ISO)于1984年正式颁布了"开放系统互连基本参考模型(OSI/RM)",将网络通信划分为七层。它是一个复杂而完备的"法律标准",为教学和理解网络提供了理想框架,但因过于复杂而未能完全普及。
TCP/IP协议族:它起源于ARPANET,是一个简洁而实用的"事实标准"。TCP/IP以其高效的设计和开放的理念,解决了跨地域、跨异构网络的互联问题,最终在这场标准之争中胜出,成为Internet的基石。
局域网兴起 :同时期,以以太网为代表的局域网技术取得突破,实现了单个实验室或企业内部计算机的高速连接。
🚀 第四阶段:高速、综合化与下一代网络(20世纪90年代至今)
这是计算机网络的普及与飞跃期 。随着1990年代万维网(WWW) 的发明和1994年美国允许商业资本介入,网络技术开始以惊人的速度渗透到社会的每个角落。
IP技术一统天下:互联网进入社会化应用阶段,从初期的网页浏览和电子邮件,发展到Web 2.0的博客、播客等用户创造内容。IP技术成为数据通信的核心。
高速化与综合化:网络不断向高速发展(如快速以太网、千兆以太网),并开始承载语音、图像等多媒体业务。光纤分布式接口(FDDI)、异步传输模式(ATM)等高速网络技术层出不穷。
走向下一代 :面对现有互联网在地址空间(IPv4地址耗尽)、安全性、服务质量等方面的"先天不足",全球正积极向下一代互联网演进。IPv6是其中的核心技术,旨在解决地址匮乏问题并提供更好的支持。同时,关于"后IP"时代的"改良"、"整合"与"革命"三种思路的探索也从未停止
我国的互联网发展历程
与全球发展脉络相呼应,中国的计算机网络发展走出了一条独具特色的道路。得益于后发优势,中国越过了一些早期探索阶段,从全功能接入国际互联网开始,走出了一条以基础设施建设驱动应用创新,再到核心技术突破和全球化的跨越式发展之路
🌱 第一阶段:接入与起步(1994年-1999年)
这是中国互联网从无到有的突破与萌芽期。与全球历程不同,中国没有经历ARPANET那样的技术探索阶段,而是直接从全功能接入国际互联网开始,迅速开启了基础设施建设和商业化探索。
里程碑事件:全功能接入国际互联网 。1994年4月20日,中关村地区教育与科研示范网络(NCFC)通过一条64K的国际专线,实现了与国际互联网的全功能连接,中国被正式承认为国际互联网大家庭的第77个成员。在此之前,中国科学家经历了长达15年的技术储备。
基础设施起步:随后,中国教育和科研计算机网(CERNET)、中国公用计算机互联网(CHINANET,即"163网")等全国性骨干网相继建成。
商业化萌芽 :1995年,第一家互联网公司瀛海威成立。1997-1998年,新浪、搜狐、网易等第一代门户网站诞生,开启了中国的Web1.0时代。1997年,中国网民数量达到62万。
🔗 第二阶段:成长与繁荣(2000年-2009年)
这是中国互联网从小到大的快速成长期。尽管经历了全球互联网泡沫破裂的洗礼,但中国互联网依托短信、网络游戏等增值业务迅速找到盈利模式,完成了从Web1.0到Web2.0的跃升。
Web1.0到Web2.0:2000年,三大门户网站相继赴美上市。此后,以博客、BBS为代表的Web2.0浪潮兴起,用户开始成为内容的生产者。
本土创新崛起:阿里巴巴、百度、腾讯等今天的互联网巨头在这一阶段成立并快速发展。网络游戏、电子商务等商业模式逐渐成熟。
网民数量登顶全球:2008年6月底,中国网民数量首次超越美国,成为全球第一。
📱 第三阶段:移动与引领(2010年-2019年)
这是中国互联网实现跨越与引领的黄金十年。移动通信技术的代际跃升,将互联网从PC端延伸至口袋,深刻重塑了社会生活方式。
移动互联网爆发 :2009年和2013年,3G和4G牌照的相继发放,为移动互联网的腾飞铺平了道路。微信(2011年上线)等超级App诞生,移动支付、短视频、共享经济等创新应用层出不穷。
国家战略升级:2014年,中央网络安全和信息化领导小组成立,网络强国战略正式提出。同年,阿里巴巴在纽交所上市,创下全球最大IPO纪录。
产业竞争力凸显:中国在移动互联网的应用创新和市场规模上走在了世界前列。
🌐 第四阶段:智能与全球化(2020年至今)
这是中国互联网开启技术突围与扬帆出海的新阶段。面对复杂的国际环境和技术浪潮,中国互联网正从模式和应用的创新,走向核心技术和全球市场的拓展。
5G与AI引领:中国建成全球规模最大的5G网络和光纤宽带网络。同时,人工智能大模型等前沿技术成为新的竞争焦点。
从产品输出到技术/模式输出:以TikTok、Temu、米哈游为代表的中国互联网应用,在海外市场取得巨大成功,标志着中国互联网企业开始具备全球竞争力。
探索下一代互联网:中国正积极布局IPv6的规模部署,并在6G、量子通信等前沿领域开展研究,致力于在下一代互联网的技术创新中赢得先机。
认识"协议"
- 所谓的"协议",就是通信双方约定好的数据结构。
- 你怎么保证你的数据准确的送达目标设备?-> 数据链路层的协议。如何定位主机?-> ip 协议。长距离传输的数据丢失问题 -> tcp 协议。如何处理发来的数据?-> https、http、ftp、smtp协议。
- 为什么会有上面的各种各样的问题?归根结底是因为数据传输的距离变长了。
- 发送数据时,对方不仅仅收到了数据,还收到了其他的信息比如数据的发送方是谁,接收方是谁,发送时间等等(类比快递包装上的快递单)。
- 这多出来的部分就是协议。
- 协议的内容最终表现形式就是结构体。
- 两台主机, 约定好协议就可以通信了吗?计算机生产厂商有很多; 计算机操作系统的种类也有很多; 计算机网络硬件设备的种类, 还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议
初识网络协议
网络协议为什么要采用分层设计:因为网络的问题是分层解决的,解决了这个问题,再解决下一个问题。同时分层设计可以降低层与层之间的耦合度,改变当前层,不影响下一层(便于维护)。同层之间我们认为逻辑上是直接通信的,但实际情况是上下层在直接通信。解决当前层的问题的前提是通信双方的同层使用相同的协议。

OSI 七层模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
- 它把网络从逻辑上分为了7层,每一层都有相关,相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
- 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解

TCP/IP协议栈
TCP/IP协议栈是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇. 因为网络层的IP协议和传输层的TCP协议非常具有代表性,所有命名为TCP/IP协议栈。TCP/IP协议栈采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层 : 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线 )、早期以太网采用的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.物理层我们考虑的比较少. 因此很多时候也可以称为TCP/IP四层模型
- 数据链路层 : 负责设备之间的数据帧的传送和识别.例如网卡设备的驱动/帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作.有以太网/令牌环网,无线LAN 等标准.交换机(Switch)工作在数据链路层.
- 网络层 : 负责地址管理和路由选择.例如在IP协议 中,通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网络层.
- 传输层 : 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据有序的从源主机发送到目标主机.(先发送的信息,目标主机应该先收到)
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

TCP/IP协议栈与操作系统的关系

- TCP/IP协议栈是"方法论"(解决问题的规则),而操作系统是"执行者"(提供资源和管理规则运行的环境)
- TCP/IP协议栈并不是一个独立的硬件设备,它是一套复杂的软件程序。这套程序需要运行在某个平台上,这个平台就是操作系统
- 用户要访问网卡,必须贯穿整个操作系统,也就是贯穿整个 TCP/IP 协议栈。但用户不能直接访问网卡,必须经过系统调用访问。
- 不同种类的操作系统(Linux、windows、MacOS)都遵守同一套 TCP/IP 协议栈

TCP/IP协议栈、局域网、以太网、互联网之间的关系
TCP/IP协议栈 :是一整套网络通信协议的集合(如TCP、IP、HTTP等),它定义了数据如何打包、寻址、传输和接收。相当于**"通信的规则和语言"**。
以太网 :是一种具体的局域网技术标准,它规定了设备之间如何通过网线(或无线)在物理上连接和传输数据。相当于**"在区域内运输的卡车和道路标准"**。
局域网 :是一个物理(或逻辑)范围的概念,指在较小区域内(如家里、办公室)连接起来的计算机组。相当于**"一个小区或园区"**。
互联网 :是一个全球性的系统,由无数个局域网通过路由器互相连接而成。相当于**"由无数个小区组成的全球城市"**。
局域网内部数据传输基本流程
数据的封装、解包和分用
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个报头 ,这个过程称为封装
- 报头包含了一些类似于报头有多长, 有效载荷 (payload,就是数据的内容)有多长, 上层协议是什么等信息. 报文 = 报头 + 有效载荷
- 不同的协议层对报文有不同的称谓,在传输层叫做数据段(segment),在网络层叫做数据报 (datagram),在链路层叫做数据帧(frame).
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的报头, 根据报头中的 "上层协议字段" 将数据交给对应的上层协议处理,这个过程叫数据的解包。
- 每一层的协议都有将报头和有效载荷分离的能力,以及把数据交给对应的上层的哪个协议处理的能力(称为分用)。
- 每层所使用的协议相同,在逻辑上认为同层之间是直接通信的。
数据的封装:

数据的解包:

数据的分用

以太网通信基本原理
以太网最初的设计思想非常朴素且巧妙。在早期的以太网(同轴电缆)中,所有设备都连接在同一根线上,就像在一个大教室里,一个人说话,所有人都能听见
以太网的标识方式:MAC地址
这是出厂时烧录在网卡上的全球唯一标识符(48位,通常表示如
00:16:3e:12:34:56的形式)。作用:如果说IP地址是你的"收货地址",会随你搬家而改变;那么MAC地址就是你的"身份证号",终身不变。在同一个局域网内,设备不认IP,只认MAC地址
以太网通信的核心机制:MAC地址寻址
假设你有两台电脑A和B,通过交换机连接在同一个局域网内,A想给B发送数据。这个过程分为两种情况:
场景一:A知道B的MAC地址
如果A已经知道B的MAC地址,那就很简单:
封装:操作系统内核中的协议栈构造一个以太网帧,里面填上:
源MAC = A的MAC
目标MAC = B的MAC
数据部分 = IP数据包
发送:A把这段二进制数据(电压信号)通过网线发出去。
接收与过滤:局域网内的交换机把信号转发给B,B的网卡检测到信号,解析帧头,发现目标MAC是自己的,于是触发中断,通知CPU来取数据。
场景二:A只知道B的IP,不知道MAC地址(最常见的场景)
这是最核心的部分。当A想和B通信,但只知道B的IP(比如
192.168.1.5)时,就需要 ARP协议(地址解析协议)来帮忙。这个过程很像你在小区里找一个不认识具体房号、只知道名字的人:
广播询问 :A在局域网内喊一嗓子(发送一个ARP请求 ):"各位注意,我是A(MAC=AA:AA),谁是
192.168.1.5?请把你的MAC地址告诉我。"
- 这个请求帧的目标MAC地址是
FF:FF:FF:FF:FF:FF(广播地址),意味着局域网内的所有设备都能收到。目标应答 :B听到有人喊自己的IP,就回复一条信息给A(ARP响应 ):"我是B,IP
192.168.1.5是我的,我的MAC地址是BB:BB。"
- 这个响应是单播的,因为A已经把自己的MAC地址告诉了大家。
缓存记录 :A收到B的MAC地址后,把它记在一张表里(ARP缓存表),下次再通信就不需要喊了。
- 在Linux中,你可以用
arp -n命令查看这张表。
操作系统的角色:驱动与中断
当你在浏览器里按下回车,数据到达网卡并准备发送时,操作系统(Linux)在以太网通信中扮演着调度者的角色:
发送时:
内核协议栈构造好以太网帧(包括填充源/目标MAC)。
内核通过网卡驱动程序,把这个帧的地址告诉网卡。
网卡自己负责把内存中的数据转成电信号发出去(DMA技术,不需要占用CPU)。
接收时:
网卡收到属于本机的电信号,还原成二进制帧。
网卡通过硬件中断的方式通知CPU:"有数据来了!"
CPU暂停手头的工作,执行中断处理程序,把数据交给内核协议栈进一步处理(剥去以太网帧头,取出IP包)。
以太网的数据碰撞问题
回到最早的以太网(同轴电缆时代),所有设备都连接在同一根物理线缆上,共享介质。这就像一个狭长的会议室,所有人都对着同一根管道说话。
碰撞的产生:
当设备A和设备B同时检测到线路是空闲的,于是同时开始发送数据
电信号在铜线上相遇,相互叠加干扰
两边的数据都变得无法辨认------这就是碰撞(Collision)
研究碰撞问题,碰撞域是一个重要的概念
定义:一组设备中,任何两个设备同时发送数据都会产生碰撞的区域
早期以太网:整个总线网络就是一个碰撞域,所有设备共享
问题:设备越多,碰撞概率越大,网络效率越低
交换机的发明彻底解决了碰撞问题,在交换机发明之前,CSMA/CD 协议用来解决碰撞问题。交换机的工作原理:假设 H1 向 H2 发送数据,交换机识别到 H1 和 H2 都在交换机的左侧,那么该数据在到达交换机之后,不会再扩散到交换机的右侧,有效减少了碰撞。
(令牌环网)
令牌环网是一种曾与以太网分庭抗礼的局域网技术。它采用了一种"按顺序轮流"的通信方式,虽然复杂昂贵,但天生就能避免数据碰撞,非常公平
🎟️ 核心原理:像击鼓传花一样的"令牌"
你可以把令牌环网的网络想象成一个由电脑围成的圆圈。
令牌(Token):网络中有一个特殊的"令牌"数据包在不停地循环传递。这个令牌就像是击鼓传花里的那朵"花"。
想要发送数据:
如果一台电脑想发数据,它必须抓住正在环中空转的令牌。
抓住令牌后,它将令牌改造成"数据帧"(也就是包裹),并在上面写上收件人地址和内容,然后把这个包裹放进环里。
数据流动:包裹沿着环一站一站地往下传。
每个中间节点都会检查:这是不是给我的包裹?
如果不是,就原样传给下一站。
接收与释放:
目标电脑收到包裹后,复制数据,并在包裹上打个"已收到"的标记,让包裹继续在环里转。
当包裹转回发送者 那里时,发送者看到包裹已经成功送达,就把这个包裹从环里移除,然后释放一个新的空令牌到环里,供其他电脑使用。
这个机制确保:在任何时刻,整个环里最多只有一个节点在发送数据,因此绝对不会发生数据"碰撞"。
⚔️ 以太网 vs. 令牌环网:一场决定性的技术战争
在当年,这两种技术的竞争非常激烈。以太网的背后是DEC、Intel、Xerox(DIX联盟),而令牌环网则有蓝色巨人IBM的强力支持,甚至被IEEE标准化为802.5。
| 特性 | 以太网 (Ethernet) | 令牌环网 (Token Ring) | 胜出关键 |
|---|---|---|---|
| 介质访问方式 | 竞争式(CSMA/CD):大家抢着说,抢到了就说,撞了就等一会儿再说。 | 轮询式(Token Passing):轮流说,有令牌才能说。 | 早期认为"抢"的方式在高负载下效率低,但实际上日常网络很少达到理论高负载。 |
| 优缺点 | 优点 :结构简单、成本极低、部署方便。 缺点:网络拥堵时延迟不确定,易碰撞。 | 优点 :确定性 (每个节点的等待时间可知)、高负载下效率高、无碰撞。 缺点:需要特殊的昂贵的网卡和集线器(MAU)、维护复杂。 | 成本和简单性战胜了复杂性。以太网的廉价和易用性使其迅速普及。 |
| 拓扑结构 | 总线型/星型:逻辑上是总线,物理上后来用Hub/交换机连成星型。 | 物理星型/逻辑环型:物理上看起来是星型(都连到一个中心设备),但内部电路强制形成环。 | 以太网的星型拓扑更符合布线习惯,故障排查也相对容易。 |
| 速度演进 | 10Mbps -> 100Mbps -> 1Gbps -> 10Gbps... 平滑演进。 | 4Mbps -> 16Mbps 停滞,后推出的100Mbps VG-AnyLAN叫好不叫座。 | 以太网的速率迭代极快,迅速拉开了与令牌环的带宽差距。 |
跨局域网数据传输基本流程
🌉 1. 关键设备:路由器(实现跨网络通信的核心)
在局域网内部,我们通常使用交换机来连接设备(电脑、打印机等)。交换机只认识MAC地址(物理地址),它像一个"包打听",只负责在同一个小区(局域网)里送信。
但连接不同的局域网,就需要用到路由器。
路由器的角色 :它就像是一个小区的"门卫"兼"交通指挥"。它连接着两个或多个网络(比如你的家庭网络和运营商的网络),并维护着一张路由表 。它也有TCP/IP协议栈和自己的 Mac 地址。IP 协议屏蔽了底层网络的差异化(以太网、令牌环网、手机无线 LAN都可以向路由器向上发送数据帧,路由器向下转化为对应的数据帧),靠的就是工作在 IP 层的路由器。IP 协议实现了全球主机的软件虚拟层,实现了一切皆是 IP 报文
路由表的作用:这张表告诉路由器,去往不同地方的数据包(去往不同IP网段的数据包),下一步应该往哪儿走。
📦 2. 工作原理:IP寻址与路由转发
当你在家里(局域网A)想访问另一个局域网(局域网B,比如公司的服务器)里的数据时,过程大致如下:
发现目标不在本地 :在网络层的 IP 协议会添加该数据的源 IP 和目标 IP,你的电脑通过比较目标IP地址和子网掩码,发现目标IP(公司服务器)不在自己所在的局域网内,所以在链路层添加的报头的目标 Mac 地址是该局域网的路由器。
路由器解包:生成的以太帧会被路由器接收,因为 目标 Mac 地址是路由器,其他主机收到该以太帧后会丢弃
路由器查表:路由器解包查看目标IP地址(192.168.2.10),然后查阅自己的路由表。
- 例如路由表条目:要去往192.168.2.0这个网络,请从我的出口发送给下一个路由器(或者直接送达)。
逐跳转发:数据包可能经过多个路由器(就像经过多个城市的快递中转站),每一站都重复"查表-转发"的动作,直到到达目标局域网(局域网B)的网关路由器。在这个过程中,源 IP 和目标 IP 不会改变,但源 Mac 和目标 Mac 会一直改变。
最终送达:目标局域网(局域网B)的路由器发现目标设备就在自己管理的网络内,于是通过交换机将数据包最终送到那台服务器上。
