解包数据包:揭秘互联网协议
互联网是全球协作的产物,旨在构建一个连接数十亿设备的互操作网络,无论国家、区域或制造商差异。这一努力催生了数百种定义设备通信标准的协议。互联网协议(IP)是其中最广为人知的,但自诞生以来便饱受谣言和阴谋论的困扰。
这些谣言虽流传广泛却易于驳斥。IEEE、IETF和ISO等组织已在线发布标准或请求评论(RFC)。这些文档虽充满技术术语,却是信息宝库。当前互联网协议标准(RFC 791)于1981年发布。
本文旨在揭秘互联网协议。
若熟悉实体邮件投递流程,便易理解网络流量传输原理。例如,从纽约搬迁至加州时,物品无法装入单一箱子,需分装多个箱子并粘贴目的地和返回地址后再寄出。
相同概念适用于网络数据传输。发送电子邮件或流式传输最新电影时,数据借助互联网协议(及其他协议)传输。但传输的不是家居物品,而是数据报(datagram),且数据被拆分为数据包(packet)而非箱子。
互联网协议有两大主要功能:寻址和分片。
寻址:源与目的地的IP地址
当前使用的互联网协议有两个版本:IPv4和IPv6。IPv4地址为固定长度,包含四个八位组,形如192.168.1.1。IPv4地址供应有限,当前网络兼容设备数量已超过可用IPv4地址。网络地址转换(NAT)和IPv6是应对IPv4地址枯竭的两种解决方案。
NAT有多个变体,最常见的是端口地址转换(PAT)。互联网服务提供商(ISP)为家庭分配一个IP地址,但用户通常拥有多个需联网设备(游戏机、笔记本电脑、手机、智能电视、Alexa等)。由于每个设备无法拥有唯一IP地址,家庭路由器会为每个设备分配私有IP地址和端口号,然后使用ISP分配的单公网地址将所有设备流量发送至公共互联网。
IPv6旨在完全替代IPv4。IPv4共有43亿个地址,而IPv6约有340万亿个。因多种原因,IPv6推广缓慢但采用率正逐步上升。Google定期发布用户IPv6连接统计数据。
分片:数据包拆分与重组
当数据报过大无法穿越网络时,需进行分片。由于多种数据包大小限制,互联网协议需将数据报拆分为任意数量的片段供后续重组。
IP数据包包含两个关键部分:头部和数据。
IP头部包含数据传输和重组指令。下图展示IPv4头部结构:
图1:RFC 791
各头部组件摘要:
- 版本:当前使用的IP版本为IPv4和IPv6。上图展示IPv4头部格式。
- 互联网头部长度:指示头部结束和数据开始位置。
- 服务类型(ToS):虽不常用,ToS使管理员能优先处理不同流量,请求低延迟、高吞吐量或高可靠性服务路由。该组件在不同RFC中历经变更。
- 总长度:数据包总长度,含头部和数据。
- 标识:若数据报被分片为多个IP数据包,每个包含相同16位标识号以指示归属同一组。
- 标志:指示数据报是否及如何分片。
- 分片偏移:标识分片数据顺序。
- 生存时间:数据包允许留存网络的最长时间。此功能防止路由环路和无法到达目的地的数据包导致拥塞。
- 协议:IP数据包被另一传输协议封装;此字段指示所用协议。
- 头部校验和:头部在传输途中可能变更(如生存时间),校验和可指示是否存在错误。
- 源地址:发送方IP地址。
- 目的地址:目的地IP地址。
- 选项:特殊交付指令。此字段默认禁用且不常用。
- 填充:确保IP头部长度为32位。
互联网数字分配机构(IANA)
几乎每人拥有IP地址,但多数人不熟悉其分配方式。关于IP地址功能存在常见误解。网络充斥声称IP地址可精确定位某人位置的视频。但此前解析中未提及位置信息。数据包不含位置信息或坐标,IP地址仅是几乎随机分配的数字。
互联网数字分配机构(IANA)致力于跟踪和分配有限IPv4地址。IANA将IP地址块委托给区域互联网注册管理机构(RIR),后者再将地址块分配给区域内不同请求组织(如ISP)。ISP随后将地址分配给客户。家庭和手机由此获得地址,实现互联网数据传输。主要区域包括:
- AFRINIC:非洲区
- APNIC:亚太区
- ARIN:加拿大、美国及部分加勒比岛屿
- LACNIC:拉丁美洲及部分加勒比岛屿
- RIPE NCC:欧洲、中东和中亚
IP地址与地理定位的真相
多家地理定位公司拥有专有位置数据库。这些数据库精度不一且数据冲突。撰写本文时,WhatIsMyIPAddress显示笔者位置为华盛顿,而MaxMind显示为德克萨斯。无官方准确数据库;地理定位数据均由第三方公司编译。此类数据对广告商定位目标受众具有价值(如本地冰淇淋店在线广告定位区域人群),但不提供用户精确坐标,仅能精确至邮政编码。
信息收集方式包括:
- RIRs作为位置信息主要来源。注册管理机构允许指定者为其IP地址块指定国家和地理坐标,但无提供信息或保证准确性要求。
- 用户提交数据(如天气网站请求位置提供基于位置的预报),数据可出售给地理定位公司。
- 将GPS坐标与IP地址关联。
- 根据分配IP地址的ISP猜测位置。
位置数据不可靠的原因包括:
- 用户可能使用VPN或代理隐藏真实IP地址。
- IP地址块可转让和出售。早期互联网先驱(如MIT)在个人计算机普及前获大量地址,后将其出售(如MIT向亚马逊出售约800万个地址)。公司破产等亦导致地址转让。
- 公司合并常见。大型ISP收购小型ISP可能导致网络工程师面临复杂问题,引发重大网络变更。
- 多数IP地址动态分配且可能无意中变更。原因包括路由器断电或重置后重连、更换ISP等。IP地址被回收并重新分配给不同位置用户。
位置数据误解引发的现实问题
ARIN 2018年发布博客解释无主IP地理定位数据库,且无法控制第三方数据收集方式。博客引用2017年学术研究,指出ARIN的城市级位置数据不可信。
2016年,堪萨斯家庭因经历“数字地狱”起诉MaxMind。警方和政府官员反复造访家庭农场调查各类犯罪、失踪人员甚至自杀未遂事件。该家庭最终发现MaxMind将农场设为6亿IP地址的默认位置。公司后将默认位置改为堪萨斯湖泊,诉讼私下和解。南非另一家庭遭遇类似问题,MaxMind将其位置设为数千IP地址的默认值。
互联网协议蕴含众多复杂细节,但本文望为基础知识提供良好起点。