相信不少学过计算机网络的小伙伴对TCP/IP与OSI都不陌生,但很多时候有很混淆,他俩都是什么,有什么区别,为什么会有两套不同的体系,下面让我带大家通俗的理解一下。
1、TCP/IP是什么?
TCP/IP 是互联网的核心通信体系,由多种协议组成,用于定义计算机在网络中如何寻址、传输和交换数据。它以 TCP(传输控制协议)和 IP(网际协议)为核心,包含从底层的网络接口到上层的应用服务的完整协议族,是现代网络通信的基础标准。
2、OSI又是什么,与TCP/IP的关系是什么?
OSI 是一种理论性的七层网络模型,用于指导网络协议设计,定义的是功能层次和通信原则 ,但并没有具体规定协议实现。 而 TCP/IP 是其实际应用的四层实现体系,是一套真正实现了这些功能的协议体系。两者的功能大体对应,但 TCP/IP 将 OSI 的表示层和会话层合并进应用层,并在工程上更简化高效。如今互联网普遍采用 TCP/IP 协议族,OSI 主要作为学习和参考模型存在。因此两者的功能大体对应,但协议并非一一对应关系。具体如下图

3、集线器

起初,两台电脑或设备之间只需一根网线即可直接通信,但随着连接的设备数量不断增加,这种点对点的连接方式使网络拓扑变得复杂,且每台电脑都需要多个网口来连接其他设备。为了解决这一问题,人们发明了集线器(Hub) 。集线器能够集中连接多台电脑,使它们通过一台设备互相通信。当其中一台电脑发送数据时,集线器会将数据广播 到所有端口,由目标设备自行判断是否接收。它工作在OSI模型的物理层(第一层),不具备识别或转发数据帧的能力。

那怎么知道数据是谁发给谁的呢,这里就引入了MAC的概念,MAC 地址 (媒体访问控制地址)是网卡在局域网中的唯一硬件标识,用于数据链路层通信。通常为 48 位(6 字节)十六进制表示,前 3 字节表示厂商,后 3 字节由厂商分配。关于MAC有以下注意事项:
-
设备适用性:
凡是具有网络接口的设备都会有 MAC 地址,包括电脑、有线/无线网卡、路由器、交换机、IoT 设备,甚至虚拟网卡。
-
数量与对应关系:
一台电脑可以有多个 MAC 地址,对应其不同的网卡或网络接口(有线网卡、无线网卡、蓝牙、虚拟网卡等)。每块物理网卡通常只有一个 MAC 地址,但虚拟接口或软件修改可产生多个 MAC。
-
注意点:
"电脑的 MAC"并不是唯一标识,实际指某个网卡的 MAC。MAC 地址可以通过软件修改,但物理网卡出厂时通常唯一。
有了MAC后,在发送数据包时会在包头加入源MAC地址和目标MAC地址,集线器广播后每台设备都会收到并解析来判断是不是自己的。虽然集线器大大简化了网络连接,但由于其广播方式会导致带宽共享 和冲突问题,后来逐渐被功能更强的交换机(Switch)所取代。
4、交换机
当一台电脑向另一台电脑发送以太网帧时,交换机会先读取帧头中的 源 MAC 地址 ,并把这个地址与接收到该帧的端口对应关系记录到自己的 MAC 地址表 中。随后,它检查帧头中的 目标 MAC 地址:
-
如果目标 MAC 已经在表中,交换机就只把该帧转发到对应的端口(称为单播转发);
-
如果表中还没有这个 MAC 地址(未知目的地址),交换机会将帧广播到除源端口外的所有端口;
-
如果目标是广播或组播地址,则会根据情况进行全网广播 或组播转发。
这样,随着通信的进行,交换机逐渐学习到整个局域网中各设备的 MAC 地址分布,从而实现点对点的数据转发,而不再像集线器那样把所有数据都发给所有设备。
交换机(Switch)是工作在 OSI 数据链路层(第2层) 的网络设备,用于局域网中帧的智能转发和流量管理。它根据 MAC 地址表 决定帧的转发端口,实现点对点通信,替代集线器(Hub)的广播方式,提高网络性能。

核心功能与算法
-
MAC 地址学习(Learning)
-
记录每个源 MAC 与入端口映射
-
动态维护 MAC 表,适应网络拓扑变化
-
-
转发与泛洪(Forwarding / Flooding)
-
目的 MAC 已知 → 单播转发
-
目的 MAC 未知 → 泛洪到其他端口
-
-
老化机制(Aging)
-
超时未活跃的 MAC 表项自动删除
-
保证表项更新与拓扑适应性
-
常用协议与机制
| 协议 / 机制 | 功能 | OSI 层 |
|---|---|---|
| STP(Spanning Tree Protocol) | 消除冗余链路环路,生成无环拓扑 | 数据链路层 |
| VLAN / 802.1Q | 将物理端口划分为逻辑网络,实现广播域隔离 | 数据链路层 |
| LACP / 802.3ad | 链路聚合,提高带宽与冗余 | 数据链路层 |
| IGMP Snooping | 监听三层组播报文,只转发到需要端口 | 数据链路层/三层协作 |
| LLDP / CDP | 交换机邻居发现,用于网络拓扑管理 | 数据链路层 |
高级交换机(多层交换机)
-
三层交换机:在二层功能基础上增加 IP 路由能力,可进行 VLAN 间路由
-
四层交换机:能识别 TCP/UDP 端口,实现负载均衡和流量控制
交换机的出现使局域网内部的设备能通过MAC地址高效通信,但它只能在同一网段内转发数据,无法识别IP地址,也无法隔离广播域。当网络规模扩大、需要连接不同子网或访问外网时,仅靠交换机就不够用了。于是引入了路由器,它工作在网络层,根据IP地址和路由表决定数据的转发路径,能隔离广播域、实现不同网络之间的通信,并成为局域网通向互联网的关键设备。
5、路由器
当一个数据包到达路由器时,路由器首先解封装链路层帧,读取其中的 目标 IP 地址 。然后,它在自己的 路由表 中查找这段地址所属的网段,判断应该从哪个端口(或下一跳)转发出去。如果目标地址就在本地直连网段内,路由器就通过 ARP 表 找到目标设备的 MAC 地址,重新封装成新的以太网帧后发送出去;如果目标不在本地网段,则根据路由表指向的"下一跳路由器"继续转发。每经过一台路由器,数据包都会被重新封装一次,以太网头部的源和目的 MAC 地址都会变化,但 IP 地址保持不变,直到最终到达目标主机。
一、路由表的建立方式
路由器的 路由表(Routing Table) 记录了"到哪个网段,应该从哪个端口或下一跳发送"的信息。它的建立有三种方式:
-
直连路由(Direct Route)
当路由器的接口配置了 IP 地址并启用后,会自动知道该接口所在的网段。
例如:接口 eth0 配置为
192.168.1.1/24,路由器自动生成一条路由:192.168.1.0/24 直连 via eth0 -
静态路由(Static Route)
由管理员手动配置,用于指定特殊的转发路径。
例如:
ip route add 10.0.0.0/24 via 192.168.1.254 -
动态路由(Dynamic Route)
通过动态路由协议(如 RIP、OSPF、BGP)自动学习和更新,能根据网络变化自动调整路径。
二、路由表的一般格式
路由表通常包含以下字段(简化版):
| 目标网络(Destination) | 子网掩码/前缀 | 下一跳(Next Hop) | 出口接口(Interface) | 距离或优先级(Metric) |
|---|---|---|---|---|
| 192.168.1.0 | /24 | ---(直连) | eth0 | 0 |
| 10.0.0.0 | /24 | 192.168.1.254 | eth1 | 1 |
| 0.0.0.0 | /0 | 192.168.1.1 | eth2 | 10(默认网关) |
当有数据包到来时,路由器会在表中寻找**最精确匹配(最长前缀匹配)**的条目,决定从哪个端口转发。
三、ARP 表的建立方式
ARP 表(Address Resolution Protocol Table) 记录了"IP 地址 ↔ MAC 地址"的映射,用于在链路层封装时找到目标的物理地址。
-
当路由器需要向本地子网设备发送包但不知道其 MAC 地址时,会发出 ARP 请求广播。
-
目标主机收到后返回 ARP 应答,告诉路由器自己的 MAC。
-
路由器就把这对 IP--MAC 关系存入 ARP 表(有超时时间,会自动老化)。
示例:
| IP 地址 | MAC 地址 | 接口 |
|---|---|---|
| 192.168.1.10 | 00:11:22:33:44:55 | eth0 |
四、核心算法与协议(简要概述)
-
最长前缀匹配算法(Longest Prefix Match)
查路由表时选择匹配掩码最长的条目,即最精确的路径。
-
路由算法(动态协议使用)
-
RIP(距离矢量算法):根据跳数判断路径优劣,简单但效率低。
-
OSPF(链路状态算法):每台路由器广播链路状态,构建完整拓扑,使用 Dijkstra 算法求最短路径。
-
BGP(路径向量算法):用于互联网自治系统之间的路由选择。
-
-
ARP 协议:解析 IP→MAC。
-
ICMP 协议:用于诊断(如 ping、路由错误反馈等)。
五、通俗总结一句话
路由表决定"往哪走",ARP 表解决"找谁发",动态协议让路由表能自动学习和更新,而核心算法(如最短路径、最长前缀匹配)则确保数据包总能走到正确的目的地。