文章目录
-
- 一、计算机网络背景
-
- [1. 网络发展历程](#1. 网络发展历程)
- 二、认识"协议"
-
- [1. 什么是协议?](#1. 什么是协议?)
- [2. 为什么需要协议?](#2. 为什么需要协议?)
- 3、协议分层
- [三、OSI 七层模型](#三、OSI 七层模型)
- [四、TCP/IP 五层模型](#四、TCP/IP 五层模型)
- 五、网络中的地址管理
-
- [1. IP 地址](#1. IP 地址)
- [2. MAC 地址](#2. MAC 地址)
- 六、网络传输基本流程
- 七、以太网(一种局域网)通信介绍
- 八、跨网络通信
一、计算机网络背景
1. 网络发展历程
- 独立模式:早期计算机相互独立,数据不共享,业务处理效率低。
- 网络互联:多台计算机连接,实现数据共享,提升协作效率。
- 局域网(LAN):小范围内多台计算机通过交换机、路由器连接。
- 广域网(WAN):跨越地理范围的大规模网络连接,如跨城市、国家。
提示:局域网和广域网是相对概念,例如中国的"广域网"也可视为一个大型局域网。
二、认识"协议"
1. 什么是协议?
- 协议是通信双方约定好的数据格式和规则。
通俗的理解,协议就是双方都认识的结构化的数据类型
举个例子:
在寄快递的时候会需要填快递单,而快递单上就会有各种信息,寄件人姓名,始发地,单号等,这些信息双方都知道其中的意思,也就是说,快递单就是寄件人和收件人双方所做的一个约定,这个约定依赖着快递公司所制定的协议
- 计算机通过光信号、电信号传输数据,需约定频率、强弱等表示 0 和 1 的方式。
2. 为什么需要协议?
本质目的是解决因为通信距离增加而带来的新问题,而使用协议就是为了解决这些问题。
这些问题包括:
- 通信距离远,需要通过路由器转发,怎么先发到路由器?
- 网络上主机过多,怎么确定需要发送的主机"位置"
- 数据发送出去,发生丢失怎么办?
- 发送只是为了将数据送到接收方手中,但最终的目的是为了让接收方使用处理数据,接收方式怎么知道如何处理呢?
3、协议分层
协议的具有不同性质,即存在不同种类的问题,因此根据处理问题类型的不同,需要将协议进行分层
分层的好处
- 模块化设计:低耦合,每层独立,易于开发、维护和替换。
- 封装性:每层只需关心自己的协议,无需了解其他层的细节。
三、OSI 七层模型
OSI模型是一个理想化的、理论上的概念模型,由国际标准化组织提出。它的核心价值在于提供了一个通用的标准框架,帮助我们理解和设计网络体系结构。它严格分为七层,每一层都为上一层提供服务,并调用下一层的服务,层与层之间通过接口进行通信。
| 层级 | 名称 | 核心功能与说明 | 数据单元 | 典型协议/设备 |
|---|---|---|---|---|
| 7 | 应用层 | 与用户直接交互 ,为应用程序提供网络服务接口。它决定了"为谁服务"。 - 例如:浏览器、电子邮件客户端 | 数据/报文 | HTTP, HTTPS, FTP, SMTP, DNS, Telnet 设备: 计算机、服务器上的应用程序本身 |
| 6 | 表示层 | 数据的翻译官,负责数据格式的转换、加密和解密、压缩和解压缩。 - 例如:将数据从GBK编码转为UTF-8 | 数据/报文 | JPEG, MPEG, SSL/TLS(加密)、ASCII 设备: 通常由软件实现,无独立设备 |
| 5 | 会话层 | 对话的协调者,负责建立、管理和终止两个应用进程之间的通信会话。 - 例如:断点续传、会话认证 | 数据/报文 | NetBIOS, RPC 设备: 通常由软件实现,无独立设备 |
| 4 | 传输层 | 端到端的可靠通信 ,负责将数据从源端送到目的端,并提供差错恢复和流量控制。 - 核心问题:"对方收到了吗?" | 段 | TCP(传输控制协议) - 面向连接、可靠 UDP(用户数据报协议) - 无连接、高效 设备: 防火墙 |
| 3 | 网络层 | 寻址和路由 ,负责将数据包从一个网络路由到另一个网络,实现全球互联。 - 核心问题:"走哪条路?" | 包/数据报 | IP(网际协议) 、ICMP、ARP、路由器 设备: 路由器 |
| 2 | 数据链路层 | 相邻节点间的可靠传输 ,负责在同一局域网内 通过MAC地址进行寻址,并提供差错校验。 - 核心问题:"下一个设备是谁?" | 帧 | 以太网协议 、PPP、交换机、网桥 设备: 交换机、网桥 |
| 1 | 物理层 | 比特流的透明传输 ,定义物理设备的电气、机械、过程和功能规范,负责传输原始的比特流(0和1)。 - 核心问题:"信号和媒介是什么?" | 比特 | RJ-45、光纤、同轴电缆、集线器、中继器 设备: 集线器、中继器、网卡、调制解调器 |
为什么OSI模型不常用?
- 过于复杂和理想化:将功能划分得过细,例如会话层和表示层在实际中很少被单独实现。
- 历史竞争:在OSI标准制定完成时,更简单、实用的TCP/IP协议栈已经在互联网上被广泛部署和应用。
四、TCP/IP 五层模型
TCP/IP模型并非由官方机构设计,而是源于美国国防部的ARPANET项目 ,并在互联网的发展中成为事实上的国际标准 。它是一个协议簇,更注重实践而非严格的分层。我们常说的"五层模型"是为了教学和理解方便,将OSI的底两层保留,同时将OSI的上三层合并为"应用层",从而与TCP/IP协议栈对应起来。
| TCP/IP 分层 | 核心功能与说明 | 对应OSI层 | 数据单元 | 常见协议 | 典型设备 |
|---|---|---|---|---|---|
| 应用层 | 将OSI的应用层、表示层、会话层功能合一。直接为用户的应用程序进程提供通信服务。 | 5, 6, 7 | 数据/报文 | HTTP/HTTPS (网页)、FTP (文件传输)、SMTP/POP3 (邮件)、DNS (域名解析)、SSH | 计算机、服务器 |
| 传输层 | 与OSI传输层功能完全一致。负责端到端的通信,确保数据可靠、有序、无差错地传输。 | 4 | 段 | TCP (可靠,如网页、邮件)、UDP(高效,如DNS、视频流) | 防火墙 |
| 网络层 | 与OSI网络层功能基本一致 。也称为网际层,是整个TCP/IP模型的核心,负责将数据包发往全球任何网络。 | 3 | 包/数据报 | IP (核心)、ICMP (ping命令)、ARP(地址解析) | 路由器(核心设备) |
| 数据链路层 | 与OSI数据链路层功能基本一致。负责在同一个子网内,通过MAC地址将数据帧从一个设备传输到另一个相邻设备。 | 2 | 帧 | 以太网 、Wi-Fi(IEEE 802.11) 、PPP | 交换机 、网桥 、网卡 |
| 物理层 | 与OSI物理层功能完全一致。负责将帧中的比特流转换为物理信号(电信号、光信号、无线电波)在媒介中传输。 | 1 | 比特 | - | 集线器 、中继器、网线、光纤、无线AP |
重要说明:
- TCP/IP四层模型 :当忽略物理层(即不关心具体传输介质)时,就变成了四层模型:应用层、传输层、网络层、网络接口层。其中"网络接口层"对应了OSI的数据链路层和物理层。
- 为什么TCP/IP模型是"实践的混合模型"? 因为它没有严格遵循OSI的七层划分,而是根据实际通信需求,将功能更紧凑地组合在一起,形成了以IP协议为核心的、高效且灵活的体系结构。
五、网络中的地址管理
1. IP 地址
- 用于标识网络中不同主机的逻辑地址。
- IPv4:32位,4字节,常用点分十进制表示(如
192.168.0.1)。 - IPv6:128位,解决 IPv4 地址不足问题。
2. MAC 地址
- 用于识别数据链路层中的设备。
- 48位,6字节,十六进制表示(如
08:00:27:03:fb:19)。 - 出厂时固化在网卡中,通常唯一(虚拟机除外,虚拟机不是真实的mac地址,可能会产生冲突),有些网卡支持用户配置mac地址
六、网络传输基本流程
数据传输流程

在网络传输的时候,发送方上层所要传送的数据会经过层层封装,每一层会加入自己的报头,形成一个新的数据报,然后交给下一层。对于下层来说,上层交付的新的数据报就是该层的有效载荷(有效数据),加上自已的报头,就形成了该层的报文。
在接收方收到一个报文后,他会进行层层拆封,底层根据自身的协议将报头拆分,将有效数据递给上层,层层拆封,最终拿到用户层所需要的真正的数据。
在宏观上,我们可以认为发送方和接收方在每一层都在进行传输数据。应用层传输给应用层,传输层传输给传输层,以此类推,因为每一层的数据在经过拆封和解封后,同一层拿到的有效载荷一定是一样的。
网络协议栈
在上方的网络传输基本流程中,发送方在进行层层封装,不断的将报头插入在数据头部,就像在一个栈里不断插入数据,而在接收方,不断的拆分报头,就像在一个栈里弹出数据,因此网络传输也可以称为网络协议栈传输数据。
网络协议的共性:
- 报头和有效载荷分离的问题---解包
- 除了应用层,每一层协议,都必须解决一个问题,自己的有效载荷,应该要交给上层的那一种协议---分用,下层封装上层的协议
网络传输流程总结一下就是
- 数据从应用层开始,逐层封装,每层添加首部信息。
- 到达目标后,逐层解封装 (也称作分用),根据首部信息交给上层协议,
七、以太网(一种局域网)通信介绍
在局域网中,两台主机之间可以进行通信,他们具有标识主机的唯一性标识mac地址,下面介绍一下通信的大致过程
假设有5台主机A,B,C,D,E,他们处于同一个局域网,并且每一个主机的mac地址为macA,macB,以此类推。
主机B要给主机D发送信息"hello D",这个数据在经过网络协议栈的层层包装后,在某一层会加上自己的mac地址macA,以及目标主机的mac地址macD,并且将要发送的信息也封装在数据中。
当信息发送到局域网上,其他主机都可以接受到该消息,但是他们会比对该消息的目的mac地址macD,若不是自己的则直接丢弃,若是,则进一步进行拆封,交给自己的上层。
最终,D主机会识别到该信息的目标是自己,则会接受消息交给上层。
该方法的特点:
-
以太网中,任何时刻,只允许一台机器向网络中发送数据
-
如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
-
所有发送数据的主机要进行碰撞检测和碰撞避免
-
没有交换机的情况下,一个以太网就是一个碰撞域
-
局域网通信的过程中,主机对收到的报文确认是否是发给自己,是通过目标mac地址判定
八、跨网络通信

路由:不是发给自己局域网主机的报文,就推送给路由器。
路由器是应用在网络层的设备,他具有多张网卡,可以同时处于不同的局域网中,当不同的局域网进行通信是,就会经过路由器转发,就相当于两节两个大陆的"桥梁"。
在跨网络通信中,需要由路由器来进行转发,发送方要将数据发送给另一个局域网中的接收方,发送了数据后在发送方的局域网中无接收方的ip地址,此时就会交给路由器进行转发,路由器选择有目的ip的局域网并将数据交给该局域网,如果没有,那么会交给另外一个路由器,知道找到为止。此时就相当于路由器在该局域网中的通信,底层采用的协议对上层没有影响,无论是令牌环还是以太网或者其他局域网协议,他们都工作在各自的局域网中,最终交送的数据在网络层之上看到的都相同。也就相当于将局域网的协议进行了屏蔽,下层无论用什么,都不影响上层。
举一个例子:

如图所示,存在2个局域网,第一个局域网中有用户A,C,D,第二个局域网中有B,E,F,他们由一个路由器相连。macA为A主机mac地址,BCD......类似。
上图省略了用户层和传输层的报头,因为在此只为解释跨网络通信基本原理。
当用户A想将数据"你好"发送给另一个局域网中的用户B的时候,会经历6个过程,对应图中的标注
- 用户A将数据进行封装,在网络层封装了源IP地址(src)和目的IP地址(dst),在数据链路层封装了源mac地址和目的mac地址,这里的目的mac地址是指在链路层上的"下一站",并非接收方用户B的mac地址
- 用户A封装好的数据在链路上传播,期间用户C,用户D以及路由器的left网卡都可以接收到,但是他们会将目的mac地址与自身mac地址比对,最终只有路由器的left端口识别接收到了该数据。
- 路由器接收到数据后进行解封,分用,将数据链路层的报头拆掉,剩余数据交由网络层
- 路由器网络层识别到目的IP地址在右边的局域网中,于是将第3步得到的有效数据再次进行封装,此时源mac地址为送往目的局域网的端口的mac地址,即macright,目的mac地址为macB,封装好后交由网卡进行发送
- 由路由器转发的数据在用户B所在的局域网传播,传播方式与2类似,最终只有主机B接收到该数据
- 主机B进行拆封,最终比对目的IP地址为自己,则进一步拆封,拆掉网络层报头后,剩余数据交由上层处理。
从上述示例,我们可以看到,在网络层我们拿到的有效载荷都是一样的。在实际的tcp/ip协议的跨网络传输中,每一个主机在网络层以及网络层的上层拿到的报文(每一层的有效载荷)在整个网络中都是一样的。
因此ip可以屏蔽底层的网络差异,我们生活中所使用的网络都可以称为IP网络。
上述示例只经过了一个路由器转发,在实际中可能会经过多个路由器转发,因此数据在整个网络中的传输示意图如下:
