• 请不要在回答技术问题时复制粘贴 AI 生成的内容
daijinming
V2EX  ›  程序员

交流一个 IP 地址,计算 10.1.1.30/8 的 网段区间

  •  
  •   daijinming · Dec 11, 2020 · 4451 views
    This topic created in 1981 days ago, the information mentioned may be changed or developed.

    又拿起 TCP/IP 教程学习起来,这种 IP 地址的写法感觉还不是太熟悉,哪位能给分析下,这个 IP 如何计算网段区间

    27 replies    2020-12-12 19:19:05 +08:00
    lululau
        1
    lululau  
       Dec 11, 2020
    slash 后面的数是个十进制表示的数,它表示的是 IP 数值的二进制表示的位数
    Te11UA
        2
    Te11UA  
       Dec 11, 2020
    百度 ip 地址计算
    这些工具都很明晰地告诉你是怎么算的
    ThirdFlame
        3
    ThirdFlame  
       Dec 11, 2020
    10.0.0.0~10.255.255.255
    wql
        4
    wql  
       Dec 11, 2020 via Android
    /8 就是点分十进制的第一段,10.0.0.0-10.255.255.255
    Wincer
        5
    Wincer  
       Dec 11, 2020
    python:
    ```
    from ipaddress import IPv4Network
    net = IPv4Network("10.1.1.30/8", strict=False)
    >>> net.network_address, net.broadcast_address
    (IPv4Address('10.0.0.0'), IPv4Address('10.255.255.255'))
    ```
    Dvel
        6
    Dvel  
       Dec 11, 2020
    子网掩码的另一种写法。
    写 x.x.x.x/8 和 255.0.0.0 是一样的。
    6IbA2bj5ip3tK49j
        7
    6IbA2bj5ip3tK49j  
       Dec 11, 2020
    /8 就是前 8 位不变动,只变后面 24 位。
    /24 就是前 24 位不动,只动后面 8 位,最常见就是 192.168.1.x/24 。
    ccbikai
        8
    ccbikai  
    PRO
       Dec 11, 2020
    关键字 IP CIDR
    9LCRwvU14033RHJo
        9
    9LCRwvU14033RHJo  
       Dec 11, 2020
    3 、4 、5 、6 楼都对。
    9LCRwvU14033RHJo
        10
    9LCRwvU14033RHJo  
       Dec 11, 2020
    漏了一个,7 楼也对
    sdh
        11
    sdh  
       Dec 11, 2020 via Android
    9,10 楼也对
    9LCRwvU14033RHJo
        12
    9LCRwvU14033RHJo  
       Dec 11, 2020
    10 PRINT "对"
    20 GOTO 10
    JJstyle
        13
    JJstyle  
       Dec 11, 2020 via iPhone
    8 楼也算对这是 ip 或者 ip 范围的一种表达方式,这种表达方式就叫 cidr
    fasionchan
        14
    fasionchan  
       Dec 11, 2020   ❤️ 2
    来关注我的网络协议教程,快写到 IP 了: https://www.yuque.com/coding-fan/network
    handwork
        15
    handwork  
       Dec 11, 2020
    综上,楼上都对!
    mcone
        16
    mcone  
       Dec 11, 2020   ❤️ 1
    @fasionchan 要是真的有干货,不需要每个回帖都推广的,你这样每个回帖都是推广,还推广不到点子上(例如你这个链接哪里解决楼主的问题了?),只会引来更多人的反感。

    @livid 这个 ID 的发帖和回帖放在一起,似乎可以做一个很好的 spam pattern 了……
    Livid
        17
    Livid  
    MOD
    PRO
       Dec 11, 2020   ❤️ 1
    @mcone 谢谢举报。这种就是这里所描述的链接搬运:

    https://www.v2ex.com/help/spam

    看了一下,那个账号之前已经有过违规记录,这次就彻底 ban 了。
    iptables
        18
    iptables  
       Dec 11, 2020
    mijazz
        19
    mijazz  
       Dec 11, 2020
    10.1.1.30 参考 4 楼的说法, 这四个数字是为了给人能看清楚来划分的.
    点分十进制的意思就是, ipv4 地址共有 32bit 组成, 分出来 4 段, 所以每一段长度为 8bit, 最高表示十进制的 255. 并且根据 ABC 类地址来划子网
    10.1.1.30 其实是
    0000 1010 0000 0001 0000 0001 0001 1110 来组成的
    每 8bit 取一断点化十进制就是 ipv4 地址的常见形式.
    这个时候为了建立子网来进行路由, 进而有子网掩码这东西, 假设你的子网掩码(subnet mask)在这里是 255.0.0.0
    其实就是
    1111 1111 0000 0000 0000 0000 0000 0000
    上述两个二进制, 你如果对他们做 AND 运算, 你得到的就是 5 楼给你的 IPv4Address
    0000 1010 0000 0000 0000 0000 0000 0000 -> 10.0.0.0
    , 我没记错的话他叫网络地址, 在这个 10.0.0.0/255.0.0.0 的网络之外, 它只是一个大子网, 对于外部来说会减少路由表的 entry 增加效率, 因为我只需要知道这个网络下对应的 ip 硬怼给它就行了, 没必要一个 ip 多开一个路由表 entry.
    相对应的网络里最后一个主机号 / 或者是网络号后的 bit 全填 1, 就是用于 broadcast, 在这里就是
    0000 1010 (第 9 位开始全是 1) 1111 1111 1111 1111 1111 1111 -> 10.255.255.255
    所以有 10.0.0.0/255.0.0.0 <=>10.0.0.0/8 <=> 10.0.0.0 ~ 10.255.255.254
    然后 VLSM/Variable Length Subnet Mask, 因为发现直接通过 ABC 类地址划出来的子网太浪费?
    然后就有引入 CIDR/无分类编址
    划分网络 /辨认主机可以使用网络号和主机号, 此时他们两个的分界线就是 /后面的这个十进制数 8
    10.0.0.0/8 <=> 10.0.0.0/255.0.0.0
    如果是 /20, subnetmask 的前 20 位就都是 1, 假设里面有个地址是 172.17.3.1, 按你题目的表示就是 172.17.3.1/20
    1010 1100 0001 0001 0000 0011 0000 0001 (ip)
    1111 1111 1111 1111 1111 0000 0000 0000 (/20) <=> 255.255.240.0
    做 AND 可以很容易得到
    1010 1100 0001 0001 0000 0000 0000 0000 -> 172.17.0.0(网络号)
    还是上面的操作, 第 21 位开始全是 1
    1010 1100 0001 0001 0000 (21 位开始) 1111 1111 1111 -> 172.17.15.255
    所以
    172.17.0.0/20 <=> 172.17.0.0/255.255.240.0 <=> 172.17.0.0 ~ 172.17.15.255
    小弟还是个在校大学生 hhhh 如果错误请指出
    iptables
        20
    iptables  
       Dec 11, 2020
    IP 地址 10.1.1.30/8

    /8 也就是 255.0.0.0 (二进制前 8 位为 1,后面都是 0 )
    子网掩码和 IP 转换成二进制,分别是

    11111111 . 00000000 . 00000000 . 00000000
    00001010 . 00000001 . 00000001 . 00011110

    按位与( AND )运算:
    00001010 . 00000000 . 00000000 . 00000000
    也就是十进制的 10.0.0.0,得到网络地址

    子网掩码等于 0 的部分是后 24 位,因此将网络地址后 24 位设置为 1,即
    00001010 . 11111111 . 11111111 . 11111111
    也就是十进制的 10.255.255.255 ,得到广播地址
    Tink
        21
    Tink  
    PRO
       Dec 11, 2020
    cidr 这种写法就是用 /后面的数字控制前面 ip 地址的掩码,说简单点就是前几位可以变
    KenGe
        23
    KenGe  
       Dec 11, 2020
    proxychains
        24
    proxychains  
       Dec 12, 2020   ❤️ 1
    @fasionchan 哇,我一直在追更你的文章呐,不过需要注册就没回复.期待大佬的文章
    baobao1270
        25
    baobao1270  
       Dec 12, 2020
    Address: 10.1.1.30 00001010 .00000001.00000001.00011110
    Netmask: 255.0.0.0 = 8 11111111 .00000000.00000000.00000000
    Wildcard: 0.255.255.255 00000000 .11111111.11111111.11111111
    =>
    Network: 10.0.0.0/8 00001010 .00000000.00000000.00000000 (Class A)
    Broadcast: 10.255.255.255 00001010 .11111111.11111111.11111111
    HostMin: 10.0.0.1 00001010 .00000000.00000000.00000001
    HostMax: 10.255.255.254 00001010 .11111111.11111111.11111110
    Hosts/Net: 16777214 (Private Internet)

    http://jodies.de/ipcalc?host=10.1.1.30&mask1=8&mask2=
    xyjincan
        26
    xyjincan  
       Dec 12, 2020 via Android
    https://dev.aduo.xyz/tools/ip-tools.html

    写了个计算器,不想再算了
    CrazyBoyFeng
        27
    CrazyBoyFeng  
       Dec 12, 2020
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1393 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 157ms · UTC 17:14 · PVG 01:14 · LAX 10:14 · JFK 13:14
    ♥ Do have faith in what you're doing.