网络基础知识
网络基础知识
[TOC]
01.什么是网络?
所谓网络,就是通过一定的形式连接起来的物体,物体与物体之间可以实现通信
📌 网络的重要性
- 所有的系统都有网络!
- 我们的生活已经离不开网络
- 运维生涯50%的生产故障都是网络故障!
1)网络介质
①网线
⭐RJ45水晶头

- 五类线,超五类,六类线(千兆)
- 它们都包含8根铜芯,组成4对双绞线
对于百兆网络(100Mbps),通常由五类线组成:
- 1、2线芯(发送)3、6线芯(接收)
- 只用两对双绞线(4芯)(1236)传输数据
- 其余4芯空闲;用于额外供电、反向供电、POE供电
💡 有些AP节点、无线路由器,只需要接根网线就行了,实际上是空闲的4芯发挥作用,进行供电!
在千兆网络中,所有8芯都必须工作,不能省略
双绞线
- 非屏蔽双绞线(UTP)
- 屏蔽双绞线(STP)
- 外包有了一层金属箔,具有较好的抗干扰性
- 但价格高,体积和重量大,不易施工
- 主要用于外界电磁干扰比较大或者对数据传输安全性要求较高的环境
5类 VS 6类
在现代网络布线中,5类线(Cat 5)和6类线(Cat 6)是两种广泛应用的双绞线类型
| 对比项 | 5类线 | 6类线 |
|---|---|---|
| 传输频率 | 100MHz | 250MHz |
| 传输速率 | 100Mbps | 1Gbps |
| 线缆结构 | 四对双绞线,无分隔 | 十字骨架分隔设计 |
| 抗干扰能力 | 较弱 | 显著增强 |
| 适用场景 | 家庭网络、普通办公室 | 企业级网络、数据中心 |
| 价格 | 较低 | 略高 |
📌 单位换算
- 1Byte(字节)= 8bit(比特)
- 100Mb(百兆)= 12.5MB
- 1000Mb(千兆)= 125MB
✅ 如果只是日常上网、看视频,5类线足够使用 若需要千兆网络、未来扩展性或稳定传输,推荐使用6类线
②光纤
- 多模光纤:传输距离近 2公里
- 单模光纤:传输距离远 120公里
③WiFi
2)如何进行传输
(1)在两台主机之间需要有传输介质(网线、光纤、无线等)
(2)在两台主机上面需要有网卡设备
网卡:全球唯一的地址(MAC)
- 在发送信息时:将二进制(数字信号)信息转换为高低电压(电信号)→ 调制过程
- 在接收信息时:将高低电压(电信号)信息转换为二进制数(数字信号)→ 解调过程
(3)🧣 网络传输速率

- 1Byte(字节)= 8bit(比特)
- 100Mb(百兆)相当于12.5MB
理论上1秒钟可以传输12.5MB的数据,但传输过程中一般都有损耗
- 每秒传输只要超过10MB就是正常了
千兆网同理,超过100MB就可以了
⭐磁盘存储容量

用户常常感到”硬盘/U盘买回来变小了”的主要原因?
电脑里面1T = 1024GB,而厂家是1T = 1000GB,所以会有差异
其中规律为 1T ≈ 931GB
02.网络设备
①中继器

- 物理层:按位传递信息
- 典型结构:2个端口(1进1出)
- 目的:延长网络传输距离
- 相当于一个”喇叭”
A 传给它,它大声喊给 B
- 不解析数据内容,也不关心 MAC 地址、IP 地址等高层信息
②网桥

- MAC层是数据链路层
- 故网桥属于数据链路层的设备
③交换机

MAC地址
- 也称为物理地址或硬件地址,每个 MAC 地址在全球是唯一的
- 它用于在数据链路层识别网络设备
格式:
- 通常由 6 个字节(48 位)组成,用 16 进制表示
- 8421,一个16进制的数代表4位
- 一共48位,可以由12个16进制数进行表示
常见格式如:00:1A:2B:3C:4D:5E 或 00-1A-2B-3C-4D-5E
共6个字节:
- 前 3 个字节分配给厂商
- 后 3 个字节由厂商自行分配,确保不重复
ipconfig /all # Windows查看物理地址

- 交换机也工作在数据链路层
- 三层交换机就是具有了路由功能的交换机
- 交换机里面有一个MAC地址表,没有ARP缓存表
- 记录的是”哪个 MAC 地址出现在哪个端口”
- 交换机设备具有MAC地址学习功能
- MAC地址和端口之间的映射,用于转发数据帧
ARP缓存表存的是IP地址和MAC地址的映射
后面详细介绍ARP缓存表
泛洪(Flooding)
将某个接口收到的数据流从除该接口之外的所有接口发送出去
主要过程如下:
(1)交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中
(2)交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发
(3)如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发,这一过程称为泛洪(flood)
🔄 举个例子:
当主机 A 发送一个 ARP 请求(广播帧),交换机会把它泛洪到所有端口(除了接收端口)这个请求包含源IP地址和MAC地址,还有目的IP地址,问对应的MAC地址主机 B 收到后,发现是找自己的 IP,就回一个 ARP 应答(单播帧)交换机看到这个帧的源 MAC,就学习到 B 的 MAC 在哪个端口# 这是 MAC 表,不是 ARP 表!什么是广播风暴?
广播风暴是指网络中,大量广播帧被无限制地重复转发,导致带宽耗尽、设备 CPU 过载,甚至网络瘫痪的现象
🏂网桥VS交换机
二层交换机的基本功能与网桥一样,具有帧转发、帧过滤(依靠MAC地址表决定帧是否需要转发,以及向何处转发)和生成树算法功能(防止出现环路)
网桥和交换机的区别:
| 对比项 | 网桥 | 交换机 |
|---|---|---|
| 工作端口数 | 一般分有两个端口 | 高密度的端口 |
| 分段能力 | 划分的物理网段有限 | 可划分更多物理网段 |
| 传输速率 | 较慢 | 较快 |
| 数据帧转发 | 接收到完整数据帧并执行FCS后才转发 | 存储转发和直接转发两种方式 |
④集线器(Hub)

- 集线器既不解析数据内容,也不关心 MAC 地址、IP 地址等高层信息
- 这一点和中继器一样

- 集线器运行CSMA/CD协议
- 而是基于广播完成数据的转发
- 当一个节点发送数据的时候,所有节点都能够收到
- 连接到一个集线器的所有节点共享一个冲突域
为什么现在很少用 Hub?
- 效率低:所有设备共享带宽(如 100Mbps Hub,有8台设备,则每台平均仅12.5Mbps)
- 冲突多:所有端口在同一冲突域,容易发生数据碰撞
- 不安全:任何设备都能”听到”其他设备的数据(嗅探风险)
- 已被交换机(Switch)取代
集线器(Hub)VS中继器
- 都工作在物理层,不处理帧内容,也不做 CRC 校验
- 中继器只有两个端口,一进一出
- Hub集线器有多个端口
Hub本质上是一个多端口的中继器
它不是把一个信号只转发到某一个特定端口,而是——
只要从任意一个端口收到信号,就立刻把信号”广播”到所有其他端口!
💡 小技巧记忆
想象一个老式电话总机(接线员):
- 传统中继器:只连接两个人
- 多口中继器(Hub):接线员把一个人说的话,同时接通给所有人——不管他们想不想听!
🏞️冲突域VS广播域
冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧
比如,用一条双绞线连接到两个PC机,一个PC节点发送数据帧,另一个PC节点也能收到数据帧
我们再思考为什么集线器不隔离冲突域?
它接受到一个节点的数据帧后会发送到各个节点中,“它发送数据没有针对性,以广播的形式发送”,故不会隔离冲突域
集线器(Hub)设备不能识别MAC地址和IP地址,对接收到的数据以广播的形式发送,它的所有端口为一个冲突域同时也为一个广播域

但是交换机会隔离冲突域,它毕竟是二层设备
在一个局域网中主机之间的通信是通过物理地址来完成的
计算机通信就像人类写信交流一样,必须要有个正确的收信地址,对方才有可能接收到,而这个收信地址就是MAC地址
交换机设备具有MAC地址学习功能,通过查找MAC地址表将接收到的数据传送到目的端口,相比于集线器,交换机(Switch)可以分割冲突域,它的每一个端口相应的称为一个冲突域

交换机虽然能够分割冲突域,但是交换机下连接的设备依然在一个广播域中,当交换机收到广播数据包时,会在所有的设备中进行传播,在一些情况下会导致网络拥塞以及安全隐患
为了避免因不可控制的广播导致的网络故障风险,通信网络中使用路由器(Router)设备来分割广播域

- 相比于交换机,路由器并不通过MAC地址来确定转发数据的目的地址
- 路由器工作在网络层,利用不同网络的ID号(IP地址)来确定数据转发的目的地址
本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,有了VLAN id相当于三层设备路由器的网络id。它能够将网络分割成多个广播域。也就是说,VLAN可以隔离广播域
VLAN
1)未分割广播域
为什么需要分割广播域呢?
那是因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能

图中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络
假设这时,计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播”ARP请求(ARP Request)信息”,来尝试获取计算机B的MAC地址
交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding(泛洪)。接着,交换机2收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上

这个ARP请求原本是为了获得计算机B的MAC地址而发出的。也就是说:只要计算机B能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它
如此一来,一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗
广播域的分割与VLAN的必要性
分割广播域时,一般都必须使用到路由器。使用路由器后,可以以路由器上的网络接口(LAN Interface)为单位分割广播域
但是,通常情况下路由器上不会有太多的网络接口,其数目多在1~4个左右。与路由器相比,二层交换机一般带有多个网络接口
因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高
用于在二层交换机上分割广播域的技术,就是VLAN
通过利用VLAN,我们可以自由设计广播域的构成,提高网络设计的自由度
2)实现VLAN的机制
在理解了”为什么需要VLAN”之后,接下来让我们来了解一下交换机是如何使用VLAN分割广播域的
首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)
例如,计算机A发送广播信息后,会被转发给端口2、3、4

如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN
再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口
同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口

就这样,VLAN通过限制广播帧转发的范围分割了广播域
上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用”VLAN ID”来区分的
需要不同VLAN间通信时怎么办?
请大家再次回忆一下:VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作”VLAN间路由”
这里大家先记住不同VLAN间互相通信时需要用到路由功能
⑤路由器

- 用于隔离不同的广播域

- 一般在网络出口的位置处摆放一台路由器
- 通常作为网关出现
- 实现不同网段之间通讯需要经过一条必经之路,这条路称为网关
03.通信过程汇总
ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的协议
- ARP协议是网络层协议,是因为ARP协议属于TCP/IP协议簇
- 但ARP协议工作在链路层
ARP欺骗
地址解析协议(ARP)是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存
由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗
相关协议有RARP(知道MAC地址,反向请求对应的IP地址)、代理ARP
路由表
功能:当主机要发送一个 IP 包时,先查路由表,确定:
- 是否是本地网段?
- 如果不是,下一跳路由器的 IP 是谁?
- 从哪个网卡(接口)发出去?
关键点:
- 路由表只处理 IP 层,不关心 MAC
- 它可能指向一个本地主机(同网段),也可能指向一个网关(不同网段)
Linux
ip route(推荐,现代标准)
ip route show# 或简写ip r[root@test ~]# ip route show
default via 10.0.0.2 dev eth0 proto static metric 100# default:默认路由(即网关)# via 10.0.0.2:下一跳IP地址(也就是网关的IP地址)# dev eth0:出站网卡
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.128 metric 100172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1# 到172.17.0.0/16网段,网络接口是dev docker0,接口IP是172.17.0.1route -n(传统,部分系统已弃用)
-n表示不解析主机名(更快、更清晰)
[root@test ~]# route -n
Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 eth0# 这个是默认网关,默认都往这里发送包10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0netstat -rn
[root@oldboy ~]# netstat -rn
# netstat:网络统计工具# -r:显示路由表# -n:以数字形式显示IP和端口
# 所以 netstat -rn = "以 IP 地址形式显示当前系统的路由表"
Kernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Iface0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 ens3310.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33# 和上面显示的内容一模一样Windows
以管理员或普通用户身份打开命令提示符(CMD)或 PowerShell
route print

ARP缓存表
功能:将 IP 地址 → MAC 地址 映射缓存起来,避免每次通信都广播 ARP 请求
何时使用?
- 如果路由表说”目标在本地网段” → 查目标 IP 的 MAC
- 如果路由表说”发给网关 192.168.1.1” → 查网关 IP 的 MAC
关键点:
- ARP表只对直连网络有效(即同一广播域内)
- 路由器不会帮你查远程主机的 MAC——你只能查到下一跳的 MAC
Linux
arp命令可用于查询本机ARP缓存中IP地址和MAC地址
arp -n(查看arp缓存表)

arp -d(删除缓存)

Windows
arp -a(查看所有 ARP 条目)

arp -d(删除某一条)
arp -d * # 清空 ARP 缓存(需管理员权限)🧣重点区分
ARP表主要存在于主机和路由器上
❗ 关键区分:
- 交换机没有 ARP 表(除非是三层交换机)
- 交换机里面是MAC表
- 主机没有 MAC 表(它只关心自己的 ARP 表)
主机用 ARP 表解决”IP → MAC”,交换机用 MAC 表解决”MAC → 端口”
ARP请求,靠广播+洪泛传播,后续通信靠缓存提速
ARP请求是主机发的,交换机只是洪泛它
综合流程
工作流程示例(主机 A → 主机 B)
A 想发包给 B(假设在一个局域网)
① 先查路由表,确定转发的IP地址
- 直连的网络或者是本地网段的IP地址(发现是一个网段的)
- 不在一个网段,也找不到直连网络,则默认转发网关的IP地址
② 由IP地址查本地 ARP 表(找B对应的MAC地址)→ 没找到
- 不知道B的MAC地址,交换机也不知道转发给谁?
③ A 发送 ARP 请求(广播帧,目的 MAC = FF:FF:FF:FF:FF
- 广播帧全为1
- 源主机A的IP地址和MAC地址,还有B的IP地址都包括在ARP请求中
④ 交换机收到广播帧
- 先查看交换机自身的MAC地址表(MAC—>端口),没有找到
- 并且目的 MAC 是广播地址 → 洪泛到所有端口(除接收口)
- 同时学习 A 的 MAC → 更新自己MAC表
⑤ 本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配
- 如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求
⑥ B 收到 ARP 请求,发现是找自己
- 则B将主机A的IP地址和MAC地址映射
- 主机B将 → 回 ARP 应答(单播)
⑦ 交换机收到应答帧
- 学习 B 的 MAC → 更新自己MAC表
- 根据 MAC 表直接转发给 A(不再洪泛)
⑧ A 收到应答 → 更新自己的 ARP 表
- 下次就能找到B的IP对应的MAC地址了
- 本机缓存是有生存期
⑨ 主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!




