IP

概述

参考:

Internet Protocol(互联网协议,简称 IP)互联网协议套件(其中包含 TCP/IP)中的主要通信协议,用于跨网络边界中继数据报。它的路由功能可实现互联网络,并实质上建立了 Internet。

Internet protocol suite(互联网协议套件) 是互联网和类似计算机网络中使用的概念模型和通信协议集。由于该套件中的基本协议是 TCP(传输控制协议)IP(互联网协议),因此通常被称为 TCP/IP。在其开发过程中,其版本被称为国防部(DoD)模型,因为联网方法的开发是由美国国防部通过 DARPA 资助的。它的实现是一个协议栈。

IP 基于数据包的 Header 中的 IP 地址,将数据包从源主机发送到目标主机。基于此目的,IP 还定义了数据包的封装结构、以及一种寻址方法。寻址方法用来使用源和目标的信息标记数据报。

从历史上看,IP 是在 1974 年由 Vint Cerf 和 Bob Kahn 引入的原始 Transmission Control Program(传输控制程序) 中的无连接数据报服务。该服务由一项面向连接的服务补充,成为 Transmission Control Protocol(传输控制协议,简称 TCP) 的基础。因此 IP 套件通常称为 TCP/IP。IP 的第一个版本是 IPv4,继任者是 IPv6

IPv4 地址

IPv4 地址最多使用 32 bit 表示,即最多 32 个 1,这 32 bit 以 分割为 4 组,每组 8 bit,在使用时,使用十进制表示。比如:192.168.0.1

800

IPv4 地址结构

IPv4 地址的这 32 bit 可以分为两部分

  • 网络位 # n bit
  • 主机位 # 32 - n bit

这两个部分通过 Subnet Mast(子网掩码) 来区分,子网掩码由一连串的 1 和 0 组成,遵从以下规则:

  • 1 对应网络位
  • 0 对应主机位
  • 1 和 0 不能交叉出现

将子网掩码和 IP 地址作“与”操作后,IP 地址的主机部分将被丢弃,剩余的是网络地址和子网地址。

例如:一个 IP 地址为 10.2.45.1,子网掩码为 255.255.252.0,“与” 运算得到:10.2.44.0,则网络设备认为该 IP 地址的网络号与子网号为 10.2.44.0,属于 10.2.44.0/22 网络,其中/22 表示子网掩码长度为 22 位,即从前向后连续的 22 个 1。

00001010.00000010.00101101.00000001
与运算
11111111.11111111.11111100.00000000

结果为
00001010.00000010.00101100.00000001 即 10.2.44.0

IPv4 地址分类

  • 单播地址
开头的 bit网络位 bit 数主机位 bit 数子网数量每个子网的地址数总地址数起始地址结束地址默认子网掩码CIDR
Class A0824128 (27)16,777,216 (224)2,147,483,648 (231)0.0.0.0127.255.255.255255.0.0.0/8
Class B10161616,384 (214)65,536 (216)1,073,741,824 (230)128.0.0.0191.255.255.255255.255.0.0/16
Class C1102482,097,152 (221)256 (28)536,870,912 (229)192.0.0.0223.255.255.255255.255.255.0/24
  • 组播地址

    • D 类 224-239 224.0.0.0 ~ 239.255.255.255
  • 保留地址

    • E 类 240 - 254 240.0.0.0 ~ 255.255.255.255
  • 特殊地址

    • 网络地址 # 网络位不变,主机位全为 0 的 IP 地址代表网络本身
    • Broadcast Address(广播地址) # 网络位不变,主机位全为 1 的 IP 地址代表本网络的广播。是专门用于同时向网络中所有工作站进行发送的一个地址。在使用 TCP/IP 协议的网络中,主机标识]段 host ID 为全 1 的 IP 地址为广播地址,广播的分组传送给 host ID 段所涉及的所有计算机。例如,对于 10.1.1.0 (255.0.0.0 )网段,其直播广播地址为 10.255.255.255 (255 即为 2 进制的 11111111 ),当发出一个目的地址为 10.255.255.255 的分组(封包)时,它将被分发给该网段上的所有计算机。
    • Link Local(链路本地地址) # 169.254.0.0 ~ 169.254.255.255。用于链路本地地址两台主机之间的单个链路上时,否则指定 IP 地址,如将有通常被从检索到的 DHCP 服务器。
  • Private Network(私人网络地址)

名称CIDR地址范围地址数量描述
24-bit block10.0.0.0/810.0.0.0 – 10.255.255.25516777216一个完整的 A 类地址 Single Class A.
20-bit block172.16.0.0/12172.16.0.0 – 172.31.255.2551048576Contiguous range of 16 Class B blocks.
16-bit block192.168.0.0/16192.168.0.0 – 192.168.255.25565536Contiguous range of 256 Class C blocks.

IPv4 Datagram 结构

详见 IP Header

IPv4 Fragment

IP Fragment(分片) 主要通过首部中的 Identification、Flags、Fragment Offset 这三个字段对每一个分片进行唯一标识