2

IP地址与数据报

在TCP/IP通信中,互相连接的网络使用IP地址主机和路由器进行标识
数据报记录了传输过程的相关信息,包含IP地址、大小以及分片信息等

  1. IPv4
  2. IPv6

1 IPv4

  1. 定义
  2. 分类
  3. 广播地址
  4. 子网掩码
  5. 首部

1.1 定义

地址形式
4个字节共32位,每8位1组中间以"."隔开,常以十进制表示

10101100.00010100.00000001.00000001
172.20.1.1
这样计算最多允许43亿台计算机连接到网络
每一台主机上的每一块NIC都得设置IP地址,路由器往往会有多个网卡

组成:网络标识(网络地址) + 主机标识(主机地址)

  • 网络地址:对网络的标识,在互相连接的每个网段的地址不重复
  • 主机地址:对主机的标识,在相同网段内相连的主机必须有相同的网络地址与不同的主机地址
  • 在地址后加一个数字来标识网络地址占多少位,用"/"分隔,前面的0可以省略

    //同一网段主机标识为10和1的两台主机
    192.168.128.10/24 , 192.168.128.1/24
    现在基本使用子网掩码(网络前缀)来区分网络地址和主机地址,上述方法在特定场景依然存在

1.2 分类

共四个级别:A类、B类、C类、D类
image.png

根据第1位到第4位的比特对网络地址主机地址进行区分

A类地址:0 + 7位网络地址 + 24位主机地址

  • 0.0.0.0~127.0.0.0:一个网段内可以容纳16,777,214个主机地址

B类地址:10 + 14位网络地址 + 16位主机地址

  • 128.0.0.0~191.255.0.0:一个网段内可以容纳65,534个主机地址

C类地址:110 + 21位网络地址 + 8位主机地址

  • 192.0.0.0~223.255.255.0:一个网段可以容纳254个主机地址

D类地址:1110 + 29位网络地址 (无主机地址)

  • 224.0.0.0~239.255.255.255:常用于多播

1.3 应用

广播地址:在同一个链路中互相连接的主机之间发送数据包(主机地址全为1)

  • 本地广播:在本网段内的广播
  • 直接广播:在不同网络之间的广播

    192.168.0.0/24向192.168.1.255/24发生数据,路由器会根据路由表会将数据包发给192.168.1.0/24
    从而所有192.168.1.1~192.168.1.254的主机都可以收到这个包

IP多播:将数据包发送给特定组内的所有主机(D类地址)
前4位1100,后28位为多播的组编号

私有地址
随着互联网的迅速普及,IP地址不足的问题日趋显著,就出现了一种技术,不要求为每一台主机或路由器分配一个固定的IP地址,而是在必要的时候只为相应数量的设备分配一个唯一IP地址
独立的网络中各自随意地设置IP地址,可能会在需要连接互联网的时候发生地址冲突,这就出现了私有网络的IP地址

  • 分类:A类、B类、C类

    A类:10.0.0.0~10.255.255.255 (10/8)
    B类:172.16.0.0~172.31.255.255 (172.16/12)
    C类:192.168.0.0~192.168.255.255 (192.168/16)
  • 在这些范围内的网络为私有网络,在此之外的为全局网络
  • 初始的设计并不考虑让私有网络连接互联网,只在独自的网络中进行数据交互
  • NAT技术能够互换私有IP与全局IP,在IPv6尚未普及,IPv4地址逐渐耗尽,使用NAT技术解决问题是当前互联网的现状

    私有IP在自己的域中唯一,全局IP在整个互联网中唯一

1.4 子网掩码

使用IP地址的分类时会造成浪费

一个IP地址只要确定了分类也就确定了它的网络标识和主机标识
网络标识相同的计算机必须同属于同一个链路,例如在架构B类IP网络时,理论上在一个链路内允许6万5千多台计算机连接
在实际的架构中这是不存在的,直接使用A类、B类...地址就显得浪费资源

子网掩码的识别码通过子网网络地址细分出比A类、B类更小粒度的网络

实际是哪个就是将原来分类中的主机地址用作子网地址,将原网络分为多个物理网络的一种机制

子网:从分类网络中的划分出的一部分

  • 为了确定网络区域,分开主机和路由器的每个接口,从而产生了若干个分离的网络岛,接口端连接了这些独立网络的端点。这些独立的网络岛叫做子网
  • 传统的分类中,不同的网段之间需要网关连接,子网则是更细微的网络
  • 引入子网后,IP地址就有个两种识别码,一个IP地址本身,另一个是表示网络部的子网掩码

子网掩码:32位,IP地址网络部分全为1,IP地址主机部分全为0

//以172.20.100.52的前26位网络地址的地址为例
IP地址:    172. 20. 100. 52
子网掩码: 255.255. 255.192 

image.png

不拘泥于是哪种网络类型,可以自由的表示网络标识
就如上面的示例,在普通分类中并没有26位的网络地址类型

1.5 首部

通过IP进行通信时,需要在数据前面加入IP首部信息,IP首部中包含着用于IP协议进行发包控制时所有的必要信息
image.png

数据部分前是IP首部
  • 版本4~6:IPv4、ST、IPv6、TP/IX、PIP、TUBA
  • 首部长度:单位为4字节,无可选项时为5,也就是20个字节
  • 区分服务:前三位-优先级、4-最低延迟、5-最大吞吐、6-最大可靠、7-最小代价

    上述是TOS表示法,现在还有将其分为两段DSCP(前6位)、ECN(后2位)
  • 总长度:IP首部与数据部分总字节数,216-1个字节
  • 标识ID:标识分片ID,一个包拆分的分片有相同的标识ID
  • 标志:1 - 必须是0,2- 是否分片、3-0表示该包是分片结束的包
  • 片位移:每个分段相对于原始数据的位置
  • 生存时间:记录当前包在网络上应该生存的期限,经过一个路由则减1
  • 协议:IP包传输层的上层协议编号,ICMP-1、IP-4、TCP-6、UDP-17、IPv6-41
  • 首部校验和:用于确保IP数据报不被破坏

    初始全为0,以16位划分IP首部,用1补数计算所有16位字的和,将所得和的1补数赋给首部校验和字段
  • 可选项长度可变,用于实验与诊断,包括安全级别、原路径、路径记录、时间戳
  • 填充物:填充0,由于可选项的存在,需要填充物将首部位数设置为32的整数倍
  • 数据:包括上层协议的首部信息以及具体的数据内容

2 IPv6

  1. 定义
  2. 特点
  3. 应用
  4. 首部

2.1 定义

地址形式128位16位一组使用":"进行分隔,用16进制表示
地址结构

类型网络地址缩写
未定义0000...0000:: /128
环路地址0000... 0001:: 1/128
唯一本地地址1111 110FC00 :: /7
链路本地单播地址1111 1110 10FE80 :: /10
多播地址1111 1111FF00 :: /8
全局单播地址其他
  • 全局单播地址:世界唯一的一个地址,互联网通信中和各个域内部所使用的IPv6地址

    网络地址:n位全局路由前缀(广域网络) + m位子网ID(站点内部)
    主机地址:128-n-m位接口ID(可以是MAC地址,通常会使用一个随机产生的临时地址保证安全)
  • 链路本地单播地址:同一数据链路内的唯一地址,不经过路由器在同一个链路内通信

    1111 1110 10 + 54位0 + 64位MAC地址
  • 唯一本地地址:不进行互联网通信时所用的地址,通过NAT技术与代理联网的环境下使用

    1111 110 + L(通常为1) + 40位全局ID + 16位子网ID + 64位MAC地址
互联网通信使用全局单播地址
不使用路由器或者在同一个以太网网段使用链路本地单播地址
同一链路也可以使用唯一本地地址进行通信
可以同时将这些IP地址全都配置在同1个NIC上,按需灵活使用
分片处理发送端的主机上进行,减少路由器负荷,提高网速,需要路径MTU发现技术提供路径中的最小传输单元的最小值,防止在路由器转发时包过大还需要分片处理

2.2 特点

  • IP地址的扩大与路由控制表的聚合
    IP地址依然适应互联网分层结构,分配与其地址结构相适应的IP地址,尽可能避免路由表膨大
  • 性能提升
    包首部长度采用固定值,不用首部校验和路由器不再做分片处理
    结构简化、降低路由器负荷
  • 即插即用
    即使没有DHCP服务器也可以实现自动分配IP地址
  • 认证与加密
    应对伪造的IP地址的网络安全功能,防止线路窃听的功能
  • 多播、Mobile IP成为扩展功能
  • 不仅仅解决了IPv4地址耗尽的问题,甚至视图弥补IPv4中绝大多数缺陷

2.4 首部

image.png

  • 通信量类:类似于IPv4中的IOS,表示服务质量(速率、吞吐量、优先级等)
  • 流标号服务质量控制,与源地址+目标地址共同标识一个流
  • 有效载荷长度:类似于IPv4的总长度,首部+数据,包含可选项
  • 下一个首部:类似于IPv4的协议字段,标识上一层协议的编号
  • 跳数限制:类似于IPv4的生存时间,标识可通过路由器个数
  • 扩展首部:IPv6的首部是固定长度,使用扩展首部作为其扩展项

    当在路由中必须分片时,在扩展首部中添加标识以及标志字段

怼怼
73 声望6 粉丝