网络层:构成超网(CIDR)

CIDR构成超网

CIDR消除了原来的传统的 A,B, C, D类地址, 使用了各种网络前缀来代替原来分类地址中的网络号和子网号, IP 地址由原来的三级分类又变成了两级分类. 其中网络号和子网号是一个随机的长度. 其中 CIDR 也可以使用 / 的形式来表示, 其中在 / 前面写上网络前缀的位数.其中注意网络前缀所占的比特位就是三级编制中子网掩码中 1 的个数. 当网络前缀相同的时候就叫做地址块, 也叫做超网.

1. 常用的 CIDR 地址快

假如 CIDR 网络地址号为 128.14.32.0 /20, 此时最小的地址块就是128.14.32.0, 最大的地址号就是 128.14.32.255, 其中要注意, 主机号为全 1 的时候代表的是一个广播网, 主机号为全 0 的时候表示主机自己的网络. 因此全 0 和全1 一般不分配.

2. 路由聚合

一个 CIDR 地址块可以表示或多个地址, 这样会使得一个路由表中的一个路由就可以表示多个网络地址. 这是什么意思呢, 加入原来的 C 类网络用前24为表示网络号, 后面的8位表示主机号, 而前面的3为用来表示自己是一个 C 类网络地址, 此时表示的网络号就有 2^21 次方个网络, 而在构成超网中, 但是它占了24位, 也就是说 C 类网络地址用了24位表示了2^21个网络地址, 而在构成超网中, 当用前20位表示网络前缀的时候, 此时就可以认为是用20位比特表示了2^20个网络.即构成超网中提高了比特位的利用率而且扩大了网络地址的范围更加灵活.

3. 掩码

对于一个/20的地址块, 掩码就是网络号的前20位是1, 后12位是0, 这样得到的就是超网中的一个掩码.

4. CIDR 记法的其他形式

当用点分十进制表示网络地址的时候, 此时可以省略低位的连续的0. 比如 10.0.0.0 /10 可以表示为 10/10.同时也可以在网络前缀的后面加一个 . 其中 前面的是网络前缀, 后面的是连续的 0. 前缀越长变化空间越少, 地址块包含的地址数就越少. 在三级子网划分中, 子网号越长, 网络前缀就会越长.

前缀最长匹配

在 CIDR 中路由表中每一个项目包括了网络前缀和下一条的地址.在路由的过程中目的路由下一条选择网络前缀最长的路由. 因为路由越长, 主机号对应的位数就会越少, 这样寻找的范围就会减小, 有利于传输效率.

1. 二叉线索查找路由表

在前缀最长匹配算法中, 由于每次找到一个目的地址时需要找到前缀最短的路由, 因此这样就比较花费时间. 因此将网络前缀用二叉树的数据结构进行组织
先从IP地址中找出各个IP地址中唯一的前缀, 然后通过唯一的前缀构成二叉树, 其中二叉树的左孩子是对应的值为0, 右孩子是对应的值为0
这里写图片描述

2. 网络控制报文协议 ICMP

(1)差错报告报文

在数据报文进行传输的过程中, 某条路由可能不同了, 此时就需要发送一个差错报告, 高速对方这条路不通了

(2)询问报告报文

在数据进行传输的过程中前面的时候数据一方在之前的时候发现路由不通了, 此时在发送数据的时候就需要测试一下现在我要发送数据了, 这条路由通不通

1) 差错报文的 5 中错误

终点不可达
原点抑制
时间超过
参数问题
改变路由

2)ICMP询问报文

回送请求和回答报文
时间戳请求和回答报文
掩码地址请求和回答报文
路由器询问和通告报文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVa12169

我们可以暴力枚举a,然后通过x1和x3确定b的值,然后确定其他的数字,一旦出现错误就放弃这组解。 关键问题就在于如何通过a,x1,x3确定b的值 x2 ( x1 * a b) % M x3 ( x2 * a b ) % M ( ( x1 * a b ) % M * a b ) % M x3 - k * M x1 * a % M * a %…

尹成 双循环链表

今天&#xff0c;我们一起用C写一个双链表&#xff0c;具体代码如下&#xff1a; DoubleList.h具体内容如下&#xff1a; [cpp] view plaincopy #include "NodeList.h" template<typename Type> class DoublyList{ public: DoublyList() :head(ne…

堆的基本操作

堆的数据结构 对于堆, 有最大堆和最小堆, 在定义一个堆的时候用一个数组表示堆, 同时为了方便定义堆的大小, 用一个 size 表示堆的有效元素, 同时为了区别最大堆和最小堆, 我们用一个函数指针表示这个堆是最大堆还是最小堆. typedef int (*Compare)(HeapType parent, HeapTyp…

UVa1605

完完全全的构造题 一种比较好想到&#xff08;虽然我没有想到。。&#xff09;的方法是做成一个两层的表格&#xff0c;第一层每一行相同&#xff0c;第二层每一列相同&#xff0c;这样每个都能和其他的相邻了。 输出格式稍微注意一下 #include<cstdio> #include<c…

Linux下的TCP/IP编程----IO复用及IO复用服务端

http://blog.csdn.net/wqc_csdn/article/details/51583901 在之前我们实现的并发服务端时通过床将多个进程来实现的&#xff0c;这种并实现并发的方式简单方便&#xff0c;但是进程的创建和销毁是很消耗系统资源的&#xff0c;在访问量大时服务器很容易出现资源不够用的情况。除…

UVa120

相当于是一个模拟&#xff0c;为了得到合适的顺序&#xff0c;我们的策略是每次找到当前没有被翻的里面最大的&#xff0c;然后把他翻到最前面&#xff0c;然后再翻到合适的位置。 需要判断一下当前是否已经有序&#xff0c;有序就不用翻了。 如果在最开头找到了合适的当前应…

二叉树的相关操作

二叉树的数据结构 typedef char SearchTreeType; typedef struct SearchTreeNode { SearchTreeType key; // 关键码 struct SearchTreeNode* lchild; struct SearchTreeNode* rchild; } SearchTreeNode; 二叉树的初始化 由于我们是用一个指向根节点的指针表示一个二叉树, …

网络层:网关协议

一. 网关 所谓的网管即就是之前路由器的名字, 即路由器和网关是一个东西 二. 内部网关协议 1. RIP协议 路由信息协议 RIP 是内部网关协议 IGP中最先得到的广泛使用的协议. 同时 RIP 是一种分布式基于距离向量的路由选择协议. RIP 协议要求网络中的每一个路由都必须维护自己…

UVa1152

题意很好理解&#xff0c;就是从四个集合里面取出四个数字的和为0&#xff0c;问有多少种取法。 直接枚举肯定是会超时的&#xff0c;所以得想办法优化一下。我们可以将两个集合的所有的和都放在一个数组里面&#xff0c;这样得到两个数组&#xff0c;然后排序&#xff0c;对第…

Linux函数--inet_pton / inet_ntop

http://blog.csdn.net/lindyl/article/details/10427925 inet_pton 和 inet_ntop Linux下这2个IP地址转换函数&#xff0c;可以在将IP地址在“点分十进制”和“整数”之间转换而且&#xff0c;inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pto…

网络基础: 浅析应用层一

应用层 1. http协议 在 http 中协议分为了协议方案名, 登录信息名, 服务器地址, 服务器端口号(http协议绑定的端口号), 文件类型, 查询的字符串, 片段标识位 2. http 请求协议格式 httpp 总共分为三大部分, 其中首行即就是第一部分, 分为三个区域, 第一去个区域是请方法, 第…

socket 编程篇六之IPO多路复用-select poll epoll

http://blog.csdn.net/woxiaohahaa/article/details/51498951 文章参考自&#xff1a;http://blog.csdn.net/tennysonsky/article/details/45745887&#xff08;秋叶原 — Mike VS 麦克《Linux系统编程——I/O多路复用select、poll、epoll的区别使用》&#xff09; 此外&#x…

UVa11054

挺简单的小模拟。 还是要注意思维的方向&#xff0c;要有切入点&#xff0c;不能像无头苍蝇一样东想一下西想一下&#xff0c;而应该分析问题的性质&#xff0c;然后尝试思维的方向&#xff0c;从不同的方向思考&#xff08;顺序&#xff0c;逆序&#xff0c;排序后&#xff0…

浅谈传输层

1. 传输层的作用 在传输层中有两个特别重要的协议 TCP/UDP . 以快递员送快递为例说明这个问题吧. 在进行包裹传输的过程中快递员需要根据快递上的目的地址(目的计算机)来投递包裹(IP数据报), 加入在快递单上只写了收件人的所在地, 所在单位, 而只写了收件人的姓没有写收件人的…

UVa10375

题目描述很简单,就是求两个组合数的商.可是数字范围很大,肯定不能直接计算. 因此要用到唯一分解定理,即将结果全部表示为素因子的幂的形式. #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype> #inc…

I/O复用的 select poll和epoll的简单实现

http://www.cnblogs.com/wj9012/p/3876734.html 一个tcp的客户端服务器程序 服务器端不变&#xff0c;客户端通过I/O复用轮询键盘输入与socket输入&#xff08;接收客户端的信息&#xff09; 服务器端&#xff1a; 1 /*服务器:2 1.客户端关闭后&#xff0c;服务器再向客户端发送…

netstat 相关命令解析

1.列出所有的端口 netstat -a 列出TCP协议的端口 netstat -at UDP协议的端口 netstat -au 2.列出处于监听状态的socket netstat -l 列出监听的TCP端口 netstat -lt 列出监听的UDP端口 netstat -lu 列出监听的UNIX端口 netstat -lx 3.列出协议的统计信息 nestat …

UVa10791

我们可以先用唯一分解定理将这个数字分解成素因子幂的乘积&#xff0c;为了得到最小的和&#xff0c;我们可以发现&#xff1a;每个 素因子的幂单独分开的和是最小的。 先说明每个素因子都是以出现的最大的次数出现。因为最小公倍数一定&#xff0c;因此至少有一个数字的这个素…

TCP相关代码

TCP 基础代码 //tcp_server.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<st…

UVa1635

我们很容易发现最后每一项的系数就是二项式展开&#xff0c;余数和m没有关系就意味着可以被m整除&#xff0c;因此我们就需要求出每一个二项式的系数。但是数据实在太大我们根据唯一分解定理将m和系数都进行分解&#xff0c;然后比较因子的幂。 二项式的计算我们可以根据杨辉三…