首页/网络/协议速查/IP 协议号速查

IP 协议号速查

IP 头部的协议字段标识上层协议:6=TCP、17=UDP、1=ICMP、58=ICMPv6 最常用,防火墙与抓包过滤都靠这些数字。

协议速查网络更新于 2026-10-13

协议号在说什么

IP 头部有一个 8 位协议字段,标明上层承载的是什么:6 是 TCP、17 是 UDP、1 是 ICMP、58 是 ICMPv6。防火墙规则、抓包过滤、云安全组与设备访问控制,都用这些数字表达「放行哪一类流量」。

为什么值得记住几个

因为写规则时常常只能填数字:云安全组、部分硬件设备的访问控制、tcpdump 的过滤表达式都是如此。反过来,抓包看到 ip proto 47 却不知道那是 GRE,排查会直接卡住。

基本信息

字段位置IPv4 头部协议字段;IPv6 对应下一个头部字段
最常用1 ICMP、6 TCP、17 UDP、58 ICMPv6
隧道与安全41 IPv6-in-IPv4、47 GRE、50 ESP、51 AH
本机查看Linux 上可用 /etc/protocols 查看名称与编号对照

典型使用场景

  • 写云安全组或设备访问控制:为 GRE、IPsec 等按协议号放行
  • 抓包过滤:只抓某一类协议,快速判断隧道是否建立
  • 排查 IPsec 与 GRE 隧道:确认两端协议号规则一致
  • 学习 IPv6:理解下一个头部字段与扩展头的关系

查看与过滤

查看与过滤
cat /etc/protocols | head            # Linux 上的协议号清单
tcpdump -nn 'ip proto 47' -c 5       # 抓 GRE
tcpdump -nn 'icmp or icmp6' -c 10    # 同时抓 v4 与 v6 的 ICMP
tcpdump -nn 'ip proto 50' -c 5       # 抓 IPsec 的 ESP

协议号速查

协议号协议用途
1ICMPping 与差错报告(IPv4)
6TCP可靠传输
17UDP数据报传输
41IPv6-in-IPv46in4 隧道
47GRE隧道封装
50 与 51ESP 与 AHIPsec
58ICMPv6v6 差错与邻居发现
89OSPF路由协议
132SCTP电信与信令
IPv6 用下一个头部字段代替协议字段,扩展头会让链路更长更复杂。抓包时应区分主机层的下一个头部与扩展头中的值。
防火墙里写协议号 47 或 50 只是第一步:GRE 与 IPsec 还需放行对应地址,NAT 穿透场景还要额外放行 UDP 4500。

写规则时的要点

  • 云安全组与设备访问控制通常要求显式选择协议:TCP、UDP 之外的协议需要用自定义协议号或「全部协议」表达
  • 隧道与 IPsec 场景要同时放行协议号与两端地址,NAT 穿透还要放行对应的 UDP 端口
  • 抓包过滤用 ip proto N 表达,IPv6 则对应 ip6 proto N,别把两者混着写
  • 定位不通时先用抓包确认协议层流量是否已经到达设备,再去改规则
协议号是 IANA 统一维护的编号,同一编号在 IPv4 与 IPv6 下含义一致;差异只在报头字段的名称与位置,规则里的数字不必换算。

易错点

  • 云安全组只按端口放行、忘了协议号:GRE、IPsec 这类非 TCP 与非 UDP 流量直接被丢
  • 只放行 GRE 而忽略内层流量所需的路由与邻居关系:隧道显示建立但业务不通
  • 抓包过滤写错协议号:白忙一场,还会误判成「链路上没有该流量」
  • NAT 环境部署 IPsec 却忘记放行 NAT 穿透端口:隧道只能建立一半
  • 只放行 TCP 与 UDP 而放掉 ICMP 与 ICMPv6:分片与路径 MTU 类问题将无从排查

数据来源与参考

  • IANA Protocol Numbers 注册表
  • RFC 790

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌