IP 协议

342 阅读8分钟

一、IP数据报格式

image.png

1. 首部

image.png

image.png

  • 版本:表示当前版本是IPv4还是IPv6
  • 首部长度:就是用来说明当前首部一共占多少个字节。该字段有4位,也就是0~15。而首部的固定部分就占了20字节,可变部分可有可无。因此,该字段最小为5。
  • 区分服务:期望获得哪种类型的服务。很少用。
  • 总长度:首部+数据部分的长度。一共16位,可以表示范围为0~65535,单位为Byte。因此,最大可以为65535字节。
  • 标识:同一数据报分片之后,都使用同一标识。
  • 标志:标志只有两个位有用,中间位DF,为1时禁止分片,为0时允许分片。最低位MF,为1时表示后面还有,为0时表示自己是最后一片了。
  • 片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位。
  • 生存时间(TTL):IP分组的保质期。每经过一个路由器就-1,当变成0就会被丢弃。避免数据报兜圈子,没办法到达目的地,消耗网络资源。
  • 协议:用于标识数据部分用什么协议。TCP为6,UDP为17。
  • 首部检验和:只检验首部。
  • 源地址、目的地址:32位,也就是4位,为目前IPv4的长度
  • 可选字段:0~40B。用来支持排错、测量以及安全等措施。
  • 填充:全0,补全。

二、IP数据报分片

image.png

  • 当所传数据大小超过MTU时,就需要IP数据报分片。
  • 数据报分片之后,在首部的标识都是相同的,表示来自相同的数据报。
  • 当标志中的中间位为1时,禁止分片;当标志中的第三位为1时,表示自己后面还有分片。
  • 通过片偏移,来表示该数据报分片在原数据报中的位置。
  • 分片案例 image.png

三、IPv4地址

  • 用于记录主机地址,可以利用IP地址寻找目标主机。
  • IP地址:全世界唯一的32位/4字节标识符,标识路由器的主机接口。

1. 分类的IP地址

  • IP地址:{<网络号>,<主机号>} image.png image.png
  • 一个局域网内,网络号是相同的。比如上面的,前3个字节为网络号。主机号用于标识不同的主机。 image.png
  • 分类的主要原因是,不同的局域网内的主机数不同,为了最大限度地利用IP地址。在较少主机的情况下,网络号的位数更多,使得可以代表更多的局域网;在主机数较多的情况下,增加主机号的位数。

image.png

2. 特殊的IP地址

image.png

  • 第一行,网络号、主机号均为0。用于在使用的时候,表示自己的主机。
  • 第二行,网络号为0,主机号为特定值。表示本网内的特定主机。
  • 第三行,网络号、主机号均为0。表示本网内的广播地址。
  • 第四行,网络号为特定值、主机号全为0,表示某个网络。
  • 第五行,网络号为特定值、主机号全为1,表示某个网络的广播地址。
  • 第六行,网络号为127(01111111)、主机号为任何数(非全0或全1)。A类地址,环回地址。(localhost)

3. 私有IP地址

image.png

  • 网段就是,网络号的可能个数

四、网络地址转换NAT

image.png

  • 路由器对于目的地址是私有IP地址的数据报一律不进行转发,因此如果使局域网内的主机与外面取得联系,就需要进行网络地址转换。 image.png
  • 也就是说,局域网要上网,要NAT路由器的地址作为自己的IP地址,发送和接收都要依靠NAT地址。(就相当于一个代理)
  • 专用网内的主机,将数据报写好之后,发送给NAT路由器。NAT路由器将数据报里面的源地址和端口号改成自己的,并且在NAT转换表上会有相应的对应关系。然后在发送给目的地址。NAT路由器收到响应之后,将数据报里面的目的地址改成专用网内的主机的地址和端口号,再发送给专用网内的主机。

五、子网划分和子网掩码

1. 子网划分

image.png

  • 分类IP的弱点是,IP地址的空间利用率很低。
  • 两级IP地址不够灵活。

image.png

  • 也就是,一个网络,可以再分割成多个子网。

image.png

2. 子网掩码

  • 通过子网掩码来提取网络号和主机号。 image.png

image.png

  • 每个局域网有自己的一个子网掩码,将目的IP地址与各个子网掩码相与,如果相与的结果与子网掩码相同,表示该目的IP地址就是在该局域网内。

六、无分类编制CIDR

image.png

  • 在分类IP地址当中,通过不同网络位数,划分成多个类别,实现网络个数与主机个数的均衡。而上一节当中,提出了子网划分的概念,该概念又将该网络分成的多个小的网络。这就带来了与分类IP地址相同的问题:有的局域网内主机多、有的局域网内主机少,如何更好地权衡网络号个数以及主机号个数之间的关系呢?
  • 在子网划分当中,提出了网络号位数不定的概念,也就是CIDR无分类编址。网络前缀的个数通过在IP地址后面加一个/20来表示,网络前缀有20位,也就是说,子网掩码的前20位为1,后面全为0。

1. 构成超网

  • 当在路由转发表当中,两个网络的下一跳地址可能都是相同的。为了缩小转发表的体积,使用超网的技术。也就是将两个网络前缀(子网掩码)合并到一起,变成一个新的更短的网络前缀。

image.png

  • 由此,可能会衍生出一个问题,多个网络前缀符合自己的地址,怎么办?
  • 最长前缀匹配:当有几个匹配结果的时候,应该匹配具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。 image.png

七、IPv6

  • 32位的IPv4,空间不够了。
  • IPv4首部格式不够完美 image.png

1. IPv6数据报格式

image.png

  • 分为基本首部和有效载荷。
  • 基本首部就是固定一定要放的部分。
  • 有效载荷包括两个部分,可变部分的首部和真正的数据部分。 image.png
  • 版本:标识协议版本信息,这里是6
  • 优先级:区分各个数据报之间的优先级
  • 流标签:流就是,就是从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都有相同的流标签。
  • 有效载荷长度:就是指明下面的有效载荷的长度。
  • 下一个首部:表示下一个扩展首部或上层协议首部。
  • 跳数限制:和TTL是一个意思
  • 源地址、目的地址:就是IP地址

2. IPv4和IPv6比较

image.png

3. IPv6地址表示形式

image.png

4. IPv6基本地址类型

image.png

5. IPv6向IPv4过渡的策略

image.png

八、IP数据报的三种传播方式

  • 单播:就是点对点的发送报文
  • 广播:就是在局域网内向所有设备发送消息,是点对多的
  • 组播:就是向网络某组特定用户发送特定数据,发送者只需要发送一次,被传播的数据只有快到达用户的时候,才会复制和分发。 image.png

image.png

image.png

1. 组播

1.1 IP组播地址

  • 组播的地址就是D类地址,一个组播地址对应一个D类地址
  • 组播地址只能是目的地,不能是源地址
  • 组播数据报用UDP完成
  • 组播数据报不产生ICMP差错报文 image.png

1.2 硬件组播

image.png

  • 当组播进入局域网之后,需要通过MAC地址找到目标主机。而多个MAC地址实际上是没办法获得的,只能在形式上生成一个组播的MAC地址。规则如下:
    • 所有组播MAC地址都以01-00-5E打头
    • 组播地址MAC地址的后23位,来自组播IP地址后23位的映射。
  • 由此就会产生一些问题,因为组播IP地址的前5位被抛弃了,因此有可能会造成两个组之间的MAC冲突。因此,收到组播数据报的主机还需要在IP层利用软件进行过滤。

九、移动IP

  • 移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。(也就是说,即使漫游在外面的网络,也可以完成原来网络的一些权限的操作) image.png image.png image.png