常见协议号

常见协议号及其分配逻辑

 
协议号协议英文全称说明
1 ICMP Internet Control Message Protocol 控制消息,用于网络诊断(ping/traceroute)
2 IGMP Internet Group Management Protocol 组播管理
4 IPIP IP in IP IP封装,就是我们现在讨论的
6 TCP Transmission Control Protocol 可靠传输,面向连接
17 UDP User Datagram Protocol 无连接传输,简单快速
41 IPv6 IPv6 encapsulation IPv6 over IPv4隧道
47 GRE Generic Routing Encapsulation 通用路由封装,思科推出
50 ESP Encapsulating Security Payload IPsec 加密
51 AH Authentication Header IPsec 认证

分配的历史和逻辑

  1. 早期分配(1-100):

    • 很多核心协议都是在互联网发展初期分配的

    • TCP(6)和UDP(17)都是在1981年的RFC 790中首次标准化

    • 数字不连续反映了当时不同协议标准化的时间顺序

  2. 技术分组:

    • 1-10:基础控制协议(ICMP、IGMP等)

    • 传输层协议:TCP(6)、UDP(17)

    • 隧道协议:IPIP(4)、GRE(47)等

    • 安全协议:ESP(50)、AH(51)等

  3. 为什么是这些特定数字?

    • 很大程度上是历史原因,没有特别复杂的数学逻辑

    • 早期协议获得较低的号码,后来开发的协议获得较高的号码

    • 类似于电话号码的区号分配 - 先到先得

实际应用中的意义

当操作系统收到一个IP包时,处理流程如下:

python
# 伪代码:操作系统内核处理IP包
def process_ip_packet(packet):
    protocol_number = packet.ip_header.protocol
    
    if protocol_number == 6:    # TCP
        hand_to_tcp_stack(packet)
    elif protocol_number == 17: # UDP  
        hand_to_udp_stack(packet)
    elif protocol_number == 4:  # IPIP
        hand_to_ipip_tunnel(packet)
    elif protocol_number == 1:  # ICMP
        hand_to_icmp_handler(packet)
    # ... 其他协议

与端口号的本质区别

理解这一点很重要:

 
特性协议号端口号
作用范围 整个IP包 单个主机内的应用程序
处理层级 网络层(OSI第3层) 传输层(OSI第4层)
用途 告诉系统这是什么协议 告诉系统交给哪个程序
类比 信封里装的是什么  
本回答由 AI 生成,内容仅供参考,请仔细甄别。
 
 
有一个8位的字段叫做“协议”(Protocol),用来指示IP数据包 怎么表示4 - IPIP (IP in IP encapsulation)
 
 
 
 

我们讨论的是IPv4数据包头的“协议”字段。这个字段是一个8位的数字,用来指示IP数据包的数据部分使用的是哪种上层协议。
对于IPIP(IP in IP封装),协议号是4。这意味着当IPv4数据包的协议字段被设置为4时,表示这个IP数据包的数据部分是一个完整的IP数据包(即另一个IP头及其数据)。

现在,我们来看一下IPv4数据包头的结构(简化版):
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 版本 | 头长度 | 服务类型 | 总长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

 
 
posted @ 2025-11-03 15:57  滴滴滴  阅读(16)  评论(0)    收藏  举报