• 计算机网络自学之路-----IP协议(3)


    前面一期说到了IP层的IP协议跟ARP协议,因为IPV4协议自身有些不足的地方,为了弥补这些不足,又引入了一些别的协议。觉得这种弥补方式治标不治本~~


    1)ICMP网络控制报文协议

    2)CIDR无类域间路由协议


    1)ICMP网络控制报文协议

    因为IP协议是面向无连接的不可靠传输,所以就要引入别的协议来弥补这个缺陷。在IP路由的过程中,若主机或路由发生异常,便可利用ICMP来传送相关的信息。

    消息类型

    描述

    目的节点不可达(目的节点挂了)

    分组不能递交

    超时

    生存期(TTL)字段为0,分组丢弃

    参数问题

    无效的分组头

    重定向

    报告路由器有关的路由

    回声请求(像Ping)

    向指定节点发送请求,探询是否活动

    回声应答

    对回声请求的应答

    时间戳请求

    类似于回声请求,但附加时间标记

    时间戳应答

    类似于回声应答,但附加时间标记

    若在传输过程 中发生了上述中的情况,就会通过ICMP协议来发送一个包给源节点,说未能正常发送。

    在上述的这些情况中,回声请求跟回声应答是比较关键的。我们所熟悉的Ping命就是基于此协议上面的。当使用Ping命时,如图如示:发送一个回声请求给目的地,并报告是否收到所希望的回声应答。一般的是连续发送32个字节ICMP回声请求包,根据是否回到回声应答及响应时间来判断网络的连通性。

    ping

    通这上面这张图,我们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的二进制:    11001010.01110101.00000000.00000000

    202.117.7.255的二进制:11001010.01110101.00000111.11111111

    观察他们前21位都是相同的,所以前缀就是21,掩码的前21位是1,后面是0;

    东区:202.117.16.0—202.117.31.255;掩码是:255.255.240.0,前缀是20

    202.117.16.0二进制:      11001010.01110101.00010000.00000000

    202.117.31.255二进制:  11001010.01110101.00011111.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

  • 相关阅读:
    根据NSString字符串长度自动改变UILabel的frame
    计算两个日期的天数问题
    iOS学习笔记(02)
    iOS学习笔记(01)
    iOS使用Swift语言检查并提示更新
    iOS的一些关键字
    一些常见warning的原因和解决方法
    Objective-C和Swift实现单例的几种方式
    与导航栏下控件的frame相关的edgesForExtendedLayout、translucent、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets等几个属性的详解
    App常见崩溃问题分析
  • 原文地址:https://www.cnblogs.com/banluchujia/p/3432435.html
Copyright © 2020-2023  润新知