TCP/IP详解 第二章 Internet地址结构

一、表示IP地址

IPv4
IPv4的地址我们很常见,是由4段十进制数字用“.”链接起来表示 每一段数字取值范围为0-255 简单的案例为 165.195.130.107 这样的一个地址为一个IPv4的地址,但是我们通常对其进行计算时使用二进制形式。
0-255的证整数换成二进制是8位 一个IPv4地址分为四段,所以IPv4地址长度位32位

IPv6
使用8段,每一段由四个16进制数字表示,中间用":"隔开。16位数字占4位 故最终大小位844=128位

EX:使用IPv6的地址访问服务时,由于冒号分隔符会与端口号混淆,需要带上[],如http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443

二、基本的IP地址结构

通讯方式:

  • 单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。
  • 组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。
  • 广播(broadcast):是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。
  • 任播(anycast):是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。

分类寻址

开始定义地址结构的时候,由于需要一个地址发送信息给另一个地址,我们需要知道地址所在的网络,和具体地址的位置,故一般将ip地址分为两部分 ,前面的一部分连续位为网络号,后面的为主机号。现实中由于不同的网络可能由不同的主机数量,故依据不同大小的主机数量给网络非陪网络号地址,一共分为五类,设计如下

  • A类地址:网络号8位 主机号24位 其中网络号的第一位为0 标识A类地址
  • B类地址:网络号16位 主机号16位 其中网络号的前两位为10 标识B类地址
  • C类地址:网络号24位 主机号8位 其中网络号的前三位为110 标识C类地址
  • D类地址:组播地址 其中网络号前四位为1110 标识为D类地址
  • E类地址:保留地址 其中网络号前四位为1111 标识为E类地址

这种分配方式在Internet开始发展的数十年没有问题,之后开始出现规模问题,每当一个新的网络被加入其中,协调为其分配一个新的ABC类网络号很不方面,而且通常分配后AB类会出现大量的主机号浪费,而C类却不够用。

子网寻址

随着局域网(LAN)的发展,分配网络号愈发不便,于是子网的概念自然的被提出,在分配一个网络号后,运营人员可以对分配的区域再次进行分配 这样申请一个主机号就可以由内部变为多个子网络,不用每一次都去分配新的网络号。
具体做法是:除了集中分配的网络号外,公司运营人员认为的把剩下的主机号划分为子网号和子网主机号,可以看出这种做法并没有增加地址长度,但是让公司运营人员更灵活的分配网络地址空间,
例子:一个B类网络32位,其中16位为网络号,不可变,剩余的16位为主机号,可变,现在我们把可以使用的剩余16位分为两部分 前8位作为子网网络号,后8位位子网主机ID,这样我们就得到了一个最多256个子网,每个子网最多256台主机的网络。(实际上子网主机数最多支持到254台 因为第一个地址和最后一个地址不可用,第一个地址作为子网地址,最后一个作为广播地址)
在寻址时,边界路由器接收所有发送给自己统一分配网络号的请求,然后依据子网号找到对应的子网进行转发,子网再根据子网主机号确认具体访问的主机。

子网掩码

子网掩码由路由器和主机使用,用于判断一个请求目的地址在自己的哪个子网的哪个子网主机上,其长度与ip地址相同,但是时由连续的二进制1和0表示,如1111.1111.0000.0000 翻译位ip地址位255.255.0.0,其实只需要知道前缀长度(有多少个1)就可以确认一个子网掩码。
子网掩码用于计算子网地址:用目的地址与子网掩码进行与运算,直接获取子网地址,例如一个B类网络128.32.0.0 我们划分256个子网,那么子网掩码位255.255.255.0 当一个请求请求128.32.1.14时,由于掩码前面位数全部位1 进行与运算直接可以获得128.32.1.0 而子网分配给主机256个地址中第一个地址位保留地址,表示子网地址,这样就直接获取到了子网地址。

可变长度子网掩码

通过子网掩码计算固定的子网网络号很简单,但是我们发现分配依旧不够灵活,像上述案例,只能分配256个子网每个子网固定254台主机,由于子网掩码的存在我们发现可以给同一个地址不同的子网掩码 这样映射出来的子网地址就会不同,可以更加灵活的划分不同大小的子网。现在的大多数主机的路由协议支持可变长度子网掩码(VLSM)

广播地址

之前提到过保留地址 主机可分配地址的第一个地址用以标识子网地址,而最后一个地址用于广播的广播地址,同理用子网掩码取反再进行与计算可以方便的得到广播地址。这种行为发送的数据报被称为定向广播。
EX:从安全性角度来看,定向广播有着重大安全问题,故现在路由器一般默认禁止转发定向广播,甚至完全省略支持能力。

IPv6地址和接口标识符

IPv6地址除了比IPv4长四倍外,还有一些额外的特点,会使用特殊的前缀标识一个地址范围(用于特殊用途的特殊地址格式)
地址分配
前缀分配

三、CIDR和聚合

问题起因:互联网规模越来越大,地址即将被分完,且由于ABC类站点越来越多,路由性能变差

前缀

为了解决地址分配压力,分类寻址采用了一个类似VLSM的方案扩展了Internet以支持无类别域间路由(CIDR)
也就是不只是B类或者多个C类网络号可分配给站点,使用CIDR,任何地址都可以作为一个类的一部分(但是需要使用子网掩码 这种情况下也称为CIDR掩码)
这也要求所有的路由器都能识别CIDR掩码的信息,通常我们再ip后加上/{掩码位数}来表示,如128.0.0.0/1 意思就是对于128.0.0.0这个地址,掩码为第一位 也就是他的子网地址为128.0.0.0-255.255.255.255

聚合

使用CIDR掩码取消了ip分类结构,能方便的分配各种大小的ip地址块,但这也只是解决了空间问题,路由的条数并没有改变,路由性能依旧很差。
分层路由:将网络拓扑看作一颗树,并以网络拓扑敏感的方式进行分配,什么意思呢?之前的网络结构是一个路由,要动态的保存其下所有的机器的路由信息,并且支持子网扩容,随着子网逐渐扩展,路由条目也逐渐变多,导致性能下降,将网络拓扑看作一颗数的话就是一个父节点需要管理其下所有的子节点,其子节点的子节点也要管住,二使用分层路由可以让路由只关注其子节点一层,最终达到的效果是:路由保存的路由表条目数不会超过其链接数(仅保存链接的路由),这样极大程度的减少了路由信息,提高了路由效率
实现方式:路由聚合,将多个ip前缀合并成一个段前缀,用以覆盖更多的地址空间

前两条聚合
加入
后两条聚合
聚合
加入
聚合
190.154.27.0/26
190.154.27.64/26
190.154.27.192/26
190.154.27.0/25
190.154.27.192/26
190.154.27.128/26
190.154.27.128/26
190.154.27.0/25
190.154.27.128/25
190.154.27.0/24
190.154.26.0/24
190.154.26.0/24
190.154.26.0/23

开始的190.154.27.0/26和190.154.27.64/26由于数值相邻可以被聚合 此时注意掩码,聚合之后遮掩的位数变少,将其看作一个新的子网,此时和190.154.27.192/26并非数值相邻(因为192大于128 二进制上多了一位1),同样的,当路由中有新的路径190.154.27.128/26加入时,由于128和192相邻 可以进一步聚合,在聚合之后190.154.27.0/25和190.154.27.128/25相邻了 故进一步聚合为190.154.27.0/24 依次递归,这样原来的3条路由和新加入的两条最终被聚合成一条路由。

四、特殊用途地址

IPV4

前缀用途
0.0.0.0/8本地网络主机
10.0.0.0/8专用网络(内联网)地址 不会出现在公网中
127.0.0.0/8Internet主机回送地址,通常只使用127.0.0.1
169.254.0.0/16“链路本地”地址,只能用于一条链路,通常自动分配
172.16.0.0/12专用网络(内联网)地址 不会出现在公网中
192.0.0.0/24IETF协议分配地址(IANA保留地址)
192.0.2.0/24批准用于文档TEST-NET-1地址 不会出现在公网中
192.88.99.0/246to4中继(任播地址)
192.168.0.0/16专用网络(内联网)地址 不会出现在公网中
198.18.0.0/15用于基准和性能测试
198.51.100.0/24批准用于文档TEST-NET-2地址 不会出现在公网中
203.0.113.0/24批准用于文档TEST-NET-3地址 不会出现在公网中
224.0.0.0/4IPv4组播地址(以前的D类),仅作为目的IP地址使用
240.0.0.0/4保留空间(以前的E类) 除了255.255.255.255
255.255.255.255/32本地网络(受限制的)广播地址

IPV6

前缀用途
::/0默认路由条目有,不用于寻址
::/128未指定地址,可做为源IP地址使用
::1/128IPv6的主机回送地址,不用于发送出本地主机的数据报中
::ffff:0:0/96IPv4映射地址,这种地址不会出现在分组头部,只用于内部主机
::{ipv4-adress}/96IPv4兼容地址,已过时未使用
2001::/32Teredo地址
2001:10::/28ORCHI(覆盖可路由加密散列标识符)地址 不会出现在公网中
2001:db8::/32用于文档和实例的地址范围 不会出现在公网中
2002::/166to4隧道中继的6to4地址
3ffe::/16用于6bone实验,已过时,未使用
5f00::/16用于6bone实验,已过时,未使用
fc00::/7唯一的本地单播地址,不用于全球性的Internet
fe80::/10链路本地单播地址
Ff00::/8IPv6组播地址,仅作为目的IP地址使用

IPv4/IPv6地址转换

IPV6的前缀长度必须是下列数值之一:32、40、48、56、64、96。
前缀为一个“周知前缀”(64:ff9b::/96),也可以是组织为转换分配的唯一前缀,u位是特指64到71位,必须全是0,后缀全是0

  • 32位:ipv6前缀(32位)+ipv4地址(32位)+u(64-71)+后缀(56位)
  • 40位:ipv6前缀(40位)+ipv4地址(前24位)+u(64-71)+ipv4地址(后8位)+后缀(48位)
  • 48位:ipv6前缀(48位)+ipv4地址(前16位)+u(64-71)+ipv4地址(后16位)+后缀(40位)
  • 56位:ipv6前缀(56位)+ipv4地址(前8位)+u(64-71)+ipv4地址(后24位)+后缀(32位)
  • 64位:ipv6前缀(64位)+u(64-71)+ipv4地址(后32位)+后缀(24位)
  • 96位:ipv6前缀(96位)+ipv4地址(32位)

值得注意的是“周知前缀”无法映射私有IPv4地址(内联网用的ipv4地址),只能利用 2001:db8:: 特定网络前缀实现映射。

组播地址

组播类似于消息订阅模式,每个Internet主机协议栈能加入或离开一个组 这个组通常可以由一个维护加入地址列表(订阅列表)的路由器负责(其站点负责人进行配置),当使用组播向一个组发送数据时,会创建一个数据报,使用单播的地址作为源地址,组播地址作为目的地址,已加入该组的所有主机将接收到发送到改组的数据报。

  • ASM(任意源组播):任何发送方可以发送给任何组
  • SSM(特定组播):每个组只使用一个发送方

任播地址

任播地址本质是一个单播地址,通过配置路由器通知Internet多个站点由相同单播路由来实现。所以任播地址并不是指确定的internet中的一台主机,而是最合适或最接近的一台主机。(例如找到DNS服务器,详见DNS相关知识)

五、分配

IP地址通常由分层次的权威机构进行分配,先被分配为大的块,然后给到较小的权威机构继续向下分。

单播

IANA将分配地址的权限给到了地区性的Internet注册机构(RIR)

  • AfriNIC - 非洲网络信息中心 (http://www.afrinic.net)
  • APNIC - 亚洲太平洋地区网络信息中心 (http://www.apnic.net)
  • ARIN - 美洲Internet号码注册机构 (http://www.arin.net)
  • LACNIC - 拉丁美洲和加勒比地区的IP地址注册 (http://lacnic.net/en/index.html)
  • RIPE NCC - 欧洲网络协调中心 (http://www.ripe.net)

然后这些机构将地址块分配给各个国家的ISP(互联网服务提供商)

组播

由于组播很少使用,需要使用过的时候需要与服务提供商进行交流。

六、IP地址相关的攻击

IP地址现在有助于查明涉嫌不良活动的个体,一般情况下执行攻击的人可发送欺骗数据包进行活动,其可以使用一些公共接入点或者使用不知情的家庭企业所有的无线网络发起进攻,让无辜的所有者成为嫌疑人。也可能使用被攻击的主机组成僵尸网络执行攻击。目前这类计算机和路由器可以通过Internet黑市进行租赁,被用于非法内容活动。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值