IPv4和IPv6

本篇博客为最近课堂所学笔记整理和网上查阅的一些资料,如有错误,感谢指正。

IPv4

IPv4基础

  • 为了在网络层定义广泛使用的通信标准,覆盖异构网络产生的差异,网络层协议的定义应该符合奥卡。姆剃刀理论(如无必要,勿增实体,让协议标准只需要满足基本的跨网络转发需求)
  • IPv4的头部分装为:
    1. 版本:字段长度为4位,作用是表示数据包的版本。
    2. 头部长度:字段长度为4位,作用是标识数据包的头部部分长度
    3. 服务类型:字段长度为8位,作用是让网络层设备根据服务类型字段的取值,为数据包提供专门的服务。
    4. 数据长度:字段长度为16位,作用是标识数据包的长度。
    5. 标识:字段长度为16位,网络设备有时需要对一个IPv4数据包进行分片,即分成多个IPv4数据包。因此,IPv4数据包头部需要一个字段来标识用一个IPv4数据包的多个分片。
    6. 标记:该字段是3个独立的标记位,其中第0位是保留位,取值为0;第1位和第2位具体为:
      • DF:don’t fragment, 禁止分片。如果取值为1,则表示设备对数据包进行分片时,会选择丢弃数据包;如果为0,则表示设备需要对数据包进行分片
      • MF:more fragment, 更多分片。如果取值为1,则表示该数据包之后,还有更多分片;如果取值为0,则表示该数据包是最后一个分片。
    7. 分片偏移:字段长度为13位,作用是在接收方重组数据包的各个分片时,确定每个分片在原数据包中的顺序。
    8. 生存时间:字段长度为8位,表示数据包到达目的端之前允许经过的路由器跳数。(该字段值由发送方进行设置)
    9. 协议:字段长度为8位,作用是标识数据包封装的是哪个协议的数据段。
    10. 头部校验和:字段长度为32位,目的是在网络层对IP数据包头部进行差错校验
    11. 源IP地址:字段长度为32位,作用时标识源主机的IP地址
    12. 目的IP地址:字段长度为32位,作用是标识数据包的目的IP地址
    13. 可选项与填充位:可选项字段的作用时根据特定需求提供一些扩展功能

IP地址基础

  • IP地址格式
    • IP地址由32 位二进制数组成,实际上使用的是点分十进制表示法。
      • 点分十进制表示法把32位二进制数平均分成4组,每组8位(一字节),然后按组转换为十进制数,组与组之间使用点(.)隔开。
      • 例如某数据包IP头部的源地址字段值为00111011001101010101001011000101,使用点分十进制表示法,表示为59.53.82.197。
    • IP地址分为网络部分和主机部分,其中,网络部分(网络位或网络号)表示IP地址所在的网络,主机部分(主机位或主机号)标识网络中一个适配器。在IP地址中,网络位从最左侧位开始,到第N位为止;主机位从第N+1位开始,到最右侧位为止
    • 最初在定义IP地址的网络位和主机位时,路由器的处理能力有限。为了减轻路由器的处理负担,IP地址的前8位固定为IP地址的网络位,后24位固定为主机位
  • 有类IP地址:IP地址的前八位固定为网络位,意味着这种编址方式只能支持256(2的8次方)个网络进行相互通信,难以满足更多新建网络的IP地址需求。IP地址的主机位有24位,表示每个网络可以支持16777216(2的24次方)台主机。
    • 对此人们定义了IP地址的类:
      • A类地址:指第一位二进制数为0的IP地址A类地址的前8位二进制数为网络位,后24位为主机位。A类地址的理论范围为0.0.0.0~127.255.255.255
      • B类地址:指前两位二进制数为10的IP地址B类地址的前16位二进制数为网络位,后16位为主机位。B类地址的理论范围为:128.0.0.0~191.255.255.255
      • C类地址:指前三位二进制数为100的IP地址C类地址的前24位二进制数为网络位,后8位为主机位。C类地址的理论范围为:192.0.0.0~233.255.255.255
      • D类地址:指前四位二进制数为1110的IP地址D类地址预留为组播地址,理论范围为224.0.0.0~239.255.255.255
      • E类地址:指前四位二进制数为1111的IP地址E类地址预留为科研机构保留地址,理论范围为240.0.0.0~255.255.255.255
    • 在一个网络中,第一个IP地址代表整个网络,最后一个IP地址代表这个网络的广播地址,其他IP地址分配给这个网络中的主机。例如,在C类地址192.1.1.x中,192.1.1.0代表整个网络,192.1.1.255代表这个网络的广播地址,192.1.1.1~192.1.1.254共254个,可以作为该网络中各个主机的地址

子网掩码

  • IP地址时不同于MAC地址的分层地址,这种地址便于寻址。但是即使在一开始就将IP地址分为网络部分和主机部分,还是难以满足用户的日常需求。因此子网划分应运而生。
  • 子网划分时借用自然分类IP地址的主机位作为“子网位”以此来划分出更多更小的IP子网。
  • 此处对应出现了一个概念叫做子网掩码:
    • 子网掩码又称为网络掩码,地址掩码,它的作用是用来指明一个IP地址的哪些标识位是主机所在的子网。
    • 子网掩码是不能单独存在的,必须和IP地址一起使用,因为它只会告诉你IP地址中哪些位置是网络位哪些位置是子网位。
    • 子网掩码和IP地址一样是32位二进制数,同样使用点分十进制,其中IP地址网络位的对应掩码位为1,主机位为0。如图所示:
    • 有类网络的IP地址和子网掩码总结:
      起始位 网络位 主机位 网络数/个 可用主机地址数/个 起始地址 最终地址 子网掩码
      A 0 8 24 128(2的7次方) 16777214(2的24次方-2) 0.0.0.0 127.255.255.255 255.0.0.0
      B 10 16 16 16384(2的14次方) 65534(2的16次方-2) 128.0.0.0 191.255.255.255 255.255.0.0
      C 110 24 8 2097152(2的21次方) 254(2的8次方-2) 192.0.0.0 223.255.255.255 255.255.255.0
      D 1110 N/A N/A N/A N/A 224.0.0.0 239.255.255.255 N/A
      E 1111 N/A N/A N/A N/A 240.0.0.0 255.255.255.255 N/A
    • 如果需要求子网IP地址,只需要对IP地址和子网掩码进行逻辑与运算即可求得子网IP地址
    • IP地址不管是否进行子网划分,都是根据主机位的值区分网络号,主机地址,广播地址。
      • 例如现在有一个B类地址:172.16.0.0,它的子网掩码位255.255.255.0,进行子网划分。
      • 判断:
        • 16位自然网络位(B类地址) + 8位子网位 (子网掩码有24位-16位自然网络位) + 8位主机位
      • 划分出的第一个子网:
        • 网络号:172.16.0000 0000.0 255.255.255.0(子网位全0,第一个IP子网,俗称零子网)
        • 主机地址范围:172.16.0.1~172.16.0.254 255.255.255.0
        • 广播地址: 172.16.0.255 255.255.255.0
      • 划分出的最后一个子网:
        • 网络号:172.16.1111 1111.0 255.255.255.0(子网位全1,最后一个IP子网,俗称广播子网)
        • 主机地址范围:172.16.255.1 ~172.16.255.254 255.255.255.0
  • 子网划分相关计算公式:
    1. 可以划分出多少个IP子网:2ⁿ(n的值为子网位数)
    2. 划分出的每个IP子网,可以提供的主机数量:2ⁿ-2(n为主机位数)
    • 注意:划分出的IP子网能提供的IP地址数目是2ⁿ(n为主机位数)个,划分出的第一个IP地址是网络号,最后一个是广播地址。

子网划分方案

  • FLSM定长子网掩码:划分出的每个IP子网掩码的长度相同
  • VLSM可变长子网掩码:根据每个IP网段内需要的主机地址的 实际数目 灵活调整 不同IP子网的 掩码长度
    • VLSM:应从需要主机地址数目最多的网段开始分析,如图:
      1. IP网段A需要50台PC+路由器AR1的一个接口=51个主机地址
      2. 2ⁿ-2>51 n最小取6,主机位6位,网络位则有:32-6=26位,子网掩码为255.255.255.192
      3. 假如给网段A分配的网络号为192.168.1.0/26,那么对应的主机地址范围是192.168.1.1/26——192.168.1.62/26,广播地址为192.168.1.63/26
      4. IP网段B同理

IPv6

IPv6地址格式:

  • 128位2进制数组成
  • 划分成8段,每段16位2进制,转换成4个十六进制数
  • 段与段之间使用“:”隔开
  • 这种方法叫做“冒号十六进制”

IPv6地址的组成和分类:

前缀位 + 接口标识符位 根据前缀长度判断前缀位和接口标识符位

  • 注意:
    1. IPv6地址中没有类的概念
      2.IPv4地址可以分为单播,组播,广播地址;而IPv6地址可以分为单播,组播,任播地址,没有广播地址!!!!

Pv6单播地址

分为全球单播地址(可理解为公网地址—IPv6)、本地链路地址、站点本地地址、回环地址、未指定地址、内嵌IPv4地址。

  • 全球单播地址:
    • 2xxx:xxxxx/3 ~ 3FFF: :FFFF
    • 2001::/16 IPV6因特网地址
    • 2002::/16 6to4过渡地址
  • 本地链路地址:FE80::/10 (前10位以FE80开头)
  • 站点本地地址:FEC0::/10(已经弃用,已部署的ipv6站点含有)
  • 未指定地址:0:0:0:0:0:0:0:0/128 => ::/128
  • 回环地址:0:0:0:0:0:0:0:1/128 => ::1/128
  • 内嵌IPv4地址:::192.168.30.1 => ::C0A8:1E01

IPv6组播地址

全部以FF开头

任播地址

任播地址的格式和全球单播地址相同,但是配置的时候需要注明这个地址是任播地址。

IPv6地址压缩原则

  1. 段内前导0压缩(也就是每段左边的0可以不写)
  2. 全0段压缩(某一段是4个0,可以用一个0替代)
  3. 连续N段全0段,可以用“::”表示

三大运营商使用的IPv6地址:

  • 电信是240e开头的(240e::/20)
  • 移动是2409开头的(2409:8000::/20)
  • 联通是2408开头的(2408:8000::/20)

一些特殊的IP地址

IPv4中:

0.0.0.0

不确定地址(任意地址)严格来说,0.0.0.0已经不算是一个地址了,而是一个集合——所有不清楚的主机和目的网络

255.255.255.255

限制广播地址,对本机来说这个地址表示本网段内所有主机(注意:这个地址不能被路由器转发!)

127.0.0.1

本地环回地址,也叫本机地址(Localhost),表示自己。

224.0.0.1

组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。

169.254.x.x

如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

10.x.x.x; 172.16.x.x~172.31.x.x; 192.168.x.x

私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。在Internet上,这类地址是不能出现的。

IPv6中

已经在IPv6中全部阐述,请查看IPv6内容