目录
一、网络的发展历程
计算机网络的诞生并非偶然。在计算机独立运作的早期,每台计算机都各自为政,信息的共享和协同工作变得异常困难。随着科技的进步和人类对信息交互需求的增加,网络的产生成为了必然。
网络的发展可以追溯到独立模式和网络互联模式。在独立模式下,计算机之间相互独立,信息交流困难重重。而网络互联模式的出现,使得多台计算机能够连接在一起,实现数据共享和协同工作,极大地提升了信息交流的效率和便利性。
独立模式:计算机之间相互独立
网络互联模式:多台计算机连接在一起, 完成数据共享
🌵局域网与广域网
计算机网络按照覆盖范围和连接方式,可以分为局域网(LAN)和广域网(WAN)。局域网通常用于较小的地理范围,如办公室或家庭,通过交换机和路由器将多台计算机连接在一起。而广域网则覆盖更广的地理区域,如城市、国家甚至全球,将远隔千里的计算机连接在一起。
局域网 LAN:计算机数量更多了, 通过交换机和路由器连接在一起
广域网 WAN:将远隔千里的计算机都连在一起
有趣的是,所谓“局域网”和“广域网”只是一个相对的概念。例如,一些大型的局域网可能覆盖的范围甚至超过了某些广域网。在中国,我们还有“天朝特色”的广域网,它也可以被视为一个相对较大的局域网。这种相对性反映了网络的灵活性和多样性。
🧊计算机是人的工具, 人要协同工作, 注定了网络的产生是必然的.
二、初识协议
🍒什么是协议?
计算机网络的核心在于通信,而通信的基础便是协议。协议可以简单地理解为一种约定,它规定了通信双方如何交换信息、信息的格式以及通信的规则。
在日常生活中,我们也可以找到协议的影子。例如,打电话时,双方约定电话铃响的次数来决定是否接听,这是一种简单的协议。同样,在计算机网络中,通信双方也需要通过协议来确保信息的正确传递。
然而,仅仅有协议还不够。即使双方都遵守了协议,但如果使用不同的“语言”进行通信,也无法实现有效的信息交流。例如,一方使用频率表示0和1,而另一方使用强弱表示0和1,那么即使协议相同,也无法正常通信。因此,一个完善的协议需要更多更细致的规定,并且要求所有参与方都严格遵守。
🍓为什么需要协议?
计算机生产厂商有很多,计算机操作系统也有很多,计算机网络硬件设备还是有很多。不同厂商的硬件、操作系统差异巨大。若没有统一协议,设备间将无法通信,如同人类语言不通。
🍇协议的制定者
一般具有定制协议或者标准的资格的组织或者公司都必须是业界公认或者具有江湖地位的组织或者公司。
一、国际标准化组织
IEEE(电气和电子工程师协会)
职能:制定电子、计算机和通信领域的标准,如 IEEE 802 系列标准(如Wi-Fi、以太网)。
特点:覆盖范围广,技术影响力深远。
ISO(国际标准化组织)
职能:制定全球通用的跨行业标准,如 OSI 网络七层模型,尽管实际中更多采用TCP/IP协议。
代表标准:ISO 9001(质量管理)、ISO/IEC 27001(信息安全)。
ITU(国际电信联盟)
职能:联合国下属机构,负责电信与网络通信标准,如 5G 网络标准。
分支:ITU-T(电信标准化部门)主导协议制定。
IETF(互联网工程任务组)
职能:制定互联网核心协议(如 TCP/IP),通过RFC文档发布标准。
二、区域性及行业联盟
ETSI(欧洲电信标准学会)
职能:推动欧洲电信标准,如 4G/5G 移动通信标准,并与全球标准兼容。
ASTAP(亚洲与泛太平洋电信标准化协会)
职能:促进亚太地区信息通信技术标准的协调与统一。
蓝牙技术联盟(SIG)
职能:制定蓝牙协议标准,成员包括苹果、英特尔等企业,推动低功耗蓝牙(BLE)等技术。
三、企业与技术公司
泰凌微电子
职能:自研低功耗物联网协议栈,如 Zigbee、Thread、Matter,提供定制化协议解决方案。
华为、高通等通信巨头
职能:参与国际标准制定(如5G NR),并通过专利池影响协议发展方向。
互联网公司(如Google、Amazon)
职能:主导应用层协议标准,如 HTTP/3、MQTT,并推动智能家居协议(如Amazon Sidewalk)。
四、政府及行业协会
FCC(美国联邦通信委员会)
职能:监管通信设备标准,确保电磁兼容性及频谱合规性。
中国通信标准化协会(CCSA)
职能:制定国内通信行业标准,如 TD-LTE,并与国际标准接轨。
五、典型案例:企业定制协议实践
上海全屋家居定制合同示范文本:由上海市市场监管局制定,规范家居行业服务流程,明确分阶段付款、环保标准等条款,成为地方性行业协议范本。
广州水投框架协议采购:通过公开征集供应商,要求遵循国家质量标准,并纳入诚信评价体系,体现企业对供应链协议标准的把控。
🌽协议分层
上面这张图片通过一个形象的例子说明了协议分层的相关内容:
图片上半部分
-
分层结构 :展示了协议分为两层,即语言层和通信设备层。在语言层,有两个人物 A 和 C,他们使用汉语进行沟通,对应汉语协议。通信设备层则是电话机,负责电话系统的读取,A 和 C 使用电话机进行通话。
-
接口与通信 :语言层和通信设备层之间有接口,通过电话机协议实现不同通信设备层与语言层的配合,从而完成通话过程,体现了不同层之间的协同工作关系。
图片下半部分
-
分层优势 - 通信设备层变化 :当通信设备层由电话机变为无线电时,若仅改变通信设备层,而语言层仍保持汉语协议,那么只需要调整与通信设备相关的部分(无线电协议),语言层无需变动,A 和 C 可以继续用汉语交流。这说明在分层结构下,某一通信设备层的变化不会影响到其他层,只需在相应层级进行改动,降低了软件维护成本。
-
分层优势 - 语言层变化 :若语言层由汉语变为英语,此时通信设备层无论是电话机还是无线电都保持不变,只需修改语言层的协议(英语协议),人物 B 和 C 就能用英语沟通。同样体现了分层所带来的解耦合优势,使得不同层的变化互不干扰。
协议本质是软件,其设计采用分层结构,就像上面例子中的语言层和通信设备层一样。这种分层设计实现了模块化和解耦合,当某一通信设备层或语言层发生改变时,只需在对应层进行调整,而不会影响到其他层,从而大大降低了软件维护的成本。实际的网络通信协议比这个例子中的两层结构要复杂得多,分层会更多,但通过这个简单例子可以很好地理解分层实现解耦合、降低维护成本的优势。
三、OSI七层模型
OSI(开放系统互连)七层网络模型是一个逻辑上的开放式系统互联参考模型,通过将网络从逻辑上划分为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层共7层,并定义每层对应的物理设备(如路由器、交换机等),形成了一套框架性的设计方法。
其核心目标是帮助不同类型的主机实现可靠的数据传输,最大优势在于明确区分了服务、接口和协议三个概念,理论体系完整且层次清晰,通过分层结构实现了异构系统和网络间的兼容性通信。
然而,OSI模型在实际应用中存在显著局限性:会话层和表示层由于功能抽象且难以直接映射到操作系统内核中,导致工程实现复杂度高、实用性不足。因此,工业界普遍采用简化的TCP/IP四层模型(应用层、传输层、网络层、网络接口层)作为实践标准,但在具体协议栈实现时(如Linux网络协议栈),常将物理层与数据链路层合并为网络接口层,最终形成实际落地的五层协议结构(应用层、传输层、网络层、数据链路层、物理层),在保留OSI分层思想精髓的同时,解决了理论模型与工程实践的矛盾。
各层功能概述
层级 | 名称 | 功能 | 设备示例 |
---|---|---|---|
7 | 应用层 | 提供用户接口(HTTP、FTP) | 浏览器、APP |
6 | 表示层 | 数据加密、格式转换(JPEG、ASCII) | - |
5 | 会话层 | 建立和管理连接(RPC、Socket) | - |
4 | 传输层 | 端到端数据传输(TCP、UDP) | 防火墙 |
3 | 网络层 | 路由寻址(IP、ICMP) | 路由器 |
2 | 数据链路层 | 帧传输(MAC地址、以太网) | 交换机、网卡 |
1 | 物理层 | 传输比特流(电缆、光纤) | 集线器、中继器 |
四、TCP/IP五层模型
- TCP/IP 是一组协议的代名词, 它还包括许多协议, 组成了 TCP/IP 协议簇.
- TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求.
层级 | 名称 | 功能 | 协议示例 |
---|---|---|---|
5 | 应用层 | 用户级应用服务 | HTTP、DNS |
4 | 传输层 | 进程间数据传输 | TCP、UDP |
3 | 网络层 | 主机间路由与寻址 | IP、ICMP |
2 | 数据链路层 | 同一网络内的帧传输 | Ethernet、Wi-Fi |
1 | 物理层 | 物理介质传输 | 电缆、光信号 |
1. 物理层:信号“高速公路”的建造者
功能:就像修路工人决定用水泥路、石子路还是光纤隧道。它负责把电脑的0和1变成实实在在的物理信号,比如:
网线:像水管一样传输电信号(双绞线、同轴电缆)。
光纤:用光信号传输,速度更快、距离更远。
Wi-Fi:通过空气中的电磁波传递数据,像“隐形的高速公路”。
设备:集线器(Hub),像个“信号喇叭”,把收到的信号无脑广播给所有人,不管对方需不需要。
2. 数据链路层:邻居间的“邮递员”
功能:负责同一小区(局域网)内设备的精准通信。比如:
网卡驱动:让电脑能听懂网线传来的信号。
帧同步:识别一封信的开头和结尾(比如听到“叮”一声开始读数据)。
冲突检测:像几个人同时说话时喊“停!一个一个来”。
差错校验:检查信件是否被雨水泡坏了(数据损坏)。
标准:以太网(家用网络)、Wi-Fi(无线局域网)。
设备:交换机(Switch),像智能邮递员,记住每户地址(MAC地址),只把信送给对的人。
3. 网络层:全球快递的“导航系统”
功能:决定数据跨城市、跨国家的路线。核心是两件事:
IP地址:给每台电脑一个“门牌号”(比如192.168.1.1)。
路由表:像快递公司的路线图,告诉数据包“去上海要走京沪高速,去美国要走海底光缆”。
设备:路由器(Router),像物流中转站,根据IP地址把包裹(数据包)发往下一站。
4. 传输层:可靠的“快递小哥”
功能:确保数据完整送到,主要分两种风格:
TCP协议:像顺丰快递,必须签收确认。适合重要文件(比如网页、邮件)。
UDP协议:像扔传单,不管对方收没收到。适合直播、视频通话(丢几帧无所谓)。
关键能力:拆大包裹(分段传输)、防丢件(重发丢失的数据)、按顺序组装(防止乱序)。
5. 应用层:你每天都在用的“服务员”
功能:直接为人和软件提供服务,比如:
发邮件:SMTP协议(像邮局的寄信规则)。
传文件:FTP协议(像文件搬运工的操作手册)。
上网:HTTP协议(像服务员问你“要点什么网页?”)。
开发重点:程序员在这一层写代码(比如微信的消息发送功能、网页的登录按钮)。
一句话总结
物理层:信号怎么跑(网线、Wi-Fi)。
数据链路层:同一楼里怎么送(交换机、MAC地址)。
网络层:全球怎么送(路由器、IP地址)。
传输层:怎么保证送到(TCP/UDP)。
应用层:你用的功能(微信、淘宝、游戏)。
一句话总结各设备的职责范围
-
主机(你的电脑/手机):从传输层到物理层全包,但物理层实际是网卡硬件在干活。
-
路由器:专注网络层,偶尔兼职传输层(比如改快递单上的门牌号)。
-
交换机:主攻数据链路层,高端型号能客串网络层(像会看地图的邮递员)。
-
集线器:物理层的“复读机”,只会无脑转发信号。
通俗版解释:TCP/IP模型与设备分工
1. 为什么常说TCP/IP四层模型?
-
真相:物理层(网线、Wi-Fi信号)大多是硬件工程师的活儿,程序员很少直接碰它,所以软件层面讨论时直接合并成四层:
应用层 → 传输层 → 网络层 → 网络接口层(含数据链路+物理层)。
2. 不同设备的“技能树”
设备 | 主要负责的层 | 比喻说明 | 例外情况(高级功能) |
---|---|---|---|
主机 | 传输层、网络层、数据链路层 | 像全能管家: - 打包包裹(TCP/UDP) - 写地址(IP) - 贴快递单(MAC地址) | 物理层(网卡)是硬件部门的事,管家不插手。 |
路由器 | 网络层为主 | 快递分拣中心: - 看IP地址决定走哪条高速路 | 偶尔改快递单(端口转发/NAT),属于传输层的“副业”。 |
交换机 | 数据链路层 | 小区快递站: - 靠MAC地址精准投递到户 | 三层交换机自带导航(IP路由),能跨小区送快递。 |
集线器 | 物理层 | 大喇叭广播站: - 收到信号就喊“所有人注意!” | 早已被交换机淘汰,现在几乎绝迹。 |
3. 为什么设备分工不绝对?
-
技术进化:就像手机能拍照取代相机,现代设备功能也在融合:
-
例1:家用路由器 = 路由器 + 交换机 + 迷你防火墙(兼职传输层)。
-
例2:高端交换机(三层交换机)能根据IP地址转发数据,抢了路由器的活儿。
-
例3:防火墙/负载均衡器这类设备甚至能深度解析应用层数据(比如拦截病毒邮件)。
-
4. 程序员视角:我该关心哪几层?
-
写App:专注应用层(HTTP API、WebSocket)。
-
调网络:偶尔碰传输层(设端口、调TCP参数)。
-
配路由:涉及网络层(改IP、设路由表)。
-
底层开发:才需要搞数据链路层(写网卡驱动、抓包分析)。
-
物理层:除非你是硬件工程师或黑客(比如蹭网时研究Wi-Fi信号)。
附:设备与层级对照表
设备 | 核心层级 | 关键能力 | 经典场景 |
---|---|---|---|
主机 | 传输层 → 数据链路层 | 发HTTP请求、收邮件、打游戏 | 你的电脑访问淘宝 |
路由器 | 网络层(主) + 传输层(辅) | 跨网络转发、NAT转换 | 家里宽带路由器连接光猫和手机 |
交换机 | 数据链路层(主) + 网络层(辅) | MAC地址表、VLAN隔离 | 公司内网不同部门隔离 |
集线器 | 物理层 | 信号放大 | 90年代老式机房(现已被交换机取代) |
五、再识协议
1. 为什么需要TCP/IP协议?
一句话真相:因为电脑之间离得太远了,远到不能直接喊话,必须建立一套"跨国快递规则"!
具体拆解:
-
单机内部也需要协议
-
你的电脑里,CPU和内存、硬盘聊天时,用的是 内存协议(DDR)、硬盘协议(SATA/NVMe),就像公司内部用钉钉沟通,规则简单、错误少。
-
为什么感受不到? 这些协议被硬件和操作系统封装好了,就像你不需要知道钉钉怎么传输消息,只管发文件。
-
-
网络通信的核心矛盾:距离远=问题多
-
物理问题:信号衰减(喊话听不清)、干扰(旁边有人同时喊)。
-
逻辑问题:数据乱序(先发的包裹后到)、丢失(包裹掉沟里了)、重复(快递员送了两次)。
-
安全需求:防窃听(包裹被拆)、防伪造(假快递骗钱)。
-
解决方案:TCP/IP协议就是一套应对这些问题的"跨国快递SOP"(标准操作流程)。
-
2. TCP/IP协议的本质是什么?
核心答案:分层解决问题的工具箱
-
分层逻辑:不同问题甩给不同层级处理,就像快递公司分部门:
层级 负责问题 类比快递部门 应用层 用户要寄什么(文件/视频/文字) 客服部(收件需求) 传输层 用顺丰还是邮政(可靠/快速) 运输部(选快递公司) 网络层 规划跨国路线(走空运还是海运) 国际物流规划部 数据链路层 同城配送(电动车送还是卡车送) 本地配送中心 物理层 包裹怎么装车(纸箱还是木箱) 打包工人 -
为什么能分层?
每个问题独立存在(比如选路线和打包无关),解耦后开发维护更简单。就像快递公司各部门独立考核,不会因为打包慢影响路线规划。
3. 协议到底是什么?代码视角秒懂
程序员直白定义:双方约定好的"数据结构+解析规则"
-
示例:假设A给B发送数据
{a:10, b:20, c:30}
-
协议代码:
// 双方约定好的结构体 struct Protocol { int a; int b; int c; };
-
发送方:把数据按这个结构体打包成二进制流。
-
接收方:按同样结构体解析二进制流,精准提取
a=10, b=20, c=30
。
-
-
协议分层实例(网购场景):
层级 实际表现 协议示例 应用层 你看到商品页面的图片和文字 HTTP协议(浏览器渲染规则) 传输层 确保"加入购物车"请求不丢失 TCP协议(重传机制) 网络层 数据从杭州阿里云服务器发到北京 IP协议(路由寻址) 数据链路层 数据在小区宽带网络中传输 以太网协议(MAC地址转发) 物理层 光纤里传输的光信号 光电转换协议
4. 协议与操作系统的关系
一句话总结:操作系统是协议的终极打工人
-
内核实现:传输层(TCP/UDP)、网络层(IP)等核心协议由操作系统内核实现,像顺丰的中央分拣系统。
-
用户态协议:应用层协议(如HTTP)由应用程序实现,像淘宝客服自己制定的话术模板。
-
硬件协作:网卡驱动处理数据链路层和物理层,像快递公司的搬运工和卡车司机。
经典交互流程(以微信发消息为例):
-
应用层:你输入"在吗?" → 微信按HTTP协议封装成JSON数据。
-
传输层:操作系统内核的TCP模块给数据加序号(防止乱序)、分块(大消息拆包)。
-
网络层:IP模块加上双方IP地址,查路由表决定走4G还是Wi-Fi。
-
数据链路层:网卡驱动把数据封装成以太网帧,附上MAC地址。
-
物理层:网卡把帧转换成电信号/电磁波发送出去。
5. 协议设计的灵魂三问
-
为什么需要协议?
答:没有协议就像跨国快递不写收件地址、不用标准包装箱——包裹要么送不到,要么送到也拆不开。 -
为什么协议要分层?
答:分层就像快递公司分部门,打包工人不用懂国际物流规划,只用专注怎么装箱子不摔坏商品。 -
协议如何保证兼容性?
答:所有设备厂商共同遵守公开标准(如IEEE制定Wi-Fi协议),就像全球海运都接受标准集装箱尺寸。
附:协议认知升级路线图
认知阶段 | 比喻 | 典型疑问 | 解决方式 |
---|---|---|---|
小白级 | "协议就是合同" | 为什么要分那么多层? | 用快递公司部门分工类比 |
开发者级 | "协议是数据结构+算法" | 如何设计自定义协议? | 学习Protobuf/JSON格式设计 |
架构师级 | "协议是系统交互契约" | 如何保证协议可扩展、高兼容? | 研究HTTP/2、QUIC等演进设计 |
黑客级 | "协议是漏洞挖掘入口" | 如何抓包破解协议? | 学习Wireshark、逆向工程 |