公众号旧文
你一定知道TCP/IP,但你大概率不知道CPIP(鸽载互联网协议)
如果我说历史上真的有人用鸽子传输过数据,你可能会觉得是在开玩笑。
但这件事,不仅是真的,还写进了互联网标准文档 RFC 1149 里。
一、什么叫“用鸽子传输数据”?
先翻译一下 RFC 1149 的名字:
IP over Avian Carriers(通过鸟类承载 IP 数据)
也就是把数据写进存储设备,让鸽子叼着飞过去。
听起来像段子,但在技术上,它其实是成立的。
因为互联网的本质就是把数据从 A 点传到 B 点。
至于中间是:
- 光纤
- 网线
- 还是鸽子
理论上都可以。
二、它真的写进了官方标准?
是的,而且还是由 IETF 发布的正式文档。
发布时间是:1990 年 4 月 1 日
也就是36年前的今天,愚人节。
作者是:David Waitzman
后面甚至还有升级版本:
- RFC 2549(加入服务质量)
- RFC 6214(支持 IPv6)
连版本迭代都安排上了。
三、最离谱的是真的有人实现了
2001 年,一群爱好者做了一个实验:
基于CPIP(Carrier Pigeon Internet Protocol, 鸽载互联网协议)
用鸽子传输 9 个数据包(ping)
脚本开始于 2001年 4月 28日 星期六 11:24:09
$ /sbin/ifconfig tun0
tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.3.2 P-t-P:10.0.3.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:150 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:88 (88.0 b) TX bytes:168 (168.0 b)
$ ping -c 9 -i 900 10.0.3.1
PING 10.0.3.1 (10.0.3.1): 56 字节的数据。
64 字节,来自 10.0.3.1: icmp_seq=0 ttl=255 时间=6165731.1 毫秒
64 字节,来自 10.0.3.1: icmp_seq=4 ttl=255 时间=3211900.8 毫秒
64 字节,来自 10.0.3.1: icmp_seq=2 ttl=255 时间=5124922.8 毫秒
64 字节,来自 10.0.3.1: icmp_seq=1 ttl=255 时间=6388671.9 毫秒
--- 10.0.3.1 ping 统计 ---
已发送 9 个包, 已接收 4 个包, 55% packet loss
round-trip min/avg/max = 3211900.8/5222806.6/6388671.9 ms
脚本结束于 2001年 4月 28日 星期六 14:14:28
结果如下:
- 发送:9 个
- 收到:4 个
- 丢包率:55%
- 延迟:50~100 分钟
虽然网络极慢,丢包严重,但它确实成功传输了数据。
四、甚至鸽子还有可能打败宽带
现实中鸽子在某些情况下,比网络还快。
比如:
- 用鸽子运送存储卡(几GB数据)
- 几十公里内,一小时左右送达
换算下来平均带宽可以达到 Mbps 级别。
五、这其实不是笑话,而是一个严肃原理
这个“鸽子互联网协议”背后,是在说明一个重要概念:带宽 ≠ 延迟。
我们平时理解的网络快,其实包含两个维度:
1️⃣ 带宽(一次能传多少)
鸽子可以一次带几十GB数据,带宽极高。
2️⃣ 延迟(多久到)
鸽子需要飞几十分钟甚至几小时,延迟极大。
六、现实中的“鸽子互联网”一直存在
你可能没意识到,你偶尔也在用类似方式,比如:
👉 U盘拷数据 👉 硬盘邮寄 👉 快递服务器
在计算机领域,这还有个名字:Sneakernet(偷渡网络)
意思是用物理方式搬运数据,而不是通过网络传输。
甚至在一些场景下这是最优解,比如:
- 数据中心迁移(PB级数据)
- 网络极慢地区
- 离线备份
七、RFC 1149 的真正意义
所以,这个看似搞笑的 RFC,是在表达一个很深刻的思想:
互联网的本质不是“在线”,而是“数据传输”。
它还顺便讽刺了一件事:
再高级的网络,如果带宽不够,还不如用物理方式搬数据。
你可能感兴趣的其他文章: