当前位置: 代码迷 >> 综合 >> 技术资料 - IPv4类,子网,网络掩码,CIDR和NAT
  详细解决方案

技术资料 - IPv4类,子网,网络掩码,CIDR和NAT

热度:76   发布时间:2023-12-17 22:08:01.0

转载——http://www.zytrax.com/tech/protocols/ip-classes.html

以下文章是谷歌翻译的(有小错误啦),建议阅读原文章,

<warning>要理解这些东西,你需要熟悉十进制,十六进制和二进制表示法。如果你不喜欢这个东西坚持折纸或尝试这个记忆慢跑者 - 二进制,十进制和十六进制</ warning>

本说明的大部分内容涉及IP协议版本4中使用的IP地址,该协议使用32位IP地址,例如192.168.0.15。这种类型的地址几乎普遍写成IPv4。另请参阅IPv4标头,TCP,UDP和IPv4 ICMP消息,以获得无比好奇。

IPv4正在被IPv6(IP协议的第6版)取代,它使用128位地址并极大地扩展了Internet的地址范围。虽然CIDR,NAT和其他举措在90年代中后期对新IP地址的直接压力大大减少,但地区互联网注册管理机构(RIR)对IPv4地址耗尽的日益严峻的警告正在重新强调IPv6的部署。实际上,可以毫不夸张地说,为了加快IPv6迁移的步伐,正在加剧恐慌情绪。此外,无线世界采用IPv6可能是提供世界上似乎能够消耗的数量惊人数量的移动设备的唯一方式。

内容

  • 位编号约定
  • IPv4地址
  • IP地址类
  • 网络掩码和子网掩码
  • IP路由
  • 按位ANDing
  • 子网(网络掩码和子网掩码)
  • 多播和广播IP
  • 多播
  • IP地址使用
  • 无类别域间路由(CIDR)
  • IP前缀(斜杠)表示法 - 192.168.2 / 24
  • 专用IP地址分配
  • 网络地址转换(NAT)
  • 静态和动态IP地址
  • IPv4计算器

位编号

对于采用不同约定的各种标准机构,位编号可能非常混乱。以下是用于描述8位字节(八位字节)的有效和使用的位编号约定

记忆内容 0 0 0 0 0 0 0 0
位编号约定
从左到右0(IETF) 0 1 2 3 4 6 7
从左到右依次为基地1 1 2 3 4 6 7 8
从右到左的基地1(国际电联) 8 7 6 4 3 2 1
2的力量 7 6 4 3 2 1 0

始终检查在任何规范上使用的约定。我们已经屈服于不可避免的事情,本文档使用了从左到右的基础0(IETF)标准,因为因为互联网,它被广泛使用,并且希望同样广泛地理解。IETF对此标准的理由是它也明确地代表了所谓的网络秩序也就是说,位0首先进入网络,位1秒,依此类推。比特也倾向于按照他们继续的顺序离开网络。使用网络顺序是必要的,因为数据的内部(机器)表示可能差异很大(所有大端,小端无意义)但是当数据填充到网络上时,它必须是一致的顺序,可以由任何想要使用数据的系统,无论其内部表示如何。我们自己的偏好是2的表示法 - 但那是另一个故事......

 - IPv4

IP v4地址是32位值,允许4,294,967,296个唯一地址。记住这个大小的数字有点困难,因此传统的写入IP地址的方式是“点分十进制”格式,例如192.168.0.27。

“点分十进制”IP地址构造如下:

  • 32位地址包含4 x 8位字节(或八位字节)

  • 每个8位字节(八位位组)可以表示256(0 - 255)个十进制值。[字节的内部(机器)表示(八位字节)使用'十六进制'表示法,并且可以包含十六进制值00到FF。]

  • “点分十进制”只是将每个字节(八位字节)的8位值转换为其十进制值(始终在0到255范围内),并用点分隔每个值,使其更具可读性,例如,192.168 .2.5。

每个IP地址都有两个组件,一个是网络地址和一个主机地址(或id)。

0 31
网络地址 主机地址

网络地址部分和主机地址部分之间的边界由IP地址类NetMaskSubnetMask确定。在CIDR世界中,它仅由NetMask确定。

端口号

您偶尔会看到这样写的IPv4地址:

<span style="color:#000000"><span style="color:black">192.168.1.2:369
</span></span>

(冒号)表示以下是端口号的数量-在上述情况下369.该格式通常仅用于其中一个服务可以用非标准端口号,例如,许多网络配置系统,如桑巴swat,将使用非标准端口以避免与标准Web(HTTP)端口号80冲突。端口号为16位,小数范围为0到65535.在大多数系统中,特权或已知端口位于范围0 - 1023并且需要特殊访问权限,普通用户端口位于1024到65535范围内。

IP地址类

在无类别域间路由(CIDR)出现之前,世界是一个复杂的地方,我们有四类IPv4地址:A,B,C和D(名义上是E类,但出于所有实际目的,它没有被使用)。IP地址类由IP地址的TOP 4位设置定义(IETF表示法中的位0 -3)。IP类提供IP地址的主机和网络部分之间的分离,如下所述:

第0-3位 网络比特 主机位 子网掩码
一个 10.0.0.0 0XXX 8 24 255.0.0.0
172.16.0.0 10XX 16 16 255.255.0.0
C 192.168.22.0 110X 24 8 255.255.255.0
d 224.0.0.0 1110 - - -

笔记:

  1. x =不在乎

  2. D类地址专门用于多播协议,例如OSPF,IGMP等。

  3. A,B和C类是路由IP(但可以是PUBLIC或PRIVATE - 请参阅NAT)

  4. 术语子网掩码以上指的地址类标准模板。稍后我们将看到,使用CIDR,不同的网络掩码可以与任何IP类一起使用。

网络掩码和子网掩码

历史上,术语Netmask用于描述在Class边界上提取的任何掩码,Subnetmask描述了提取少于Class边界的网络掩码。自CIDR出现以来,很少使用子网掩码这一术语。网络掩码仅指一种分离IP地址的网络地址和主机地址部分的方法。它由反映地址网络部分大小的连续位数组成,通常用正常的点分十进制表示法编写,例如255.255.255.0(但现在可能更常用斜杠写入- 或IP-前缀 - 表示法)并在路由表中使用按位AND运算。

IP路由

在因特网中路由IP地址的过程使用在每个主机(PC,路由器或其他设备)中定义的路由表。标准路由表将如下所示:

网络地址 子网掩码 下一跳 笔记
192.168.0.0 255.255.255.0 1 192.168.0.0 本地网络 - 使用ARP表发送
127.0.0.0 255.0.0.0 1 127.0.0.1 本地环回/ Localhost
0.0.0.0 0.0.0.0 1 192.168.0.1 默认网关

使用上表的路由过程看似简单,可表示如下:

  1. 对于路由表中的每个条目:
    1. BITWISE和目标IP地址与网络掩码。(在按位和计算器中尝试。)

    2. 将结果与当前网络地址进行比较,如果它匹配网络地址并匹配地址位于本地网络上的下一跳地址 - 使用例如ARP(地址解析协议)直接路由到目标IP。

    3. 如果匹配网络地址但不匹配下一跳地址 - 使用ARP,如果它在本地网络上,则路由到下一跳。在上表中,只有两个条目满足最后一个测试127.0.0.1所有系统和默认网关都知道的环回地址(任何主机或PC的备用IPv4地址)。

    4. 如果结果不匹配移动到下一个路由表条目并从步骤1重复。

笔记:

  1. 默认网关条目是神奇的。BITWISE ANDed与0.0.0.0时的每个IP地址都给出了0.0.0.0的结果,这确保了我们总是为我们针对该表测试的每个IP地址获得至少一个匹配。由于显而易见的原因,默认网关必须是路由表中的最后一个条目!
  2. 当我们在同一个表中获得多个'命中'但很少使用时,该指标名义上是一种打破平局的方式。
  3. 使用'route print'从命令提示符显示您的PC路由表。

按位AND

术语BITWISE AND仅仅意味着对两个相等长度的实体进行AND 运算以创建第三个(结果)实体,按位表示这是逐位完成的。因此,如果第一实体和第二实体位是1,则从两个实体中的位1开始,然后将1放置在结果的相应位中。在所有其他情况下,结果中放置0。对每个位重复该过程,直到实体中的所有位都被AND'd。下面说明使用上面的路由表中的第一个条目进行逐位AND运算。

示例1:目标IP 192.168.0.3是本地的(我们按位和目标IP地址和条目??NetMask并将其与网络地址进行比较):

十进制 二进制 笔记
192.168.0.3 1100.0000.1010.1000.0000.0000.0000.0011 目的地IP
255.255.255.0 1111.1111.1111.1111.1111.1111.0000.0000 子网掩码
192.168.0.0 1100.0000.1010.1000.0000.0000.0000.0000 结果:Target和网络掩码中每个位置都有1个。匹配我们的网络地址(路由表中的 192.168.0.0 )并匹配NEXT HOP地址,因此必须是本地的(我们通常会使用ARP或其他一些本地协议来发送数据)。(在按位和计算器中尝试。)

示例2目标IP 172.16.5.13不是本地的:

十进制 二进制 笔记
172.16.5.13 1010.1100.0001.0000.0000.0101.0000.1101 目的地IP
255.255.255.0 1111.1111.1111.1111.1111.1111.0000.0000 子网掩码
172.16.5.0 1010.1100.0001.0000.0000.0101.0000.0000 结果:Target和网络掩码中每个位置都有1个。与我们的本地网络地址(路由表中的 192.168.0.0 )不匹配。我们再次尝试使用下一个路由表条目。(在按位和计算器中尝试。)

如果对默认网关条目运行相同的计算,您将始终获得匹配。与0.0.0.0进行AND运算时的任何IP地址将始终生成0.0.0.0,因此将匹配默认网关网络地址,但不会匹配下一跳地址,因此我们将其(通常再次使用ARP)发送到该地址。然后,网关使用其路由表来确定下一步该做什么,依此类推,直到数据包到达目的地为止。

该位与计算器可以让你尝试用一组IP地址,并显示二进制和点分十进制格式的结果。

子网

子网只是一种管理方便,它提供了一种通过更改类Netmask的值将地址的主机部分拆分成更小的部分的方法。完成此操作后,Netmask通常称为子网掩码。通常,我们有两个Net / Subnetmasks规则:

  1. 如果Net / Subnetmask中有1,它是网络地址的一部分,如果有零,则它是主机地址的一部分
  2. IETF标准现在坚持Net / Subnetmasks中的连续位

子网掩码的示例(提取小于类边界 - 具有类边界网络掩码的更多连续位)包括:

子网掩码 知识产权数量
255.255.224.0 8192
C 255.255.255.128 128
C 255.255.255.192 64
C 255.255.255.224 32
C 255.255.255.240 16
C 255.255.255.248 8
C 255.255.255.252 4

笔记:

  1. 要创建一个从192.168.0.192开始的32个地址的子网,我们将创建一个网络地址= 192.169.0.192的路由表条目,其网络掩码为255.255.255.224。

  2. 每个子网丢失两个IP地址用于网络地址和广播。这就是上表中缺少子网掩码 s 255.255.255.254和255.255.255.255的原因。

  3. 今天的网络/子网掩码通常使用斜杠 - IP-Prefix - 表示法编写,例如192.168.2.0/8。此表示法将网络地址和网络/子网掩码组合到一个实体中。

网络和广播地址

Net / Subnetmask创建的每个网络都由标准定义为具有两个特殊的(不可由普通主机或PC使用)IP地址,如下所示:

  1. 所有0的主机地址部分是网络/子网的网络地址
  2. 所有1的主机地址部分是网络/子网的广播地址

下表说明了这一点:

网络地址 子网掩码 知识产权数量 网络IP 广播IP
172.28.227.0 255.255.255.0 256 172.28.227.0 172.28.227.255
192.168.2.64 255.255.255.224 32 192.168.2.64 192.168.2.95
192.168.15.128 255.255.255.248 8 192.168.15.128 192.168.15.135

笔记:

  1. 从技术上讲,网络地址由所有0的主机地址部分(或主机ID)组成,其被解释为“this”(主机),而广播地址由所有1的主机地址部分(或主机ID)组成。被解释为'所有'(主持人)。

多播协议

有时候能够在不知道IP地址的情况下找到具有某些属性的所有主机是有用的。此过程通常使用混淆为多播的进程,主机使用专门分配的IPv4 D类地址 - 每个IPv4 D类地址由IANA分配给协议或设备类。因此,主机可以发送地址224.0.0.9并从具有所需属性(或者是同一类的成员)的主机接收响应 - 在这种情况下,它们支持RIP2路由协议。以下是多播地址及其相关协议或特征的示例:

组播地址 协议/特性
224.0.0.2 该子网的所有路由器
224.0.0.5 所有支持OSPF协议的路由器
224.0.0.22 所有支持IGMP协议的主机
224.0.12.0 - 224.0.12.63 Microsoft和MSNBC - 多播传输

笔记:

  1. 224.0.0.0 - 239.255.255.255范围内的地址都是多播地址。

  2. 在上面的示例中,Microsoft / MSNBC可以使用其任何多播地址来使用多播技术创建特定会议(或传输),甚至使用分配给它们的任何/所有64个地址运行多个并发会议。

CIDR和NAT

作为在90年代中后期释放并最大限度地利用可用的IPv4地址库存的行动的一部分,IETF采取了一些步骤,其中最重要的是:

  1. 无类别域间路由(CIDR),它基本上删除了IP地址类边界。

  2. 私有地址的分配(在RFC 1918中定义)可以多次重复使用。

  3. 网络地址转换(NAT) - 允许在通过NAT网关时从专用转换为公用。

CIDR

无类别域间路由(CIDR)基本上从IP地址中删除了Class的概念,并允许主管部门从任何方便的基本IP分配和路由任何有效子网,而不管其类别如何。我们的想法是,如果您想要一组128个IP地址,无论您是从C类还是从B类范围中获取它们都不重要。你只需要128个IP地址。同样,如果您想要512个IPv4地址,无论它们是从B类范围中获取还是两个C类范围再次都不重要。下表显示了两个32个地址子网,一个来自标称B类范围,另一个来自标称C类范围 - 发现差异!

网络 子网掩码
172.28.227.192 255.255.255.224
C 192.168.15.64 255.255.255.224

简而言之,CIDR世界中的关键因素将成为网络(基础)IP地址和网络掩码

IP前缀 - 斜杠格式(17.16 / 16)

为简化编写路由或过滤系统中使用的IP地址,现在通常使用斜杠(更恰当的IP前缀)表示法定义IP地址列表。SLASH(/)的LEFT的IP地址是网络(基础)IP地址,SLASH(/)的RIGHT的数字(1到32)是网络掩码中的连续1位的数量。因此,192.168.2.0 / 24 将具有包含24个连续位的相关网络/子网掩码或点分十进制格式的255.255.255.0。下表说明了这种表示法:

行号 IP前缀(斜杠)表格 网络基础IP 子网掩码 知识产权数量
1 192.168.32 / 19 192.168.32.0 255.255.224.0 8192
2 172.28.127.64/27 172.28.127.64 255.255.255.224 32
3 172.28.127 / 24 172.28.127.0 255.255.255.0 256
4 172.28.127.130/25 172.28.127.128 255.255.255.128 128
10.0 / 16 10.0.0.0 255.255.0.0 65535
6 10.0.2.2/32 10.0.2.2 255.255.255.255 1
7 10.2.3 / 8 10.0.0.0 255.0.0.0 地段!(16777216)
8 10/8 10.0.0.0 255.0.0.0 同样的地段!

笔记:

  1. 在IPv4计算器中试验IPv4 /前缀。

  2. 在上面的示例中 - 如果您没有睡着 - 您将看到我们从C类IP地址(第1行)中提取了多个C类地址,并从B类地址(第3行)中提取了子网化的子类C地址说明了CIDR让我们变得多么灵活。

  3. 解释(或解析)IP地址的软件,如BIND(DNS),OpenLDAP(LDAP)等,在允许指定IPv4地址的虚线元素数量方面非常灵活,如第1,3和5行所示。实质上,只需要明确定义IPv4网络基础所需的最少数量的虚线元素。在应用IP前缀/斜杠值(网络掩码)创建网络基础IP之前,所有缺少的元素都将替换为零。在上表中第4行的情况下,必须存在所有4个虚线元素。如果使用172.28.127 / 28,则网络基站IP将为172.28.127.0 - 不是所需的结果。通常,规则是如果斜杠值是8的倍数,则只需提供该数量的虚线元素,如果它不是8的倍数,则必须提供一个。从而,如果斜杠值为16(16/8 = 2剩余0),则只需要两个虚线元素。如果斜杠值为25(25/8 = 3剩余1),则需要4个虚线元素。指定比所需更多的虚线元素永远不会成为问题,只要得到的结果范围如第7行和第8行所示。

  4. 左侧使用的IP地址可以是最终网络中的任何IP。网络基础IP由BITWISE和左侧IP计算,网络掩码由斜杠值导出。

  5. 第6行是一种罕见但可接受的格式,用于显示单个地址 - 更常见的是简单地写为10.0.2.2。

专用网络地址

IETF定义了一系列IP范围(在RFC 1918中),可以由其专用网络上的任何用户/组织自由使用。这些地址可能不会在公共互联网上使用,并且所有公共互联网网关(路由器)都应该静默地丢弃流量(或者,通常使用ICMP消息拒绝它们)。

显然,在大型用户网络上,专用IP地址可能仍然在专用网络内部通过路由器。

使用专用地址意味着许多组织可以重复使用相同的IP地址(节省数百万个IPv4地址),并且只有当流量发送到PUBLIC网络时,才必须将其(通过NAT)转换为公共地址。

可自由使用的私有(不可公共路由)地址

开始 结束 斜线(IP前缀)
一个 10.0.0.0 10.255.255.255 10/8
172.16.0.0 172.31.255.255 172.16 / 12
C 192.168.0.0 192.168.255.255 192.168 / 16

您使用哪个系列完全取决于您。继续,宠坏自己(和苹果一样),给自己一个完整的A级地址!对于连接到DSL或电缆调制解调器的家庭网络,通常会看到C类范围为192.168.1 / 24或192.168.2 / 24。然而,这只是一种惯例,可以使用任何合适的范围。RFC 1918和RFC 3330中定义了保留和分配的IP地址范围的完整列表(您可以从IETF获取RFC )。

网络地址转换(NAT)

网络地址转换(NAT)是指私有IP地址(可以在用户的??专用网络中自由使用和路由)可以映射(或转换)到可以通过公共Internet路由的公共IP地址的过程。 。

NAT过程通常位于网络边缘的路由器或代理功能中,例如DSL或电缆调制解调器。最初的NAT RFC(RFC 1631)是一个看似小的规范,它彻底改变了IP地址的使用方式。如果需要,NAT可以将无限数量的私有IP地址映射(或转换)为单个公共IP地址,或者可以使用有限数量的公共IP来映射大量私有IP地址。

一个写得很好的NAT系统也可以充当“穷人”防火墙,因为它具有额外的优势,即从组织外部看不到内部IP地址,即使它们是互联网路由器,也应该将数据包地址丢弃到专用IP地址。NAT通常是互联网的传统客户端服务器式应用程序(例如Web访问,FTP和电子邮件)的“好东西”。

注意:随着互联网越来越多地转向对等应用程序(如IM和VoIP),这些应用程序需要永久可见的可在一段合理时间内保持稳定的直接可寻址IP,因此NAT变得越来越有争议。可以公平地说,那些认为NAT通过提供有限的IPv4地址空间的重用来保存互联网的人和那些认为它本身就是邪恶的人之间存在着严重的鸿沟,因为它隐藏了最终用户,迫使各种令人毛骨悚然的像STUN这样的kludges。

术语PAT(端口地址转换)与NAT结合使用。它指的是NAT服务可以将端口号映射到特定专用IP地址的过程。这允许单个公共IP地址支持内部(专用IP)主机上的一系列公共服务(Web,电子邮件,FTP等)。例:

外部IP:端口 服务 翻译的知识产权 笔记
192.168.2.0:80 HTTP(Web) 172.16.1.1 网络服务器
192.168.2.0:21 FTP 172.16.1.2 FTP服务器
192.168.2.0:25 SMTP 172.16.1.17 邮件服务器
192.168.2.0:? 任何其他港口 正常NAT 应用正常的NAT转换规则

注意:上面显示的外部IP:端口使用专用地址仅用于说明所涉及的过程并避免使用分配的公共IP地址 - 原则仍然适用。

静态和动态IP地址

IP地址可以由服务提供商静态分配或动态分配。动态IP地址具有以下特征:

  1. 当用户连接到互联网时,将分配单个IP地址。

  2. 服务提供商通常会定期更改IP地址 - 通常每12到24小时之间,显着更长的时间越来越常见。

  3. 动态IP地址可用于传出(客户端 - 服务器)活动,例如Web浏览,收集电子邮件和类似活动。

  4. 无法使用动态IP地址(以及允许这样做的“kludges”)来托管需要DNS中定义的固定IP的网站和电子邮件服务。

静态(固定)IP地址具有以下特征:

  1. 一个或多个固定IP地址永久分配给用户(并且通常会产生费用)。

  2. 静态IP地址不会更改(除非您更改服务提供商)。

  3. 静态IP地址可用于传出(客户端 - 服务器)活动,例如Web浏览,收集电子邮件和类似活动。

  4. 静态IP地址可以用于托管网站,并需要固定IP的DNS定义的电子邮件服务。

  5. 静态地址数量有限的可与结合使用NAT许多PRIVATE映射到公共地址。

这里有一个更长的解释。

  相关解决方案