刚学无分类地址CIDR,有个地方没理解

如图所示,按照最长匹配原则那么ip数据报好像是没法传到172.1.4.128这个主机的

img

原来是我没仔细看书,地址块必须是连续的,这样就不会存在这个问题了。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7408984
  • 你也可以参考下这篇文章:CIDR表示IP地址
  • 除此之外, 这篇博客: IP地址及编址方案(计算机网络)中的 九、无分类编址 CIDR 的要点 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 1、IP地址由不定长的网络前缀主机号组成。

    2、子网掩码是一个网络的重要属性, 一个IP地址的网络前缀,由该地址及其子网掩码共同确定。

    3、网络前缀的CIDR记法可以用来标识一个网络或一个CIDR地址块。

  • 以下回答由chatgpt基于相关博客总结生成:

    解决无分类地址CIDR下的IP数据报传输问题的建议和解释:

    在无分类编址(CIDR)中,网络前缀都相同的连续IP地址组成一个CIDR地址块。根据CIDR规则,我们需要根据网络前缀找到正确的CIDR地址块,并确保IP数据报能够正确传输到目标主机。

    下面是解决该问题的步骤和建议:

    1. 确定目标主机的IP地址。

    2. 根据目标主机的IP地址,找到CIDR地址块,确定网络前缀和主机号。

    3. 使用Python的IP地址处理库(例如ipaddress模块)来操作IP地址。如果没有安装该模块,可以使用pip install ipaddress进行安装。

    4. 使用ipaddress模块中的ip_network()函数创建CIDR地址块对象,并将目标主机的IP地址作为参数。

    import ipaddress
    
    target_ip = "172.1.4.128"
    cidr_block = "172.1.4.0/24"
    
    network = ipaddress.ip_network(cidr_block)
    
    1. 使用ip_network对象中的contains()方法检查目标主机的IP地址是否在CIDR地址块范围内。如果包含目标主机的IP地址,则IP数据报能够正确传输到目标主机。
    if ipaddress.ip_address(target_ip) in network:
        print("IP数据报可以正确传输到目标主机")
    else:
        print("IP数据报无法传输到目标主机")
    

    通过以上步骤,可以使用Python代码解决无分类地址CIDR下的IP数据报传输问题。