一、认识协议
1. 概念
协议 ,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
协议(protocol)最终体现为在⽹络上传输的数据包的格式。
2. 作用
想象一下人类交流:
-
语言是一种协议:双方都必须懂中文,才能用中文交流。
-
礼仪也是一种协议:握手表示友好,挥手表示再见。
在网络世界中,计算机、手机、服务器等设备之间要通信,它们也必须使用共同的"语言"和"礼仪",这就是网络协议。它规定了:
-
消息的格式:数据包长什么样?头在哪里?数据在哪里?
-
消息的交互顺序:先发什么?后发什么?收到A后必须回复B吗?
-
在特定情况下该做什么:如果数据包丢失了怎么办?如果对方没响应怎么办?
没有协议,网络通信将是一片混乱 ,设备之间根本无法理解彼此发送的比特流。

计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表⽰ 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双⽅的数据格式。
- 计算机⽣产⼚商有很多;
- 计算机操作系统,也有很多;
- 计算机⽹络硬件设备,还是有很多;
如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信?
- 就需要有⼈站出来,约定⼀个共同的标准,⼤家都来遵守,这就是 ⽹络协议;
二、 五元组
1. 什么事五元组?
五元组是指一个网络连接(特指在传输层)的五个关键标识信息的组合。它像一个独一无二的指纹,可以精确地定位网络中的一条通信链路。
这五个元素是:
- 源IP地址 - 发起连接的主机IP地址
- 源端口号 - 发起连接的主机应用程序使用的端口
- 目的IP地址 - 目标主机的IP地址
- 目的端口号 - 目标主机上应用程序监听的端口
- 传输层协议 - 通常是 TCP 或 UDP
格式:(源IP:源端口, 目的IP:目的端口, 协议)
2. 为什么需要五元组?它的作用是什么?
-
核心作用:唯一性标识和多路复用。
-
想象一下你的电脑(IP: 192.168.1.100)同时在做以下几件事:
-
打开两个浏览器标签页访问百度 (www.baidu.com)
-
用微信和朋友视频通话
-
正在下载一个文件
-
-
你的电脑只有一个IP地址,但所有这些活动都通过同一个网卡进出。操作系统和网络设备如何区分"返回的百度网页数据"应该交给哪个浏览器标签页?"视频流数据"应该交给微信而不是下载软件?
- 答案就是五元组!
-
每个网络连接都有自己独特的五元组。
-
操作系统内核的协议栈会根据五元组,将收到的数据准确地分发给对应的套接字,从而交给正确的应用程序进程。
-
防火墙 规则的核心判断依据也是五元组。例如,一条规则可以写成:"阻止所有从 10.0.0.0/8 网段发来的、访问本机 TCP/22 端口(SSH)的连接"。这完全是对五元组中源IP、目的端口和协议的匹配。
三、 协议分层
网络通信 极其复杂,不可能用一个巨型协议解决所有问题。于是,工程师们采用了"分而治之 "的思想,设计了分层模型。
每一层负责一项相对独立的功能 ,并为上一层提供服务 。层与层之间通过接口 交互,而对等层(比如你的电脑的网络层和谷歌服务器的网络层)之间,则使用该层共同的协议进行逻辑上的通信。
最著名、最通用的分层模型是 TCP/IP五层模型(或四层模型)和 OSI七层模型。实际互联网基于TCP/IP模型。
1.TCP/IP五层模型(从下到上)
| 层级 | 名称 | 核心功能 | 关键协议举例 | 数据单位 | 对应设备 |
|---|---|---|---|---|---|
| 5 | 应用层 | 为应用程序提供网络服务 | HTTP, HTTPS, DNS, FTP, SMTP, WebSocket | 报文 | 主机 |
| 4 | 传输层 | 为进程提供端到端的可靠/不可靠传输 | TCP (可靠), UDP (不可靠) | 段 (TCP) / 数据报 (UDP) | 主机 |
| 3 | 网络层 | 负责寻址和路由,将数据包从源主机送到目标主机 | IP, ICMP, RIP, OSPF, BGP | 包 | 路由器 |
| 2 | 数据链路层 | 负责相邻设备间的帧传输,差错检测 | Ethernet, WiFi, PPP, MAC, VLAN | 帧 | 交换机、网桥 |
| 1 | 物理层 | 在物理媒介上传输原始比特流 | 双绞线、光纤、无线电波、集线器 | 比特 | 集线器、中继器 |
- 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
- 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到⽬标主机。
- ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
- 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
- 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。
2.关键协议详解
1) 应用层协议
-
HTTP/HTTPS:万维网的基础。HTTP负责传输网页,HTTPS是加了SSL/TLS加密的HTTP。
-
DNS:互联网的"电话本",将域名(如 www.baidu.com)解析为IP地址。
-
SMTP/POP3/IMAP:电子邮件的发送和接收协议。
-
FTP:文件传输协议。
-
WebSocket:在单个TCP连接上进行全双工通信的协议。
2) 传输层协议(承上启下,极其重要)
-
TCP:
-
特点:面向连接、可靠、基于字节流。
-
如何保证可靠:三次握手建立连接、确认应答、超时重传、流量控制、拥塞控制、四次挥手断开连接。
-
用途:适用于要求数据完整无误的场景,如网页浏览、文件传输、电子邮件。
-
-
UDP:
-
特点:无连接、不可靠、基于数据报、高效、延迟低。
-
不保证:不建立连接,不保证数据顺序到达,不保证不丢失。
-
用途:适用于实时性要求高、可容忍少量丢失的场景,如视频会议、在线游戏、DNS查询、直播流。
-
3) 网络层协议
-
IP:核心中的核心。 它定义了"IP地址"这一全球逻辑寻址方案,以及数据包的格式(IP头+数据)。它负责将数据包从源路由到目的,但本身不提供可靠性。
-
ICMP :用于传递网络控制信息和错误报告,如 ping 和 tracert 命令就是用的ICMP。
4) 数据链路层协议
-
以太网:最常见的有线局域网协议。它定义了MAC地址和帧格式。
-
ARP:地址解析协议,用于在同一个局域网内,通过目标的IP地址找到其MAC地址。
3.协议如何协同工作?------ 以访问网页为例
假设你在浏览器输入 https://www.example.com:
-
应用层 :浏览器识别出这是一个HTTP请求。应用层协议(HTTP)生成一个"获取首页"的HTTP请求报文。
-
传输层 :HTTP报文交给TCP 。TCP将报文分割成若干段,为每个段添加TCP头(包含源端口、目的端口80/443、序列号等),进行三次握手建立连接,确保可靠传输。
-
网络层 :TCP段交给IP 。IP添加IP头(包含源IP地址、目标IP地址),形成IP包。目标IP地址需要通过DNS协议事先查询得到。
-
数据链路层 :IP包交给以太网 。以太网添加帧头(包含源MAC地址、下一跳的MAC地址)和帧尾(CRC校验),形成帧。下一跳的MAC地址通过ARP协议查询得到。
-
物理层 :将帧转换成比特流,通过网线、光纤等物理介质发送出去。
数据在网络上经过多个路由器和交换机(分别处理网络层和数据链路层),最终到达目标服务器。服务器反向执行这个过程,层层解封装,最后拿到HTTP请求,生成HTTP响应,再沿同样的路径封装发回给你的电脑。
以下为跨⽹段的主机的⽂件传输:数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路由器

四、封装和分⽤
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报(datagram),在链路层叫做帧(frame)。
- 应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装(Encapsulation)。
- ⾸部信息中包含了⼀些类似于⾸部有多⻓,载荷(payload)有多⻓,上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,根据⾸部中的 "上层协议字段" 将数据交给对应的上层协议处理。
下图为数据封装的过程

下图为数据分⽤的过程
