1. 概述
1.1 基础信息

IP地址,全称是互联网协议地址(Internet Protocol Address),可以看作是互联网上的门牌号码。

IP地址是TCP/IP网络中的主机(或称为节点) 的惟一地址。IP地址是网络层的逻辑地址。

IP地址是一组32位长的二进制数字,用点分十进制表示(如8.8.8.8)。

IP地由网络地址主机地址组成。

IP地址可由互联网名字和数字分配机构ICANN进行分配。

1.2 表示方法

这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法(Dotted decimal notation)”。

例如,一个B类地址表示为: 140.252.13.33

2. IP地址
2.1 IP地址构成

网络网络层之(1)IPv4地址-LMLPHP

各地址的分布情况:

注意:

  • 网络号全0的是个保留地址,表示本网络。
  • 全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址。
  • 全1的主机号表示该网络上所有的主机。

网络网络层之(1)IPv4地址-LMLPHP

有三类私有地址

  • A类地址:10.0.0.0/8 (10.0.0.0 - 10.255.255.255 )
  • B类地址:172.16.0.0/12 (172.16.0.0 - 172.31.255.255)
  • C类地址:192.168.0.0/16 (192.168.0.0 - 192.168.255.255)

注意:

  • 网络地址不能全为0,也不能全为255:全为0没有网络,全为255用作子网掩码。
  • 主机地址中不能全为0,也不能全为255:主机地址全为0用来表示网络地址,全为255用作广播。
2.2 特殊地址

IPv4地址分为几个特殊的范围,用于不同的特殊用途。下面以表格形式列出这些特殊用途的IPv4地址:

这些特殊用途的IPv4地址范围是根据互联网工程任务组(IETF)和互联网号码分配局(IANA)的标准定义的。

  • 私有地址范围(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)在内部网络中广泛使用。

  • 回环地址(127.0.0.0/8)并不指向网络上的实际设备,而是指回设备本身,通常用于测试和开发。

  • 链路本地地址(169.254.0.0/16)通常用在没有DHCP服务器分配IP地址时,设备自动分配的临时地址。

  • 多播地址(224.0.0.0/4)用于同时向多个目的地发送信息,对于流媒体传输和一些网络协议非常有用。

  • 广播地址(255.255.255.255/32)用于网络上的所有设备,通常用于网络初始化或者寻找服务器等场景。

2.3 组播地址

一个组播组所覆盖的网络范围通常是下面几种:

  1. 节点本地(Node-local):这是最小的网络范围,节点本地仅仅意味着通信限定在单个设备内部。在这种情况下,数据不会离开设备,例如,一个进程与同一设备上的另一个进程通信。

  2. 链路本地(Link-local):链路本地地址用于在同一物理或逻辑链路上的设备之间的通信。这些地址通常在设备启动时自动配置,不需要额外的路由信息即可实现本地网络内的设备发现和通信。

  3. 站点本地(Site-local):站点本地是指在单一组织内部或者一个局域网中。类似于一个校园或公司内部网络,站点本地地址使得组织内部的设备可以相互通信,而无需通过公共Internet。

  4. 全球地址(Global):全球地址是在整个Internet上唯一的,它们允许来自世界任何地方的设备进行通信。全球地址是由互联网地址分配机构(如ICANN)分配和管理的。

  5. 管理范围地址:管理范围地址指一个网络区域内已手动配置到路由器的地址,路由器本身可以作为一个管理网络的边界。

这些网络范围之间的关系主要是通过路由和地址解析来维护。例如,链路本地地址只能在同一链路上通信,而全球地址可以路由到Internet的任何地方。站点本地则介于两者之间,仅在一个站点内部路由。

在IPv6中,有专门的组播地址范畴,它包括节点本地、链路本地和站点本地组播。

组播服务模型是指定如何在网络中有效地传输数据包到多个接收者的一组规则和结构。下面介绍三种主要的组播服务模型:

  1. 任意源组播(Any-Source Multicast, ASM):ASM 是最传统的组播模型,允许接收者从任何发送者(又称为“源”)接收数据,只要发送者正在发送数据到一个组播组的地址。在ASM模型中,接收者不需要知道确切的源地址;它们只需要加入特定的组播组。网络设备如路由器负责管理源的信息并确保数据能够从多个源路由到接收者。ASM适用于许多应用,如在线会议和股票市场数据的分发。

  2. 源特定组播(Source-Specific Multicast, SSM):SSM 是对ASM模型的一个改进,它要求接收者不仅加入一个组播组,还要指定它们希望接收数据的特定源地址。这意味着SSM只支持从单一源到多个接收者的组播,这样可以提供更好的安全性和效率,因为网络不必处理来自不相关源的数据。SSM非常适合像IP电视(IPTV)这样的应用,因为它可以确保只有授权的信号源可以发送内容到用户。

  3. 基于单播前缀的组播(Unicast-Prefix-Based Multicast):基于单播前缀的组播(UBM)是一种高效的组播地址分配方式,它利用现有的单播地址前缀来创建组播地址。这种方式允许组播地址反映出网络的单播拓扑结构,从而简化了组播路由。

这些模型之间的主要区别在于它们如何管理组播组的成员资格和源地址。ASM允许来自任何源的数据,SSM限制数据只能来自预先指定的源。

IPv4组播地址是一组特定的IP地址,用于在网络中实现组播通信。这些地址范围从224.0.0.0到239.255.255.255,如下所示:

最后两个范围是为组织内部或用户自定义的组播应用而保留的,它们通常不会在互联网上使用。

2.4 广播地址

IPv4的广播地址是特定于IP网络子网的一个地址,它用于在该子网内的所有设备之间发送信息。每个子网中的设备(主机、路由器等)都会监听这个地址,并对发送到此地址的数据包进行处理。

广播地址的主要用途是一次性向网络中的所有主机发送数据,而不需要单独发送给每个主机,这样可以大大节省网络资源和时间。

在IPv4中,广播地址总是由主机部分的位全部设置为1来形成。为了确定一个子网的广播地址,需要知道该子网的网络地址和子网掩码

广播地址是用来向一个子网内的所有主机发送数据的,一般也被称为定向广播,所以网络设备通常不允许将广播地址分配给任何单一设备。

此外,特殊地址255.255.255.255则被保留为本地网络广播,路由器不会转发这类报文(默认情况下也不转发子网广播报文)。

注意,IPv6没有广播地址,只有IPv4存在广播地址,在IPv6中仅仅使用组播地址

2.5 IPv4广播和以太网广播

IPv4广播报文和以太网(Ethernet)广播MAC地址之间存在着直接的关联关系。

在数据链路层(以太网层),以太网广播地址是ff:ff:ff:ff:ff:ff,这个地址用于指示数据帧(frame)是发送给同一个局域网(LAN)中所有设备的。当网络层的IPv4报文需要进行广播时,这个报文将被封装到一个以太网帧中,其目标MAC地址就被设置为以太网广播地址ff:ff:ff:ff:ff:ff

这样做的原因是因为网络设备(如交换机和网卡)在接收到目标地址为ff:ff:ff:ff:ff:ff的以太网帧时,会知道这是一个广播帧,并将其转发给所有连接到设备的端口(除了接收端口),从而确保局域网内的所有设备都能收到这个帧。

在特定情境下,可能会使用其他形式的广播地址。例如,在无线网络(Wi-Fi)中,广播地址可能与有线以太网的广播地址有所不同。然而,在标准以太网环境中,IPv4的广播通常与MAC地址ff:ff:ff:ff:ff:ff相关联。

在本地网络中,广播报文不需要依赖路由器进行转发,只依赖链路层广播机制,因此,除非终端主机显式禁用,否则广播报文将正常工作

2.6 任播地址

任播(Anycast)地址是IPv4地址分配中的一个特殊概念,它允许多个网络接口(可能分布在不同的地理位置)共享同一个IP地址。

在网络中,数据发送到任播地址时,路由器会根据路由协议决定将数据包传送至距离发送者最近的接收者。这种机制使得任播非常适合于负载均衡和冗余,特别是在提供DNS服务、CDN(内容分发网络)或其他分布式服务时。

任播地址并没有一个固定的范围,而是在全球范围内由不同的服务提供商实现。在实际操作中,任何公网IP地址都可以被配置为任播地址,而它的“任播”属性源自于在多个地点配置了相同的IP地址,并在网络上通过路由协议宣告这一点。

任播的一个著名应用是在全球范围内部署的根DNS服务器。例如,IPv4根DNS服务器中的一个地址“198.41.0.4”会在世界各地的多个DNS服务器上配置,当设备尝试访问这个根服务器时,它实际上会连接到距离最近的一个服务器,这样可以提高解析效率,同时也增强了服务的可靠性。

3. 划分子网
3.1 子网络号

子网(Subnet)是在TCP/IP网络上,用路由器连接的网段。同一子网内的IP地址必须具有相同的网络地址。

原有两级划分方式有以下缺点:

  • IP地址利用率很低,A类地址有1000万以上主机,一个企业很难用完。
  • 给每一个物理网络分配一个网络号会使得路由表变得太大而降低网络性能。
  • 两级IP地址不够灵活。

格式如右:IP地址={<网络号><子网号><主机号>}

使用子网掩码来确定网络地址

  • 子网掩码(Subnet Mask)用来确定IP地址中的网络地址部分。其格式与IP地址相同,也是一组32位的二进制数。
  • 子网掩码中为“1”的部分所对应是IP地址中的网络地址部分,为“0”的部分所对应是IP地址中的主机地址部分。

网络网络层之(1)IPv4地址-LMLPHP

三类标准网络的缺省子网掩码

  • A类地址:255.0.0.0
  • B类地址:255.255.0.0
  • C类地址:255.255.255.0
3.2 子网掩码

IPv4子网掩码主要用于划分IP地址为网络地址和主机地址两部分,确定一个IP地址属于哪个子网。

在IPv4中,子网掩码通常通过点分十进制形式表示,但为了简化和清晰起见,也常常采用前缀表示法。

前缀表示法通过在IP地址后加一个斜杠(/)再跟上一个数字来实现,这个数字即表示子网掩码中连续的“1”的位数。这些“1”位于子网掩码的最左侧,对应的网络部分,其余部分为“0”,对应的是主机部分。这样的表示法直观地表明了网络部分的大小和子网的划分。

举例来说:

  • 一个标准的“Class C”类型的子网掩码255.255.255.0,在前缀表示法中表示为/24。这意味着该子网掩码的前24位被设置为“1”,用于网络地址,而剩下的8位用于主机地址。

  • 如果有一个子网掩码255.255.255.192,它在前缀表示法中就是/26。这是因为255.255.255.192的二进制表示是11111111.11111111.11111111.11000000,前26位为“1”。

  • 另一个例子,子网掩码255.255.248.0在前缀表示法中是/21,因为它的前21位为1,其二进制表示是11111111.11111111.11111000.00000000

在需要划分多个子网、进行路由聚合时,前缀表示法提供了一种快捷且直观的方式来识别和管理网络。

4. VLSM变长子网掩码

可变长度子网掩码(Variable Length Subnet Mask,简称VLSM)是一种在IPv4网络中使用的技术,它允许网络管理员将一个IP地址类别划分成大小不一的子网。这与传统的固定长度子网掩码(Fixed Length Subnet Mask,FLSM)不同,后者将同一IP地址类别划分成大小相等的子网。VLSM提供了更加灵活的网络设计和地址空间利用方式,可以更有效地分配IP地址资源。

传统的子网掩码通过固定长度来分隔IP地址的网络部分和主机部分。例如,在一个/24网络中,所有的子网都会有256个地址(包括网络地址和广播地址),无论这些地址是否全部被使用。

VLSM(变长子网掩码) 则提供了在一个主类(A类、B类、C类)网络内包含多个子网掩码的能力,可以对一个子网再进行子网划分:

  • 对IP地址更为有效的使用
  • 应用路由归纳的能力更强 1

举两个例子来说明VLSM的应用:

  1. 设想一个组织有三个部门,A部门需要130个地址,B部门需要60个地址,C部门需要30个地址。如果使用固定长度子网掩码,管理员可能会将一个/24网络分为四个相等的子网,每个子网提供64个地址(/26),但这样会造成地址的浪费。使用VLSM,管理员可以更高效地分配地址空间:为A部门分配/25子网(提供128个地址),为B部门和C部门分别分配/26子网(提供64个地址)。

  2. 假设有一个IP地址范围192.168.1.0/24,需要划分出不同大小的子网。可以这样操作:为需要最多地址的子网首先分配地址空间,比如将192.168.1.0/25(提供128个地址)分配给第一个子网;然后为下一个大小的子网分配192.168.1.128/26(提供64个地址);最后,为最小的子网分配192.168.1.192/27(提供32个地址)。这样的划分充分利用了每一部分的地址空间,减少了浪费。

可变长度子网掩码的使用,需要路由协议支持VLSM,比如RIP version 2、OSPF、EIGRP等,这样网络上的路由器才能正确理解和传递不同大小子网的路由信息。

5. 无类型域间路由(CIDR,Classless Inter-Domain Routing)
5.1 CIDR介绍

CIDR是在1990年代初提出的一种IP地址分配和路由寻址的方法。

CIDR的核心思想是提供一种灵活的地址分配方式,它摒弃了传统的按类别划分网络(如A类、B类和C类网络)的方法,改为“无类别”的地址分配。

CIDR使用斜线记法(如192.168.0.0/24)来表示网络地址和它的子网掩码。

在现代的IPv4网络中,CIDR是主流的地址分配和路由寻址方法,而VLSM作为CIDR的一个应用,实际上并没有被单独区分出来使用。事实上,VLSM的确是CIDR的一个子集,或者说是建立在CIDR基础上的一种实践方式

对于IPv6地址,则是直接采用CIDR来管理,自然也就没有网络类别和子网划分概念。

主要特点:

  • 消除了传统的A类,B类和C类地址以及划分子网的概念。使用网络前缀来指明网络。

    Ip={<网络前缀>,<主机号>}

  • CIDR把网络前缀都相同的连续IP组成一个“CIDR地址块”。

划分举例

使用32比特的块中最低的地址和32比特的掩码来表示范围。

CIDR地址块中一块地址:128.14.35.7/20:

标识一个CIDR的块即需要地址也需要掩码,使用A.B.C.D/n 来表示。

A.B.C.D表示该地址块的最低地址,n表示掩码的长度。

CIDR的选路使用最长匹配选路,因为CIDR支持超网(supernetting)

超网可以理解为:比如原来要分配给一个企业B类的地址,现在可以分一块连续的C类地址来代替

5.2 分层路由聚合

路由聚合,又称为路由汇总,是一种减少全局路由表大小的技术,它通过将多个网络地址合成为一个更大的、单一的路由表项来实现

在实际应用中,CIDR可以将一系列连续的IP地址范围整合为一个单一的路由表项

这样,一个路由器就可以通过一个聚合路由条目来转发到这四个网络的数据,而不是需要四个单独的条目,显著减少了路由表的大小。

而分层路由思想则是网络设计中的一种基本原则,它通过将网络划分为不同层次的子网来实现管理和路由的简化。这种思想让整个网络的结构更加清晰,就像将一个大城市划分为不同的区和街道,每个区和街道都有自己的管理机构和地址系统。

在分层路由设计中,顶层路由器负责处理到其他网络的路由,而底层路由器则处理本地子网内部的路由。这种设计减轻了顶层路由器的负担,并且限制了路由更新的范围。

网络网络层之(1)IPv4地址-LMLPHP

如上图所示,如果随机构建网络拓扑,则顶层路由器需要包含全部的路由选项,通常需要6个路由条目,即5个主机路由以及一个默认出口路由(本地路由和一些特殊路由忽略不计)。

如果按照拓扑敏感的方式构建网络,则可以减少顶层路由的表项,因为底层子路由都可以被划入到同一个子网中。

6. IP地址分配
6.1 单播地址分配

为了统筹全球的IP地址资源,成立了一个组织叫做互联网号码分配机构(Internet Assigned Numbers Authority,IANA)。它负责全球IP地址的分配、管理以及DNS根域的维护工作。

IANA并不直接将IP地址分配给终端用户,而是将大块的IP地址资源分配给下一级的组织:区域互联网注册机构(Regional Internet Registries,RIR)。全球共有五个RIR,分别负责不同的地理区域,它们是:

  • 亚太网络信息中心(APNIC),亚洲和太平洋地区。
  • 欧洲网络协调中心(RIPE NCC),欧洲、中东和中亚。
  • 美国互联网号码注册机构(ARIN),北美洲。
  • 拉丁美洲和加勒比网络信息中心(LACNIC),拉丁美洲和一些加勒比岛屿。
  • 非洲网络信息中心(AfriNIC),非洲。

RIR负责在它们的区域内,将IP地址进一步分配给互联网服务提供商(Internet Service Providers,ISP)和一些大型组织。ISP再将这些IP地址分配给最终用户,比如企业和个人。

在IP地址分配上,有两种主要的方式:

  • 供应商独立地址(Provider Independent,PI),是直接从RIR分配给最终用户的,这意味着用户可以不依赖于特定的ISP。这种地址更具灵活性,适合那些对网络稳定性和自控性有高要求的大型企业。
  • 供应商聚合地址(Provider Aggregatable,PA),是ISP从RIR获得的一大块IP地址资源中划分出来的,分配给最终用户。这种方式下,用户的IP地址与ISP紧密相关,如果更换ISP,用户通常需要更换IP地址。
6.2 WHOIS查询

在实际应用中,如果想了解一个IP地址的详细信息,可以使用whois查询服务。

whois是一个查询网络中域名和IP地址注册信息的协议,可以查看这个地址的注册者信息、联系方式以及它被分配或者注册的时间等信息。下面是一个查询例子(Whois IP 8.8.8.8):

#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/resources/registry/whois/tou/
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/resources/registry/whois/inaccuracy_reporting/
#
# Copyright 1997-2024, American Registry for Internet Numbers, Ltd.
#


NetRange:       8.8.8.0 - 8.8.8.255
CIDR:           8.8.8.0/24
NetName:        GOGL
NetHandle:      NET-8-8-8-0-2
Parent:         NET8 (NET-8-0-0-0-0)
NetType:        Direct Allocation
OriginAS:       
Organization:   Google LLC (GOGL)
RegDate:        2023-12-28
Updated:        2023-12-28
Ref:            https://rdap.arin.net/registry/ip/8.8.8.0



OrgName:        Google LLC
OrgId:          GOGL
Address:        1600 Amphitheatre Parkway
City:           Mountain View
StateProv:      CA
PostalCode:     94043
Country:        US
RegDate:        2000-03-30
Updated:        2019-10-31
Comment:        Please note that the recommended way to file abuse complaints are located in the following links. 
Comment:        
Comment:        To report abuse and illegal activity: https://www.google.com/contact/
Comment:        
Comment:        For legal requests: http://support.google.com/legal 
Comment:        
Comment:        Regards, 
Comment:        The Google Team
Ref:            https://rdap.arin.net/registry/entity/GOGL


OrgTechHandle: ZG39-ARIN
OrgTechName:   Google LLC
OrgTechPhone:  +1-650-253-0000 
OrgTechEmail:  email@google.com
OrgTechRef:    https://rdap.arin.net/registry/entity/ZG39-ARIN

OrgAbuseHandle: ABUSE5250-ARIN
OrgAbuseName:   Abuse
OrgAbusePhone:  +1-650-253-0000 
OrgAbuseEmail:  email@google.com
OrgAbuseRef:    https://rdap.arin.net/registry/entity/ABUSE5250-ARIN


#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/resources/registry/whois/tou/
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/resources/registry/whois/inaccuracy_reporting/
#
# Copyright 1997-2024, American Registry for Internet Numbers, Ltd.
#

在这个例子中,结果显示的是关于IP地址范围8.8.8.0至8.8.8.255的信息:

  • 这个地址段被指定为CIDR(无类域间路由)格式为8.8.8.0/24的网络,这意味着这个子网包含256个IP地址,从8.8.8.0到8.8.8.255。
  • "NetRange"显示了IP地址的范围,"CIDR"提供了相同信息的另一种表示方式。
  • “NetName"是这个地址段的名称,这里是"GOGL”,通常是一个简短的标识符。
  • "NetHandle"是在ARIN注册的唯一标识符,用于追踪网络资源。
  • “Parent"显示这个地址范围的父网络,这里是"NET8”。
  • "NetType"告诉我们这是一个直接分配,意味着这个地址段直接分配给了下面提到的组织,而不是通过ISP或其他中介。
  • "OriginAS"字段显示从这个网络宣告的自治系统号,但在这个例子中它是空的。
  • “Organization"部分提供了管理该IP地址段的实体的详细信息,在这里是"Google LLC”。"RegDate"是这个地址段被注册的日期,"Updated"是记录最后更新的日期。
  • "OrgName"和"OrgId"提供了组织的名称和在ARIN注册的唯一标识符。
  • "Address"地址部分包括组织的实际地址、城市、州省和邮编。
  • "Country"字段显示了组织所在国家的两位ISO国家代码。
  • "Comment"部分提供了如何报告滥用和非法活动的链接,以及法律请求的信息。这些评论指向Google的联系和法律支持页面,以便用户可以在发现滥用或需要法律帮助时采取行动。
  • "Ref"是对应的参考链接,指向美国互联网号码注册管理机构(ARIN)的注册数据库访问点(RDAP)页面,可以查找到更多关于这个IP地址或实体的信息。
7. 总结

本文详细介绍了IPv4地址相关的知识,用于日常工作中应该足以,更多细节内容将在实践中慢慢学习。

网络协议学习关键不是笔记和抄书,核心还是根据书籍的指导弄明白协议的产生来源和最终采纳形式。毕竟RFC数千篇文档,不可能快速学完,但是要掌握从网络上获取相关知识的能力。

如果遇到一些IP地址的细节问题,最好的方法是网上搜索信息,并且从RFC等标准文档中得到答案,要掌握工具的使用方法,就像遇到不会认读的字去查字典一样。







网络网络层之(1)IPv4地址-LMLPHP

04-10 20:11