gpt4 book ai didi

networking - 确定 IP 地址的网络和主机 ID 部分

转载 作者:行者123 更新时间:2023-12-04 22:24:04 25 4
gpt4 key购买 nike

我需要制定有关如何计算 IP 地址的网络和主机部分的算法。

  • 主机ID是公共(public)部分吗?网络 ID 是用于在本地网络中定位计算机的私有(private)部分吗?
  • 如果子网掩码的值小于 255,则 IP 地址中的相应八位字节必须分解为二进制,以确定数字的哪一部分是主机 ID,哪一部分是网络 ID。结果二进制数总是一分为二吗?

    (例如,IP 地址 192.168.33.22 和子网掩码 255.255.224.0 意味着持有 33 的八位字节分解如下:0010|0001 表示 0010 是网络 ID 部分,0001 是主机 ID 部分?)

  • 预先感谢您的任何帮助。

    最佳答案

    你把事情复杂化了。

    IPv4 地址(和子网掩码)仅显示在 dot-decimal notation 中只是作为使它们对人类更具可读性的一种手段。在计算机中,它们只是 4 字节的连续内存(例如,通常存储在 long int 中):

    存入电脑:11000000 10101000 00100001 00010110
    为人类显示:192. 168. 33. 22

    存入电脑:11111111 11111111 11100000 00000000
    为人类显示:255. 255. 224. 0
    1掩码中的 s 表示标识网络号的位,因此只需使用 bitwise AND operation提取网络号:

    地址 11000000 10101000 00100001 00010110 192.168.33.22
    掩码 11111111 11111111 11100000 00000000 255.255.224.0
    (和) - - - - - - - - - - - - - - - - - - - - - - - - -
    网络 11000000 10101000 00100000 00000000 192.168.32.0

    自推出CIDR (在此之前,地址的 class 表示网络/主机边界),主机通常只知道自己网络的掩码,因此无法将任意地址(例如 datagram 的目标地址)划分为网络和主机号。

    那么有什么意义呢?好吧,源主机仍然可以将目标地址及其(源)自己的网络掩码按位与。虽然该操作的结果不一定会产生有意义的网络号,但当且仅当它们在同一网络上时,它才会匹配源的网络号:

  • 如果它们匹配,则应该可以通过 link layer 到达目的地。 (例如,通过查找它的 MAC address ,可能通过广播 ARP 请求,然后将数据报封装在发送给该 MAC 的 frame 中);
  • 如果它们不同,源必须将数据报发送到 router那是在自己的网络上(使用上述过程到达该路由器);路由器将看到该帧是发给它的,但数据报不是,然后应该将数据报(封装在不同的帧中)转发到目的地。许多主机只知道一个路由器,它们的“default gateway”,尽管其他配置也是可能的。

  • 那些不能识别源网络号的地址位,显然由 0 表示s 在它的网络掩码中,可以被认为是它的主机号——尽管以与上面相同的方式提取它实际上既没有意义也没有用:即使在与自己网络上的主机通信时,也使用它的完整地址为了识别,永远不要单独使用主机号。

    也就是说,作为一个纯粹的学术练习,当然可以使用 complement 执行按位与运算。面具:

    地址 11000000 10101000 00100001 00010110 192.168.33.22
    ~掩码 00000000 00000000 00011111 11111111 0.0.31.255
    (和) - - - - - - - - - - - - - - - - - - - - - - - - -
    主机 00000000 00000000 00000001 00010110 0.0.1.22

    因此,为了解决您的问题:
  • Is the host ID the public part? Is the network ID the private part for locating the computer within the local network?



    整个地址是“公开的”;没有“私有(private)”部分。诸如 ARP(使用完整地址)之类的查找协议(protocol)用于在本地网络中定位计算机。
  • If the subnet mask is a value smaller than 255 the corresponding octet in the IP address must be broken down into binary to determine which part of the number is the host ID and which portion is the network ID. Is the result binary number always split in two?



    没有什么是“一分为二”的。之所以出现这种情况,是因为点十进制表示法旨在使 IPv4 地址对人类更具可读性(尽管该决定是在 CIDR 发明之前做出的,当时网络编号始终与字节边界对齐,因此从未导致明显的“ split "的十进制数)。
  • 关于networking - 确定 IP 地址的网络和主机 ID 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8651246/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com