计算机网络自学之路-----IP协议(3)
前面一期说到了IP层的IP协议跟ARP协议,因为IPV4协议自身有些不足的地方,为了弥补这些不足,又引入了一些别的协议。觉得这种弥补方式治标不治本~~
1)ICMP网络控制报文协议
2)CIDR无类域间路由协议
1)ICMP网络控制报文协议
因为IP协议是面向无连接的不可靠传输,所以就要引入别的协议来弥补这个缺陷。在IP路由的过程中,若主机或路由发生异常,便可利用ICMP来传送相关的信息。
| 消息类型 | 描述 | 
| 目的节点不可达(目的节点挂了) | 分组不能递交 | 
| 超时 | 生存期(TTL)字段为0,分组丢弃 | 
| 参数问题 | 无效的分组头 | 
| 重定向 | 报告路由器有关的路由 | 
| 回声请求(像Ping) | 向指定节点发送请求,探询是否活动 | 
| 回声应答 | 对回声请求的应答 | 
| 时间戳请求 | 类似于回声请求,但附加时间标记 | 
| 时间戳应答 | 类似于回声应答,但附加时间标记 | 
若在传输过程 中发生了上述中的情况,就会通过ICMP协议来发送一个包给源节点,说未能正常发送。
在上述的这些情况中,回声请求跟回声应答是比较关键的。我们所熟悉的Ping命就是基于此协议上面的。当使用Ping命时,如图如示:发送一个回声请求给目的地,并报告是否收到所希望的回声应答。一般的是连续发送32个字节ICMP回声请求包,根据是否回到回声应答及响应时间来判断网络的连通性。

通这上面这张图,我们Ping一下博客园(用的是域名),然后可能看到博客园的ip地址(A类的哦)。默认是发送32个节点(通过参数可调64等~)。TTL是生命周期(听说可以通过这个TTL看出很多东西,但俺还不太了解~~)。注意,这里Ping域名跟PingIP地址是有一些区别的,域名还要经过一步DNS解析~
通上这个Ping命令,当俺的电脑不能上网时,可通过下面这几个步骤判断问题出现在哪里(一般都是断网了或没交网费lol)
1、先Ping自己的IP,看看是不是我的网卡坏了
2、再Ping下自己的网关,看看跟我直接相接的路由是不是坏了
3、最后再Ping 你想连接的那个站点。(不过有时候虽然Ping不通但也可以访问,因为可能某些网点拒绝接收Ping包~~)
2)CIDR无类域间路由协议
协议的引入总是用来解决相关问题的,之前所讲的IPV4是有自身问题的,如:
- IP地址按之前讲的那种划分方式迟早有用完的时候。
- 而且基于这种分类的IP地址空间的组织方式,浪费了大量的地址。
- 再有B类坡地很难申请(在90年代的时候,就申请的差不多了),C类地址的增多,使路由表爆涨。
所以为了适当解决上述问题,就整了一个叫 CIDR 的协议出来。用些例子来说明这个协议的相关内容吧:
例1:
假如现在我们需要2000个地址,申请个B类的大材小用了,申请8个C类(8*256=2048个)地址是极好的。但这会增加路由表的个数。试想一下,申请出8个连续的C类地址块,将这个地址块对外呈现出一个统一的网络号,是不是路由表只要有一个表项就OK了呢?
所以接下来的问题就是怎么样这2048个地址对外面呈现的是一个统一的网络号呢?又如何去识别这8个具有不同网络号的连续地址块?
采用的办法也是类似于前面说的掩码方法。IP地址=网络前缀+主机号。网络前缀越短,则地址块所包含的地址数就越多。
使用斜线记法:a.b.c.d/x,x表示地址中网络前缀部分的位数,32-x就是主机位数。
如:10.0.0.1/10,表示掩码就是:255.192.0.0(11111111.11000000.00000000.00000000)前10位都是1.
例2:
我们学校有两个校区,东区要2048个地址,西区要4096个地址。现在有一个C类的地址:202.117.0.0以后的地址都可以使用。我们就可这样分配:
西区:202.117.0.0—202.117.7.255;掩码是:255.255.248.0,前缀是21
202.117.0.0的二进制: .00000000
202.117.7.255的二进制:..111.11111111
观察他们前21位都是相同的,所以前缀就是21,掩码的前21位是1,后面是0;
东区:202.117.16.0—202.117.31.255;掩码是:255.255.240.0,前缀是20
202.117.16.0二进制: .01110101.00010000.00000000
202.117.31.255二进制: ..00000000
观察他们前20位是相同的,所以前缀就是20,掩码的前20位为1,后面是0;
采用CIRD这种方法,原本要24个C类地址,会有24个路由表顶。而现在就只要二个就ok啦,极好的~
| 目的IP | 子网掩码 | 
| 202.117.0.0(东区地址块) | 255.255.248.0 | 
| 202.117.6.0(西区地址块) | 255.255.240.0 | 
| 202.117.0.0 | 255.255.0.0 | 
这又引入一个问题,看到上面这张路由表(这个表应该还要加上下一跳地址,跟距离最好啦)。目的IP有两个202.117.0.0.这个时候我们应该选择哪个地址呢?答案是红色部分的那个。介系因为子网掩码为1的位数越多,对网络划分的就越详细,越接近我们的最终目的主机。这也就是最大匹配原则,掩码越大,表明把网络内部规模划分的越小,越准。
最后还有一个RFC 1519对CIRD的描述,将世界分成4个区,每个区分配一块连续的C类地址空间
欧洲:194.0.0.0—195.255.255.255
北美:198.0.0.0—199.2552555.255
中、南美:200.0.0.0—201.255.255.255
亚太:202.0.0.0—203.255.255.255
计算机网络自学之路-----IP协议(3)的更多相关文章
- 计算机网络自学之路------IP协议(2)
		之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学. 本期说的是IP分组转发的内容,里面详细介绍了IP协议跟ARP协议,最后再给出一个例子,说明这两个协议在网络中传输的具体过程. 1)Ip ... 
- 计算机网络自学之路------IP协议(1)
		1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ... 
- 计算机网络 4.网络层与IP协议
		网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的 ... 
- 计算机网络知识之TCP/IP协议簇
		OSI参考模型 OSI的来源 OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网 ... 
- 计算机网络——OSI、TCP/IP协议族详解
		一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ... 
- 计算机网络初探(ip协议)
		粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ... 
- 计算机网络三:域名、IP地址和TCP/IP协议
		一.域名 域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ... 
- Python之路(第三十篇) 网络编程:socket、tcp/ip协议
		一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ... 
- 计算机网络      0.初识Internet与TCP/IP协议
		互联网,即因特网,Internet.互联网是一个世界范围的计算机网络.连接了世界上无数的计算设备,这些计算设备为PC.基于Linux的工作站,serverservers等等. 这些设备依据其作用不同可 ... 
随机推荐
- ubuntu 使用中的一些问题汇总
			1.IOError: [Errno 13] Permission denied /usr/local…… 这个错误是在terminal中运行pip install 时产生的,说的时没有权限运行安装包, ... 
- vs13的内存占用 关闭之
			.如何关闭CodeLens呢? 在VS菜单栏 >> 工具 >> 选项 >> 文本编辑器 >> 所有语言 >> CodeLens In VS ... 
- 求最长回文子串:Manacher算法
			主要学习自:http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-ii.html 问题描述:回文字符串就是左右 ... 
- int->string-------------c
			void intToString(int n,char a[]){ int i=1,m=n; while((n/=10)!=0) i++; int j=0; for(;j<i;j++){ a ... 
- 如何让Button使用自定义icon
			1.在Buttton所在的html页面定义button要使用的icon的css样式,如 </style> <style> .dijitArrowIcon { backgroun ... 
- LeetCode之Unique Binry Search Trees
			4月份很快就过半了,最近都在看WPF,有点落伍了...本来想写一点读书笔记的,还没想好要怎么写.所以为了能够达到每月一篇博客的目标,今天先说一个LeetCode上的面试题:Unique Binary ... 
- Dapper学习笔记(2)-链接引用
			在研究Dapper源码时发现Dapper NET45类库中的SqlMapper.cs文件前面有个蓝色的箭头图标,发现在Dapper NET45文件夹下根本不存在SqlMapper.cs文件,其文件属性 ... 
- 华为手机调试显示log日志
			华为手机默认状态手机log为关闭状态,所以看不到详细错误信息. 手机拨号*#*#2846579#*#*,进入projectmenu--后台设置--LOG设置--LOG开关--打开 勾选AP日志 C ... 
- setNeedsDisplay,setNeedsLayout
			UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraph ... 
- css 笔记
			外边距合并 当一个元素出现在另一个元素的上面时,第一个元素的下外边距和第二个元素的上外边距会产生合并,两个盒子之间的上下间距为大的数值. 当一个子元素包含在另外一个父元素(假设没有内边距 没有边框), ... 
