1.CIDR是什么

无类域间路由(CIDR)编址方案

摒弃传统的基于类的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率。
就是一个ip加一个网络掩码,不过这个掩码不是之前只有3个值(A类:8,B类:16,C类:24),而是0-32随意的一个值。
例如:
208.12.128.0/17
 

2.如何理解CIDR格式

上图
 
可以理解为一个从0到(2^32-1)长的线段.
掩码32表示n个ip的点,数量n是2^32.
掩码31表示n个小线段1,每个线段1包含2(2^(32-31))个ip点,数量n是2^31.
掩码30表示n个小线段2,每个线段2包含4(2^(32-30))个ip点,2个小线段1(2^(31-30)),数量n是2^30.
以此类推,可以形象的理解成"刻度尺".
 

3.每个CIDR之间的关系

1.相离
见上图
208.12.16/24
208.12.21/24
 
2.相近
见上图
208.12.16/24
208.12.17/24
 
3.包含
如图
208.12.21/24
208.12.16/20
 
为什么2个CIDR不能相交?
2个CIDR假设为ip1/mask1,ip2/mask2.
mask3 = (mask1 > mask2) ? mask2:mask1;
ip1/(mask3) 和ip2/(mask3)只有相等和不相等2种情况。
不相等:相离或相近
相等:包含
形象的可以想象下“刻度尺”,其中就没有相交的情况。
 

4.ip最长地址前缀匹配

1.穷举法
已知一个ip假设为208.12.16.188
查找hash表,key为(ip & mask)
其中mask从32递减到0
最坏时间复杂度=O(32)*hash查找
 
2.最长前缀匹配
ip地址就是一个32bit的数,构建一个bit前缀树进行最长前缀匹配。
最坏时间复杂度=O(32)
 
3.线性表的2分查找
算出每一个CIDR的(ip & mask)值,按此值排序(从小到大)
当要查询一个ip地址时,假设为ip1,找出>ip1的第一个值,此值的左面的值假设为(ip2 & mask2)
判断一下 ip1 & mask2 是否=ip2(根据需要要可以判断一下此ip段的超集,构建线性表时,超集关系就可以得出)。
最坏时间复杂度=O(lg(n)),n为CIDR的数量。
 
 
 
 
 

CIDR详解和ip最长地址前缀匹配的更多相关文章

  1. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  2. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  3. TCP/IP协议详解笔记——IP协议

    简介 TCP/IP协议族中最核心的协议,提供不可靠.无连接的数据报传输服务. 不可靠:不能保证IP数据报能成功送达. 无连接:并不维护后续数据报的状态信息,每个数据报的处理都是相互独立.数据报可能不会 ...

  4. iptables详解(6):iptables扩展匹配条件之’–tcp-flags’

    如果你看过前文,那么你一定知道,前文已经对"tcp扩展模块"做过总结,但是只总结了tcp扩展模块中的"--sport"与"--dport"选 ...

  5. nginx配置文件详解( 看着好长,其实不长,看了就知道了,精心整理,有些配置也是没用到呢 )

    user www www; #定义Nginx运行的用户和用户组        worker_processes ; #nginx进程数,建议设置为CPU核数2倍. error_log var/log/ ...

  6. 从浅入深详解独立ip网站域名恶意解析的解决方案

    立IP空间的好处想必大家都能耳熟闻详,稳定性强,利于seo等让大家选择了鼎峰网络香港独立IP空间.那么, 网站独享服务器IP地址,独立IP空间利于百度收录和权重的积累.不受牵连.稳定性强等诸多优势为一 ...

  7. 协议详解3——IP

    1. 特点: 所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输.  提供不可靠,无连接服务. 不可靠: 不能保证IP数据报能成功到达目的.IP仅提供最好的传输服务.如果发生某种错误时 ...

  8. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  9. 【转】命令行浏览器 curl 命令详解,Linux中访问url地址

    CURL --- 命令行浏览器 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1)二话不说,先从这里开始吧! curl http://www.yahoo.com 回车之后,www. ...

随机推荐

  1. 深圳 Maker Faire 2016 & Microsoft Booth

    首先,感谢Hackster.io和微软,因为发表在Hackster.io的项目<A fall detection system based on Arduino, Windows and Azu ...

  2. 服务器重启后SQL Server Agent由于"The EventLog service has not been started" 启动失败

    案例环境: 操作系统   : Microsoft Windows Server 2003 Standard Edtion SP2 数据库版本 : SQL Server 2005 Standard Ed ...

  3. [AlwaysOn Availability Groups]SQL Server错误日志(AG)

    SQL Server错误日志(AG) SQL Server错误日志会记录影响AG的时间,比如: 1.和Windows故障转移集群交互 2.可用副本的状态 3.可用数据的状态 4.AG endpoint ...

  4. Nodejs以后台服务启动

    1: 从网上查找  LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & 经多次实验一直没有成功   2:使用 forever ...

  5. Web报表工具JS开发之日期校验

    在报表开发过程中,我们常常需要对查询界面进行日期校验.例如有两个参数:开始日期和结束日期,我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段 ...

  6. 跨云应用部署第一步:使用IPSEC VPN连接AWS中国版和Windows Azure中国版

    随着公有云的普及,越来越多的客户将关键应用迁移到云端.但是事实证明,没有哪家云服务提供商可以提供100%的SLA,无论是例行维护还是意外中断服务,对于客户的关键应用而言,都会受到不同程度的影响.此外, ...

  7. google的云盘与公司网盘

    很多人都很期待Google推出的云存储服务,也就是公司网盘.因为多数人相信,没有比google更适合做云存储的公司了,作为一个标准的Web公司或者说互联网公司,云端理所应当的优秀.但比起几年前听传言时 ...

  8. Spring远程调用技术<1>-RMI

    在java中,我们有多种可以使用的远程调用技术 1.远程方法调用(remote method invocation, RMI)  适用场景:不考虑网络限制时(例如防火墙),访问/发布基于java的服务 ...

  9. Freemarker与普通java

    package com.sxt.test.freemarker; import java.io.File; import java.io.OutputStreamWriter; import java ...

  10. linux 、 jmeter部署安装

    1.安装&配置 可在Linux服务器上利用服务器强大的性能,执行JMeter进行性能测试. 当然,可在Windows机器上先编好测试计划(注意版本匹配,否则可能产生莫名错误),然后下载到Lin ...