IP协议

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

IP主要包含三方面内容:

  • 数据报格式
  • 分组处理的约定
  • 地址约定

IP 数据报格式:

image-20230422103007635

IP 分片和重组:

由于不同的网络链路有不同的MTU (最大传输单元),所以很多时候没办法直接将整个IP分组向下传输,大的IP数据报就需要在网络上被分片形成独立的分组(目标主机会启动定时器,如果规定时间之外任一一个分片没到就只能全部丢弃),并在最终的目标主机根据ID以及偏移量进行重组。

image-20230422104747694

一个数据报被分割成若干个小的数据报:

  • 相同的ID
  • 不同的偏移量
  • 最后一个分片fragflag标记为0

例子:

  • 胖分组:

    image-20230422105049251
  • 分片分组:

    image-20230422105121256

IP编址:

32位标示,对主机或者路由器的接口编址;路由器通常拥有多个接口,主机也有可能有多个接口,IP地址和每一个接口关联。

IP地址是由网络地址主机地址两部分所组成。

  • 网络地址:网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。
  • 主机地址:主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。

什么是子网:

  • 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网
  • 无需路由器介入,子网内各主机可以在物理上相互直接到达

地址分类:

类别 最大网络数 IP地址范围 单个网段最大主机数 私有IP地址范围
A 126(2^7-2) 1.0.0.1-127.255.255.254 16777214 10.0.0.0-10.255.255.255
B 16384(2^14) 128.0.0.1-191.255.255.254 65534 172.16.0.0-172.31.255.255
C 2097152(2^21) 192.0.0.1-223.255.255.254 254 192.168.0.0-192.168.255.255

非常用地址:

  • D类地址:前四位是1110,用于多播(multicast),即一对多通信;
  • E类地址:前四位是1111,保留为以后使用。

特殊IP地址:

  • 127.0.0.1:回送地址

  • 255.255.255.255:广播地址,用于服务寻找IP

  • 127.0.0.1:本机地址,用于回路检测

  • 0.0.0.0:任一IP,表示不清楚的主机和目的网络

无类域间路由:

CIDR: Classless InterDomain Routing,子网部分可以在任意的位置(通过子网掩码来区分),地址格式: a.b.c.d/x, 其中x 是地址中子网号的长度。

image-20230422155629811

子网掩码:
用来区分子网部分和主机部分:

  • 1: bit位置表示子网部分
  • 0:bit位置表示主机部分

原始的A、B、C类网络的子网掩码分别是:

  • A:255.0.0.0 :11111111 00000000 0000000 00000000
  • B:255.255.0.0:11111111 11111111 0000000 00000000
  • C:255.255.255.0:11111111 11111111 11111111 00000000

转发表和转发算法

转发表:

image-20230422155912978

首先获得IP数据报的目标地址,再根据Mask子网掩码获得网络地址,然后拿网络地址与转发表进行比对:

  • 如果找到了,就按照表项的对应接口转发该报文
  • 没有找到,则使用默认表项转发数据报

IPv6

由于32-bit地址空间将会被很快用完,所以IPv6由此诞生。并且拥有固定的40 字节头部,在数据报传输过程中,不允许分片,而是让主机自己进行处理,减轻了路由器的压力。

数据报格式:

image-20230424145123656

  • Priority:标示流中数据报的优先级
  • Flow Label:标示数据报在一个“flow”
  • Next header:标示上层协议

和IPv4的其它变化:

  • Checksum:被移除掉,降低在每一段中的处理速度
  • Options:允许,但是在头部之外, 被“Next Header” 字段标示
  • ICMPv6:ICMP的新版本

平滑升级:由于主机太多了,只能平滑的升级,IPv6只能通过隧道(即将IPv6的报文封装成IPv4的报文进行通信)在IPv4的环境下进行相互通信。