软考中级软件设计师高频考点:IPv6地址长度VLAN与OSI层次协议归属及真题详解(附历年真题·百度网盘)

🎯 所属考纲模块:专题八 计算机网络与网络安全(考点 01:OSI 七层模型与 TCP/IP 协议族)
🏷️ 考查题型:上午综合知识单选题(1 分,年均 1~2 题)
📌 核心知识点:OSI 七层与协议/设备归属、IPv4 32 位与 IPv6 128 位、VLAN tag 位域与所属层次、常见端口号、ping/tracert 等命令的层次
💻 实操验证环境:Python 3.10.12(Ubuntu 24.04 / Windows 11 通用,仅用标准库 ipaddress,无需 pip 安装)
🔁 系列序号:series_36

网络协议这一块,软设上午卷的考法二十年没变过,就两种:“某个技术/协议属于 OSI 哪一层”,或者 “某个数字是多少”(地址位数、端口号、可用主机数)。

听起来简单,但它的失分点非常集中:VLAN 标记明明是"局域网"的东西,很多人条件反射选网络层;IPv6 的 /64 前缀见得多了,就把 64 当成了地址长度。本文用三张图把归属关系和位域结构画清楚,再用可运行代码把"32 位 / 128 位 / VLAN ID"这三个数字跑出来,最后用两道真题验证判定逻辑。


一、 OSI 七层:协议与设备的归属表

OSI 七层与协议归属

层名称典型协议典型设备/技术
7应用层HTTP、HTTPS、FTP、SMTP、POP3、IMAP、DNS、Telnet、SSH、SNMP网关、代理服务器
6表示层加密 / 压缩 / 编码(JPEG、ASCII)—
5会话层会话建立与同步(RPC、NetBIOS)—
4传输层TCP、UDP端口号(0~65535)
3网络层IP、ARP、ICMP、IGMP、IPSec、路由协议 RIP/OSPF/BGP路由器、三层交换机
2数据链路层VLAN tag(802.1Q)、PPP、HDLC、以太网 MAC、STP交换机、网桥、网卡
1物理层RS-232、RJ-45、光纤规范中继器、集线器

三个高频归属,必须钉死:

VLAN tag  → 数据链路层(802.1Q 在以太网帧头插入 4 字节标记)
ARP       → 网络层(IPv4 地址 → MAC 地址,报文封装在 IP 之上)
ICMP      → 网络层(ping 命令基于它,不是传输层)

为什么 VLAN 是二层?因为 802.1Q 标记插在以太网帧头(源 MAC 之后、类型字段之前),操作的是"帧"这一层的数据单元;而 IP 分组、TCP 段都不认识这个字段。判断归属的通用方法:看它操作的数据单元叫什么——比特→物理层,帧→链路层,分组→网络层,段→传输层。


二、 必背数字:地址长度与端口号

IPv4 与 IPv6 地址长度对比

项目数值说明
IPv4 地址长度32 位点分十进制,4 段各 0~255
IPv6 地址长度128 位冒号十六进制,8 组 × 16 位
MAC 地址长度48 位前 24 位厂商标识,后 24 位序号
端口号范围0~65535知名端口 0~1023
HTTP / HTTPS80 / 443HTTPS = HTTP + TLS
FTP20(数据)/ 21(控制)两个端口
SMTP / POP3 / IMAP25 / 110 / 143发信 / 收信 / 收信(在线)
DNS53以 UDP 查询为主
Telnet / SSH23 / 22SSH 是加密远程登录
SNMP161网络管理

关于 IPv6 的 128 位,考场上有三个经典干扰项要能一眼排除:

  • 16 —— 是"一个十六进制组"的长度(16 位 = 4 个十六进制字符),不是地址总长;
  • 64 —— 是 IPv6 最常见的子网前缀长度(/64),指网络前缀占 64 位,剩下 64 位是接口标识;
  • 32 —— 是 IPv4 的地址长度。

三、 VLAN tag:4 个字节到底插在哪

802.1Q VLAN tag 位域

IEEE 802.1Q 在以太网帧的源 MAC 与类型字段之间插入 4 个字节:

TPID(16 位)= 0x8100      标识"这是一个带 VLAN 标记的帧"
TCI (16 位)拆三部分:
    PCP(3 位)  优先级 0~7,用于 QoS
    DEI(1 位)  丢弃资格指示(原 CFI)
    VID(12 位) VLAN ID,取值 1~4094(0 与 4095 保留)

因此"一台交换机最多划分多少个 VLAN"的答案来自 12 位这个宽度:2^12 = 4096,去掉保留值,可用 VID 是 1~4094。


四、 可运行验证:把三个结论跑出来

本节代码只用标准库,任何 Python 3.8+ 环境都能直接复制运行,不需要装包。

# Python 3.10.12(3.8+ 均可)  仅用标准库
import ipaddress

# 1) 地址长度:IPv4=32 / IPv6=128
ip4 = ipaddress.ip_address("192.168.1.1")
ip6 = ipaddress.ip_address("2001:db8::1")
print("IPv4 位数:", ip4.max_prefixlen, "| IPv6 位数:", ip6.max_prefixlen)
assert ip4.max_prefixlen == 32 and ip6.max_prefixlen == 128

# 2) 802.1Q tag = TPID(16) + PCP(3) + DEI(1) + VID(12)
TPID, PCP, DEI, VID = 0x8100, 5, 0, 100
tag = (TPID << 16) | (PCP << 13) | (DEI << 12) | VID
print(f"802.1Q tag = 0x{tag:08X}")

vlan_id = tag & 0x0FFF          # 低 12 位 → VLAN ID
prio = (tag >> 13) & 0x07       # 再往高 3 位 → 优先级
print("解析 VLAN ID:", vlan_id, "| 优先级:", prio)
assert vlan_id == VID and prio == PCP

# 3) 12 位 VID 的容量:4096 个编号,去掉 0 与 4095 两个保留值
usable = [v for v in range(1 << 12) if v not in (0, 4095)]
print("可用 VLAN 数:", len(usable), "| 范围:", usable[0], "~", usable[-1])
assert len(usable) == 4094

print("OK: IPv4=32 / IPv6=128 / VLAN 可用 4094 已全部验证")

实际运行输出(Ubuntu 24.04 + Python 3.10.12):

IPv4 位数: 32 | IPv6 位数: 128
802.1Q tag = 0x8100A064
解析 VLAN ID: 100 | 优先级: 5
可用 VLAN 数: 4094 | 范围: 1 ~ 4094
OK: IPv4=32 / IPv6=128 / VLAN 可用 4094 已全部验证

如果环境不对会怎样? 这段代码在 Python 3.7 及更早版本会因 ipaddress 的部分行为差异仍可运行,但若把 VMware 等虚拟网卡名传给 ipaddress 会抛 ValueError;另外若把 1 << 12 写成 12 << 1,断言会直接失败——这正是用断言替代"背结论"的价值:错了当场报错,而不是考场上才发现记反。


五、 真题切片

5.1 真题 1(2021 年上半年 软件设计师 上午试卷 第 66 题,官方答案 D)

IPv6 地址长度为(66)bit。
A. 16 B. 32 C. 64 D. 128

答案:D

排除逻辑:

  • IPv6 地址 128 位,写成 8 组 4 位十六进制数,组间用冒号分隔,连续 0 组可用 :: 压缩;
  • A 的 16 位是"一个十六进制组"的宽度——这是命题人最爱的微观数字,专骗"记得有个 16"的人;
  • B 的 32 位是 IPv4 的长度;
  • C 的 64 位是 IPv6 常见前缀长度 /64,指的是网络前缀位数,不是地址总长。

5.2 真题 2(2022 年下半年 软件设计师 上午试卷 第 66 题)

VLAN tag 在 OSI 参考模型的(66)实现。
A. 网络层 B. 传输层 C. 数据链路层 D. 物理层

答案:C

排除逻辑:

  • VLAN 标记遵循 IEEE 802.1Q,在以太网帧头插入 4 字节 tag,帧是数据链路层的协议数据单元;
  • A 网络层处理 IP 分组,VLAN 不参与 IP 寻址,也不改变 IP 头;
  • B 传输层处理 TCP/UDP 段,与帧头无关;
  • D 物理层只传比特流,看不到帧边界,更无法插入标记。

5.3 补充真题(2022 年下半年 软件设计师 上午试卷 第 68 题)

以下关于 HTTPS 和 HTTP 协议的叙述中,错误的是(68)。
A. HTTPS 协议使用加密传输
B. HTTPS 协议默认服务端口号是 443
C. HTTP 协议默认服务端口号是 80
D. 电子支付类网站应使用 HTTP 协议

答案:D

HTTPS 是 HTTP over TLS,默认 443 端口、全程加密;电子支付类网站必须使用 HTTPS,用 HTTP 明文传输会导致账号口令可被中间人窃听与篡改,所以 D 的说法是反的。


六、 易错点与相邻考点辨析

易错点错误做法正确做法
把 VLAN 归到网络层认为"虚拟局域网"是三层概念VLAN tag 插在以太网帧头,属数据链路层(802.1Q)
把 ARP 归到数据链路层认为"解析 MAC 就是二层"ARP 报文封装在 IP 之上,教材归网络层
把 64 当 IPv6 地址长度见 /64 前缀就记成 64 位地址 128 位;/64 只是常见子网前缀
认为 HTTPS 只是换了个端口忽略 TLS 握手与证书校验HTTPS = HTTP + TLS,涉及证书链验证与密钥协商
把 ping 当传输层命令见"测试连通性"就选 TCP/UDPping 基于 ICMP,属网络层

相邻考点提醒:子网划分与可用主机数 2^N − 2 是同一专题的另一半,常与本文的 32/128 位一起考;路由协议按"内部网关 / 外部网关"分类(RIP、OSPF 属内部,BGP 属外部,2020 年下半年第 9 题就考 BGP);加密算法与数字证书见 series_34。


七、 机考与复习建议

  1. 归属类题目先问数据单元:比特/帧/分组/段,四选一,比死记协议表更稳;
  2. 数字类题目建立"干扰项清单":考 128 就同时记 16、32、64 分别是什么,考场直接靠排除;
  3. VLAN 位域画一遍:TPID 16 + PCP 3 + DEI 1 + VID 12,自己动手画一次比看十遍强;
  4. 机考系统里没有计算器依赖:2^12 = 4096 这类数要能心算,别在考场找计算器。

附:相关真题与复习资料

本文涉及的 IPv6 与 VLAN 协议归属专项历年真题解析已归档,需要可自取:

百度网盘: https://pan.baidu.com/s/1SwVEmITKHveCupjP_VH7pA  提取码: rk02
备用通道: https://pan.quark.cn/s/bd0eb7dd5673
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐