概述
计算机网络按功能分层,上层依赖下层提供服务,下层对上层透明。
OSI 7 层模型
| 层次 | 名称 | 典型协议 / 技术 | 数据单元(PDU) | 主要职责 |
|---|---|---|---|---|
| 7 | 应用层 | HTTP、DNS、SMTP | 报文(Message) | 为应用程序提供网络服务接口 |
| 6 | 表示层 | TLS/SSL、JPEG、ASCII | — | 数据格式转换、加解密、压缩 |
| 5 | 会话层 | RPC、NetBIOS | — | 建立、管理、终止会话 |
| 4 | 传输层 | TCP、UDP | 段(Segment)/ 数据报 | 端到端可靠或不可靠传输、端口复用 |
| 3 | 网络层 | IP、ICMP、OSPF | 包(Packet) | 逻辑寻址、路由选路、跨网转发 |
| 2 | 数据链路层 | Ethernet、PPP、Wi-Fi | 帧(Frame) | 相邻节点成帧、MAC 寻址、差错检测 |
| 1 | 物理层 | 双绞线、光纤、无线电 | 比特(Bit) | 比特流传输、电气/机械特性 |
OSI 是理论参考模型;实际产品中表示层、会话层常并入应用层实现(如 HTTPS 在应用层完成 TLS)。
TCP/IP 4 层模型
| TCP/IP 层 | 对应 OSI 层 | 典型协议 | PDU | 主要职责 |
|---|---|---|---|---|
| 应用层 | 5~7 | HTTP、DNS、FTP | 报文 | 面向用户的网络应用与 API |
| 传输层 | 4 | TCP、UDP | 段 / 数据报 | 主机到主机的通信(端口) |
| 网络层 | 3 | IP、ICMP、ARP | 包 | 主机到主机的路由(IP 地址) |
| 网络接口层 | 1~2 | Ethernet、ARP(也可划到网络层) | 帧 | 同一物理/链路网段内的交付(MAC) |
封装过程(发送方向):应用数据 → 加 TCP/UDP 头(传输层)→ 加 IP 头(网络层)→ 加帧头尾(接口层)→ 物理比特流。
解封装过程(接收方向):与上相反,每一层剥掉本层头部,将载荷交给上一层。
应用层数据 ↓ +TCP/UDP 头IP 数据报(网络层) ↓ +以太网帧头尾比特流(物理/接口层)应用层
应用层直接为各类网络应用定义报文格式与交互语义;绝大多数「端口号」在这一层协议中约定,并映射到传输层的 TCP 或 UDP。
常见应用层协议
| 协议 | 端口(默认) | 传输层 | 作用简述 |
|---|---|---|---|
| HTTP | 80 | TCP | 超文本传输,Web 页面与 REST API 的基础 |
| HTTPS | 443 | TCP | HTTP + TLS,加密与身份校验 |
| DNS | 53 | TCP/UDP | 域名 ↔ IP 解析;大响应或区域传输常用 TCP |
| FTP | 21(控制)、20(主动模式数据) | TCP | 文件传输;被动模式数据端口由服务端协商 |
| SFTP | 22(与 SSH 同端口) | TCP | SSH 之上的安全文件传输(非传统 FTP) |
| FTPS | 990(隐式)/ 21 + TLS | TCP | FTP over TLS |
| SSH | 22 | TCP | 远程登录、端口转发、安全隧道 |
| Telnet | 23 | TCP | 明文远程终端(已不推荐,由 SSH 替代) |
| SMTP | 25 | TCP | 邮件发送(MTA 之间) |
| SMTPS | 465 | TCP | SMTP over SSL/TLS |
| Submission | 587 | TCP | 客户端向邮件服务器提交邮件(常配 STARTTLS) |
| POP3 | 110 | TCP | 邮件接收,客户端拉取后常从服务器删除 |
| POP3S | 995 | TCP | POP3 over TLS |
| IMAP | 143 | TCP | 邮件接收,服务器端保留与同步文件夹 |
| IMAPS | 993 | TCP | IMAP over TLS |
| DHCP | 67(服务端)、68(客户端) | UDP | 自动分配 IP、网关、DNS 等参数 |
| SNMP | 161(Agent)、162(Trap) | UDP | 网络设备监控与管理 |
| NTP | 123 | UDP | 网络时间同步 |
| LDAP | 389 | TCP/UDP | 目录服务(用户/组织架构查询) |
| LDAPS | 636 | TCP | LDAP over TLS |
| RDP | 3389 | TCP/UDP | Windows 远程桌面 |
| VNC | 5900+ | TCP | 跨平台远程图形桌面(显示编号 +5900) |
| SMB/CIFS | 445 | TCP | Windows 文件/打印机共享(NetBIOS 曾用 139) |
| NFS | 2049 | TCP/UDP | Unix/Linux 网络文件系统 |
| MQTT | 1883(1884 TLS) | TCP | 物联网轻量发布/订阅消息 |
| CoAP | 5683 | UDP | 受限设备上的 REST 风格协议 |
| Redis | 6379 | TCP | 内存数据库与缓存(应用层自定义协议) |
| MySQL | 3306 | TCP | 关系型数据库 |
| PostgreSQL | 5432 | TCP | 关系型数据库 |
| MongoDB | 27017 | TCP | 文档数据库 |
| gRPC | 通常 443/自定义 | HTTP/2 over TCP | 高性能 RPC,基于 Protobuf |
| WebSocket | 80/443(与 HTTP 同入口) | TCP | 全双工长连接,实时推送、在线协作 |
补充要点
- URL 结构:
scheme://host:port/path?query#fragment— 未写端口时,HTTP 默认 80,HTTPS 默认 443。 - 无状态 vs 有状态:HTTP 本身无状态;会话常靠 Cookie、JWT、服务端 Session 维持。
- HTTP 方法:
GET(查询)、POST(提交)、PUT/PATCH(更新)、DELETE(删除)、HEAD、OPTIONS等;幂等性与是否带 body 需区分。 - 状态码:
2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误;排障时先看状态码与响应头。 - DNS 查询类型:
A/AAAA(IPv4/IPv6)、CNAME(别名)、MX(邮件)、TXT(验证与 SPF 等);本地缓存由操作系统与浏览器共同维护。 - API 形态:REST(资源 + HTTP 动词)、GraphQL(单端点查询)、RPC/gRPC(过程调用);选型影响端口暴露与网关策略。
传输层
传输层在 IP 地址(主机) 之上用 端口号 标识具体进程,实现多路复用与多路分解。核心协议只有 TCP 与 UDP,但绝大多数应用层服务都建立在二者之一上。
TCP 与 UDP 对比
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 确认、重传、有序 | 不保证送达与顺序 |
| 流量控制 | 滑动窗口 | 无 |
| 拥塞控制 | 有(慢启动、拥塞避免等) | 无 |
| 首部开销 | 较大(20 字节起) | 8 字节 |
| 适用场景 | Web、邮件、文件、数据库 | DNS 查询、视频直播、游戏、VoIP、QUIC 底层 |
端口号分类(IANA)
| 范围 | 名称 | 说明 |
|---|---|---|
| 0~1023 | 熟知端口(Well-Known) | 需管理员权限绑定;HTTP 80、SSH 22 等 |
| 1024~49151 | 注册端口(Registered) | 厂商/应用注册使用 |
| 49152~65535 | 动态/私有端口 | 客户端临时端口(ephemeral port)常用此段 |
客户端访问 服务器:443 时,本机往往从 49152~65535 中随机选一个源端口,四元组 (源IP, 源端口, 目的IP, 目的端口) 唯一标识一条连接。
传输层相关协议与机制
| 名称 | 层次归属 | 端口 | 作用 |
|---|---|---|---|
| TCP | 传输层 | — | 可靠字节流;全双工 |
| UDP | 传输层 | — | 尽力交付数据报 |
| SCTP | 传输层 | 多种 | 多宿主、多流;电信信令等(较少在通用 Web 接触) |
| TLS | 介于应用/表示 | 443 等 | 为上层提供加密与证书校验(严格说常划在应用层) |
| QUIC | 基于 UDP | 443(HTTP/3) | 将 TLS、连接建立、多路复用整合到 UDP 上,减少队头阻塞 |
TCP 连接管理(必记)
三次握手(建立连接)
- 客户端 →
SYN(seq = x) - 服务端 →
SYN + ACK(seq = y, ack = x+1) - 客户端 →
ACK(ack = y+1)→ 进入ESTABLISHED
四次挥手(释放连接)
- 主动方 →
FIN - 被动方 →
ACK - 被动方 →
FIN(可能稍晚,合并时会出现「三次挥手」) - 主动方 →
ACK→ 等待2MSL后关闭
状态:LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1/2、CLOSE_WAIT、TIME_WAIT 等;大量 TIME_WAIT 与高并发短连接调优相关。
补充要点
- 粘包/拆包:TCP 是字节流,应用需自定帧界(长度前缀、分隔符等);UDP 按报文边界交付,不存在粘包。
- 半关闭:一方调
shutdown(SHUT_WR)只关写方向,仍可读对端数据。 - Keep-Alive:TCP 可选保活探测空闲连接;应用层也常用心跳(WebSocket ping/pong)。
- 端口扫描:
SYN扫描、全连接扫描等属于安全测试范畴;生产环境应最小化暴露端口。
网络层
网络层解决 如何把包从源主机经若干路由器送到目的主机(路由),使用 逻辑地址(IP) 而非 MAC。
常见网络层协议
| 协议 | 端口/协议号 | 作用简述 |
|---|---|---|
| IPv4 | 协议号 4 | 32 位地址;与 NAT、子网划分紧密相关 |
| IPv6 | 协议号 41 | 128 位地址;内置 IPSec 思想、无广播、邻居发现(NDP) |
| ICMP | 协议号 1 | 差错与查询:ping(Echo)、目标不可达、超时等 |
| ICMPv6 | 协议号 58 | IPv6 下的 ICMP,含 NDP 功能 |
| IGMP | 协议号 2 | IPv4 组播组成员管理 |
| IPsec | 协议号 50(ESP)、51(AH) | 网络层加密与认证(VPN 常用) |
| ARP | 链路层广播 | IPv4:已知 IP 解析 MAC(仅局域网);有 ARP 欺骗风险 |
| NDP | ICMPv6 | IPv6 邻居发现,替代 ARP 部分功能 |
| OSPF | 协议号 89 | 链路状态内部网关路由协议(IGP) |
| BGP | TCP 179 | 路径向量外部网关协议(EGP),互联网骨干路由 |
| RIP | UDP 520 | 距离向量 IGP(老旧,了解即可) |
说明:ARP 在教材中有时划在「网络层」,有时划在「网络接口层」;它并不使用 IP 首部中的「上层协议」字段,而是独立成帧。
IPv4 地址与划分子网
- 私有地址(RFC 1918,不可在互联网路由):
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 - 特殊地址:
127.0.0.1回环、0.0.0.0本机任意、255.255.255.255受限广播 - CIDR:
192.168.1.0/24表示前 24 位为网络号,约 254 个可用主机地址 - NAT:多主机共享公网 IP,改写源 IP/端口;破坏端到端透明性,但缓解 IPv4 枯竭
- 路由表:最长前缀匹配;默认路由
0.0.0.0/0指向网关
补充要点
- TTL / Hop Limit:每经一跳减 1,为 0 则丢弃并回 ICMP,防止路由环路;
traceroute利用此原理。 - 分片:IPv4 路由器可分片,IPv6 仅源端分片;路径 MTU 发现(PMTUD)避免中间分片。
- 组播 vs 广播:组播节省带宽(IPTV、发现协议);IPv6 无传统广播,用组播替代。
- 防火墙:常按 五元组(协议、源/目的 IP、源/目的端口)过滤;状态防火墙还跟踪连接状态。
网络接口层
网络接口层(也称链路层)负责 同一链路/局域网内 相邻节点的帧传输,使用 MAC 地址(48 位,全球唯一由厂商分配,也有本地管理地址)。
常见技术与协议
| 技术 / 协议 | 说明 |
|---|---|
| Ethernet(IEEE 802.3) | 有线局域网主流;交换机按 MAC 转发 |
| Wi-Fi(IEEE 802.11) | 无线局域网;SSID、信道、加密(WPA2/WPA3) |
| PPP | 拨号、部分广域接入;认证 CHAP/PAP |
| VLAN(802.1Q) | 在以太网帧加 4 字节标签,逻辑划分广播域 |
| STP/RSTP | 防止交换机环路 |
| LACP | 链路聚合,提高带宽与冗余 |
以太网帧(简化)
| 字段 | 作用 |
|---|---|
| 目的 MAC / 源 MAC | 链路层寻址 |
| 类型(Ethertype) | 上层协议,如 0x0800 IPv4、0x86DD IPv6、0x0806 ARP |
| 载荷 | 网络层 IP 包等 |
| FCS | 帧校验序列,检错 |
补充要点
- 交换机 vs 路由器:交换机工作在链路层(MAC),路由器工作在网络层(IP);三层交换机兼具路由能力。
- MTU:以太网常见 1500 字节(不含帧头);巨帧(Jumbo Frame)可达 9000,需全网支持。
- 双工与速率:全双工/半双工、自协商;排障时注意误配半双工导致冲突。
- 抓包:Wireshark 在接口层捕获;过滤表达式如
tcp.port == 443、http.request。
跨层速查与排障
分层与地址/端口对应
应用层 → 域名、URL、API传输层 → 端口号(进程)网络层 → IP 地址(主机)接口层 → MAC 地址(网卡/链路)常用命令(对应层次)
| 命令 / 工具 | 主要验证内容 |
|---|---|
ping | 网络层可达(ICMP) |
traceroute / tracert | 路径与每跳延迟 |
nslookup / dig | 应用层 DNS |
curl / wget | 应用层 HTTP(S) |
telnet host port / nc | 传输层端口是否开放 |
ipconfig / ifconfig / ip addr | 本机 IP、MAC、网关 |
arp -a | IP 与 MAC 映射缓存 |
netstat / ss | 套接字与连接状态 |
route print / ip route | 路由表 |
典型故障分层思路
- 物理/链路:网线、光模块、链路 up/down、错误计数
- 网络层:IP 是否同网段、网关、路由、ACL、防火墙
- 传输层:端口是否监听、SYN 超时、连接数耗尽
- 应用层:DNS 解析失败、证书错误、HTTP 4xx/5xx、鉴权
安全相关(扩展)
- HTTPS:证书链、HSTS、混合内容;中间人攻击靠 CA 与证书固定缓解
- 防火墙最小暴露:仅开放必要端口;管理口与业务口隔离
- DDoS:网络层(SYN Flood)、应用层(HTTP Flood);缓解靠限速、清洗、CDN
小结
| TCP/IP 层 | 核心标识 | 代表协议 | 记忆要点 |
|---|---|---|---|
| 应用层 | 域名、URL | HTTP、DNS、SMTP | 端口多在这一层约定 |
| 传输层 | 端口 | TCP、UDP | 可靠 vs 尽力、四元组 |
| 网络层 | IP | IP、ICMP、路由协议 | 路由选路、NAT、子网 |
| 网络接口层 | MAC | Ethernet、ARP | 局域网成帧与交换 |
理解「哪一层解决什么问题」后,查协议、记端口、排故障都可以按层定位,再向下剥或向上追即可。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
