TCP/IP和VLAN
一、TCP/IP 知识重点1. TCP/IP 分层模型四层 vs 五层 vs OSI实际工作和面试中最常用的是五层模型综合了 OSI 和 TCP/IP 的优点层级名称主要协议/设备核心功能5应用层HTTP, HTTPS, DNS, SSH, SMTP为用户提供网络服务4传输层TCP,UDP端到端通信可靠/不可靠3网络层IP, ICMP, ARP路由和寻址2数据链路层以太网, VLAN, 交换机同一链路上的帧传输1物理层网线、光纤、网卡比特流传输面试常见问题为什么说 TCP/IP 是“事实标准”因为它简洁、开放、可扩展而不是由某个厂商控制。2. 重点协议详解 IP 协议网络层无连接、不可靠不保证数据包一定到达顺序可能乱。分片与重组当数据包超过链路 MTU通常 1500 字节时路由器会分片最终由接收方重组。IPv4 头部重点关注TTL防止环路、协议字段6TCP, 17UDP、校验和。 ARP 协议介于 L2/L3 之间功能已知 IP 地址解析出对应的 MAC 地址。工作过程广播 ARP 请求 → 目标回复单播 ARP 应答 → 写入 ARP 缓存。常见问题ARP 欺骗、ARP 广播风暴。 ICMP 协议功能传递差错报告和网络诊断。典型应用ping Echo 请求/应答、traceroute利用 TTL 耗尽。注意有些网络会禁掉 ICMP导致ping不通但业务正常。 TCP传输控制协议— 重中之重特性说明连接性面向连接必须三次握手建立连接可靠性确认应答ACK、超时重传、序列号、校验和流量控制滑动窗口接收方告诉发送方“还能收多少”拥塞控制慢启动、拥塞避免、快重传、快恢复全双工双方可同时发送数据三次握手建立连接客户端 → SYN, Seqx服务器 → SYNACK, Seqy, Ackx1客户端 → ACK, Acky1四次挥手断开连接作用确保双方数据都发送完毕。关键状态TIME_WAIT等待 2MSL防止最后 ACK 丢失。 UDP无连接、不可靠没有握手、确认、重传。优点低延迟、低开销适合实时音视频、DNS、游戏。典型头部源端口、目的端口、长度、校验和。3. 常用通信过程重点理解从浏览器输入 www.baidu.com 到页面显示涉及哪些协议DNS解析域名 → IP 地址使用 UDP 或 TCP。HTTP/HTTPS构建请求。TCP三次握手建立连接HTTPS 还要 TLS 握手。IP封装数据包查路由表跳转。ARP如果下一跳 MAC 未知先发 ARP。以太网封装成帧经网卡、交换机、路由器传输。二、VLAN 知识重点1. VLAN虚拟局域网的本质定义在物理局域网内部用软件逻辑划分出多个相互隔离的广播域。解决的问题抑制广播风暴提高安全性不同 VLAN 默认不能互访简化网络管理同一 VLAN 可跨多台交换机2. 工作原理Tag标签在以太网帧中插入 4 字节的 802.1Q 标签VLAN ID 占 12 位范围 1~40940 和 4095 保留。Access 端口只属于一个 VLAN发往该端口的帧不带标签通常连接主机。Trunk 端口允许多个 VLAN 带标签通过通常连接交换机或路由器。3. 关键概念概念说明VLAN ID唯一标识一个 VLAN范围 1~4094默认 VLAN通常是 VLAN 1所有端口初始都在 VLAN 1Native VLANTrunk 端口上不携带标签的 VLAN默认 VLAN 1VLAN 间路由通过路由器或三层交换机的 SVI 实现不同 VLAN 通信4. VLAN 典型配置命令思科风格理解原理bash# 创建 VLAN vlan 10 name Sales # 将端口划入 Access 模式 interface gig0/1 switchport mode access switchport access vlan 10 # 配置 Trunk interface gig0/24 switchport mode trunk switchport trunk allowed vlan 10,20,305. 云网络中的 VLAN 类比传统 VLAN → 云中的VPC逻辑隔离网络。VLAN ID (4096 个) → VPC 数量几乎无限制通过 VXLAN 实现了 1600 万。Trunk → 云中的VPC 对等连接或专线接入。Access 端口 → 云服务器的虚拟网卡。三、TCP/IP 与 VLAN 的关系TCP/IP 是协议栈定义了数据从应用层到物理层的封装和传输规范。VLAN 是数据链路层的技术在以太网帧头加入 Tag改变的是帧在二层网络中的转发行为。共存TCP/IP 的数据包经过以太网封装时可以由交换机根据 VLAN Tag 决定如何转发。一句话总结TCP/IP 决定了数据“怎么打包、怎么可靠传输”VLAN 决定了数据“在二层网络里能走到哪、能不能跨过交换机”。四、面试/考试高频题速记TCP/IP 部分1. TCP 和 UDP 的区别表格式回答 详细说明维度TCPUDP连接性面向连接三次握手无连接无需握手可靠性可靠传输确认、重传、序列号不可靠不确认、不重传流量控制有滑动窗口无拥塞控制有无有序性保证数据顺序不保证效率较低头部开销大、确认机制较高头部简单头部长度20~60 字节8 字节固定典型应用HTTP、HTTPS、FTP、SSH、SMTPDNS、VoIP、视频直播、游戏面试补充TCP 适用于要求数据完整、不丢失的场景文件传输、网页。UDP 适用于允许少量丢包、要求低延迟的场景实时通话、直播。2. 三次握手过程第一次握手客户端发送SYN1, Seqx随机初始序列号进入SYN_SENT状态。第二次握手服务器收到后回复SYN1, ACK1, Seqy, Ackx1进入SYN_RCVD状态。第三次握手客户端收到后发送ACK1, Seqx1, Acky1进入ESTABLISHED。服务器收到后也进入ESTABLISHED。为什么不是两次防止“已失效的连接请求报文段”突然又传到服务器导致服务器误以为客户端要建立连接而白白等待。三次握手确保了双方都有能力收发数据。状态迁移图简版text客户端 服务器 | | |--------SYN (seqx)---------| (LISTEN) | (SYN_SENT) | |------SYNACK (seqy,ackx1)| | (ESTABLISHED) | (SYN_RCVD) |--------ACK (acky1)--------| | | (ESTABLISHED)3. 为什么需要 TIME_WAIT定义主动关闭连接的一方通常是客户端在发送最后一个 ACK 后会进入TIME_WAIT状态持续2MSLMaximum Segment Lifetime通常 2 分钟。两个原因保证最后一个 ACK 能被对方收到如果 ACK 丢失对方会重发 FINTIME_WAIT状态可以收到并重发 ACK。防止旧连接的数据干扰新连接等待足够长时间确保本连接所有报文都从网络中消失。面试常见追问TIME_WAIT过多怎么办调整内核参数net.ipv4.tcp_tw_reuse允许复用和tcp_tw_recycle已废弃不建议或使用长连接减少连接频繁关闭。4. 如何用 tcpdump 抓取指定端口和主机的包常用命令示例bash# 抓取 eth0 网卡上主机 192.168.1.100 与端口 80 的通信 tcpdump -i eth0 host 192.168.1.100 and port 80 # 抓取源 IP 为 10.0.0.1 且目标端口为 443 的包 tcpdump -i any src host 10.0.0.1 and dst port 443 # 抓取 TCP 且端口是 22 或 23 tcpdump -i eth0 tcp port 22 or tcp port 23 # 抓取特定协议的包icmp、arp 等 tcpdump -i eth0 icmp # 保存到文件 tcpdump -i eth0 -w capture.pcap # 从文件读取并显示内容 tcpdump -r capture.pcap重要参数-i指定网卡any表示所有网卡-n不解析域名加快速度-v/vv显示更详细信息-c抓取指定数量的包5. 一个 IP 包从主机 A 到主机 B经过路由器时哪些字段会变会变的字段TTLTime To Live每经过一个路由器减 1防止环路。头部校验和Header Checksum因为 TTL 变了校验和需要重新计算。源 MAC 地址和目的 MAC 地址每经过一跳二层封装会更换为下一跳的 MAC但 IP 头里的 IP 地址不变。不会变的字段源 IP 地址、目的 IP 地址除非做了 NAT但那是特殊场景。面试点睛“IP 地址全球唯一标识主机MAC 地址只负责下一跳物理传输。”验证命令traceroute或tracert可以看到每一跳的路由器。VLAN 部分1. VLAN 的作用至少 3 点隔离广播域减少广播流量提高网络性能。提升安全性不同 VLAN 默认不能直接通信需要经过三层路由可以配合 ACL 控制。简化管理可以按部门、项目等逻辑分组成员可以跨物理位置。灵活组网不用重新布线就能调整网络划分。减少冲突域虽然交换机本身就隔离冲突域但 VLAN 进一步减少广播域。2. Access 和 Trunk 的区别特性Access 端口Trunk 端口所属 VLAN只能属于一个 VLAN可以承载多个 VLAN帧标签不打 802.1Q 标签除 Native VLAN 外都打标签连接对象主机PC、服务器、打印机交换机、路由器、服务器虚拟化配置方向设置access vlan设置trunk allowed vlan默认模式所有端口刚出厂时通常是 Access需手动配置Native VLAN 补充Trunk 端口上可以定义一个 Native VLAN该 VLAN 的帧在 Trunk 上传输时不打标签。两端 Native VLAN 必须一致否则可能造成 VLAN 跳跃攻击。3. 不同 VLAN 的主机怎么通信方法通过三层路由实现 VLAN 间通信。两种常见方式路由器 交换机交换机的 Trunk 端口连到路由器的物理接口路由器配置子接口802.1Q 封装每个子接口对应一个 VLAN配置 IP 作为网关。示例路由器子接口textinterface gi0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0三层交换机推荐创建 SVISwitch Virtual Interface即 VLAN 接口配置 IP 地址启用ip routing。示例textvlan 10 name Sales interface vlan 10 ip address 192.168.10.1 255.255.255.0 ip routing主机网关指向 SVI 地址三层交换机内部硬件转发。面试追问三层交换机比“路由器交换机”快在哪里答三层交换机使用专用硬件ASIC转发不经过 CPU 处理路由速度达到线速。4. VLAN ID 的取值范围是多少标准范围1 ~ 4094因为 802.1Q 标签中 VID 占 12 位2^1240960 和 4095 保留。保留 VLANVLAN 0用于优先级不含 VID。VLAN 4095保留。VLAN 1默认 VLAN通常所有端口初始属于 VLAN 1。扩展范围某些厂商支持 1 ~ 4094但部分交换机可通过 VTP 或私有协议扩大但标准就是 4094 个可用。5. 如果一个交换机端口既收到带 Tag 的帧又收到不带 Tag 的帧如何决定属于哪个 VLAN取决于端口的模式Access 端口如果收到带 Tag的帧并且 Tag 中的 VLAN ID 与端口所属 VLAN 一致会去掉 Tag 后接收如果不一致直接丢弃。如果收到不带 Tag的帧认为它属于端口所在 VLAN打上内部 Tag。Trunk 端口收到带 Tag的帧根据 Tag 的 VID 判断属于哪个 VLAN如果该 VID 在allowed vlan列表中就接收否则丢弃。收到不带 Tag的帧认为它属于Native VLAN默认 VLAN 1。所以两端 Native VLAN 必须相同否则会跨 VLAN 通信产生安全问题。一句话总结不带 Tag → 默认交给 Native VLANTrunk或端口所属 VLANAccess。带 Tag → 按 TAG 中的 VID 处理若端口不支持该 VID 则丢弃。补充面试官可能追深的 VLAN 问题VLAN 跳跃攻击VLAN Hopping如何防范关闭 Trunk 端口的 Dynamic Trunking 协议DTP手动指定 Trunk。显式设置 Native VLAN 为一个未使用的 VLAN非 VLAN 1。所有 Access 端口上关闭 trunking 功能。私有 VLANPrivate VLAN是什么解决同一个 VLAN 内部需要进一步隔离的问题如同一个 VLAN 下的不同主机不能互访但都能访问网关。