互联网是全球协作的产物,旨在构建一个连接数十亿设备的互操作网络,无论国家、区域或制造商差异。这一努力催生了数百种定义设备通信标准的协议,其中互联网协议(IP)最为人熟知,但自诞生起就伴随着诸多误解和阴谋论。
这些误解虽广泛流传却易于驳斥。IEEE、IETF和ISO等组织已在线发布标准或请求评论(RFC),这些文档虽技术术语密集却是信息宝库。当前互联网协议标准(RFC 791)发布于1981年。
本文旨在揭秘互联网协议。若熟悉实体邮件投递流程,便易理解网络流量传输原理。例如从纽约搬迁至加州时,物品需分装多个箱子并标注目的地和返回地址后再寄出。数据在网络中传输同理:发送邮件或流媒体时,数据借助互联网协议(及其他协议)传输,但传输的是数据报而非家居物品,且数据被拆分为数据包而非箱子。
互联网协议有两大功能:寻址和分片。源地址与目标地址均需IP地址。当前使用的IP协议有两个版本:IPv4和IPv6。IPv4地址为固定长度四组八位数,格式如192.168.1.1。IPv4地址资源有限,当前网络设备数量已超可用地址。网络地址转换(NAT)和IPv6是应对IPv4地址枯竭的两种方案。
NAT有多种变体,最常见的是端口地址转换(PAT)。互联网服务提供商(ISP)为家庭分配一个IP地址,但用户通常拥有多个需联网设备(游戏机、笔记本、手机等)。由于无法为每个设备分配独立公网IP,家庭路由器会为每个设备分配私有IP地址和端口号,并通过ISP分配的单公网IP发送所有流量至公网。
IPv6旨在完全替代IPv4。IPv4共有43亿地址,而IPv6约340万亿个。尽管推广缓慢,采用率正逐步上升。谷歌定期发布用户IPv6连接统计数据。
当数据报过大无法穿越网络时需进行分片。因数据包大小限制,互联网协议需将数据报拆分为任意数量片段供后续重组。IP数据包包含两大关键部分:头部和数据。
IP头部包含数据传输与重组指令。下图展示IPv4头部结构(图1:RFC 791)。各头部组件摘要:
- 版本:当前使用IPv4和IPv6,图示为IPv4头部格式
- 头部长度:标识头部结束和数据开始位置
- 服务类型:虽不常用,但允许管理员优先处理不同流量,请求低延迟、高吞吐或高可靠性路由
- 总长度:包含头部和数据的包总长
- 标识:若数据报分片为多IP包,每个包含相同16位标识号以示关联
- 标志:指示数据报是否及如何分片
- 分片偏移:标识分片数据顺序
- 生存时间:数据包允许存留网络的最长时间,用于防止路由循环和拥塞
- 协议:指示封装IP包的传输协议类型
- 头部校验和:检测头部传输错误(如生存时间变更)
- 源地址:发送方IP地址
- 目标地址:接收方IP地址
- 选项:特殊传输指令(默认禁用且少用)
- 填充:确保IP头部长度为32位
互联网数字分配机构(IANA)负责跟踪和分配有限IPv4地址资源。IANA将IP地址块授权给区域互联网注册机构(RIR),后者再分配至区域内请求组织(如ISP),ISP最终为用户分配地址。全球分五大区域:
- AFRINIC:非洲区
- APNIC:亚太区
- ARIN:加拿大、美国及部分加勒比岛屿
- LACNIC:拉丁美洲及部分加勒比岛屿
- RIPE NCC:欧洲、中东和中亚
关于IP地址与地理定位的真相:多家地理定位公司拥有私有位置数据库,其准确度不一且数据冲突。撰写本文时,WhatIsMyIPAddress显示笔者位于华盛顿,而MaxMind显示德克萨斯。无官方精准数据库,所有地理定位数据均由第三方公司编译。这些数据对广告商有价值(如本地冰淇淋店定向投放广告),但仅能精确至邮编而非具体坐标。
位置信息收集方式包括:
- RIR注册信息(注册者可指定国家/坐标,但无强制精度要求)
- 用户提交数据(如天气网站请求位置提供预报)
- IP地址与GPS坐标关联
- 根据ISP猜测位置
位置数据不可靠的原因:
- 用户使用VPN或代理隐藏真实IP
- IP地址块可转让出售(如MIT向亚马逊出售800万地址)
- 公司并购导致网络重组(大ISP收购小ISP)
- IP地址动态分配(断电重置或更换ISP时变更)
位置数据误解引发多起事件:
- ARIN 2018年声明无主IP地理定位数据库,且无法控制第三方数据收集方式。2017年学术研究指出ARIN城市级位置数据不可信。
- 2016年堪萨斯家庭因MaxMind将其农场设为6亿IP地址的默认位置而遭遇警方反复调查,最终诉讼私了。南非家庭亦遭遇类似问题。
互联网协议虽复杂,但本文可为基础知识学习提供起点。