计算机网络自学之路-----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等等. 这些设备依据其作用不同可 ...
随机推荐
- SQL IF ELSE
if (条件) begin (执行模块) endelse if (条件) begin (执行模块) endelse begin ...
- Also unsere eigene Christian Louboutin Webshop bietet die überragende Christian Louboutin Schuhe uk schiebt zusammen mit kostengünstigen Wert
www.heelschuhe.de, Es ist wirklich eine der Frauen erfordern immer interessant und auch Louboutin Pu ...
- 第一次用golang写个小程序
1.下载go1.6并安装.我是win7系统(会自动添加GOOROOT环境变,自己建一个放go文件的工程目录并添加到环境变量中) 2.下载liteide并解压缩.(liteide查看菜单中也可编辑环境变 ...
- hihoCoder#1051
刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己 ...
- [小菜随笔]python tkinter实现简单的ping命令
本文主要是介绍python图形界面上的按键与实际功能的对接,其实编程掌握了基础之后的学习应该都是靠自己去挖掘其他的 在网上发现多半教程都是2的,故本文使用的是python3.5,其实也没什么区别,就有 ...
- 初学Scala
由于项目的需要接触了Scala语言,也花了一些时间来了解和学习Scala,今天对学习的Scala进行一个小的总结. 1.What is Scala? Scala的官方网站上给出的解释是: Scala ...
- Linux系统重要快捷键& Shell 常用通配符
[Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...
- Python开发入门与实战16-APACHE部署
16. Windows平台apache部署 本章节我们简要的描述一下如何在windows平台部署apache的django站点. Python Django 项目部署发布到windows apache ...
- Android Studio运行SlidingView报错 FloatMath函数
1,错误信息时这样的(图片百度的,但是提醒的是一样的) 我们点击这个错误提示,就会跳到出错的地方 2,开始的时候觉得很蛋疼,因为这个SlidingView是从别处导过来的,没什么问题把...就很久就 ...
- Errore Http 404.2
问题一:IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 404.2就一个http status code, 在msdn上说:404.2 - ISAPI or CGI rest ...