• 漫谈 IP 协议


     IP数据报格式

    IP地址分类

    IPV4简单粗暴地把IP地址分为五类。分类方法如下图:

     

    之所以要划分IP地址,目的是为区分不同的组织机构——A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。对于使用者本身,使用的是A/B/C哪一类,倒没有区别。

    A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是0,B类地址的前两位总是10,C类地址的前三位总是110。

    特殊用途的IP

    将这些特殊的IP地址分为三类,特殊源地址、环回地址以及广播地址。如下表所示:

     

    网络号

    子网号

    主机号

    描述

    特殊源

    全0

    全0

    网络上所有主机

    HostID

    网络上特定的主机

    环回

    127

    任何值

    环回

    广播

    全1

    全1

    受限的广播地址(永远不被转发)

    NetID

    以网络的目的向NetID广播

    SubNetID

    以子网为目的向SubNetID广播

    全1

    以所有子网为目的向所有子网广播

    私有IP地址

    与私有IP地址对应的是公有地址(Public address),由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。

    私有IP的出现是为了解决公有IP地址不够用的情况。从A、B、C三类IP地址中拿出一部分作为私有IP地址,这些IP地址不能被路由到Internet骨干网上,Internet路由器也将丢弃该私有地址。如果私有IP地址想要连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。

    私有IP地址的范围如下:

    • A: 10.0.0.0~10.255.255.255   即10.0.0.0/8
    • B: 172.16.0.0~172.31.255.255   即172.16.0.0/12
    • C: 192.168.0.0~192.168.255.255   即192.168.0.0/16

    子网划分

    IP地址如果只使用ABCDE类来划分,会造成大量的浪费:一个有500台主机的网络,无法使用C类地址。但如果使用一个B类地址,6万多个主机地址只有500个被使用,造成IP地址的大量浪费。因此,IP地址还支持VLSM技术,可以在ABC类网络的基础上,进一步划分子网。

    掩码

    为了标识IP地址的网络部分和主机部分,要和地址掩码(Address Mask)结合,掩码跟IP地址一样也是32 bits,用点分十进制表示。IP地址网络部分对应的掩码部分全为“1”,主机部分对应的掩码全为“0”。

    缺省状态下,如果没有进行子网划分,A类网络的子网掩码为255.0.0.0,B类网络的子网掩码为255.255.0.0,C类网络的子网掩码为255.255.255.0。利用子网,网络地址的使用会更加高效

    于是,IP地址的标识方法如下:

    例:192.168.1.1 255.255.255.0 可以标识为:192.168.1.1/24(24表示掩码二进制形式中“1”的个数)

    IP路由过程

    如果发送方和接收方在直接点对点连接或者在一个共享网络上,那么IP数据报则可以直接送达。但多数情况下,两台主机互联,需要通过多台路由器,需要路由转发送达消息。这个路由的过程是怎样的呢?这里有个重要的角色——路由表。路由表是一张存储在内存中的记录路由信息的表,定义着到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由表中保存的信息,则用来指导消息从发送方到达接受方的网络路由路径。

    有了路由表,网络路径的确认过程则如下所示: 

    接收到数据报的路由器按照它自己的理由表进行继续转发,直到到达目的地址。而除了在路由寻址过程中失败会导致丢弃数据报之外,IP数据报的TTL(生命周期)被减为0,则该IP数据报也会被丢弃。

  • 相关阅读:
    Springboot配置多数据源Rabbitmq
    SpringBoot 搭建 Rabbitmq
    SpringBoot 成Rabbitmq的疑惑记录
    Docker安装Redis关于Mounts denied解决
    使用Preferences写入注册表
    RSA解密报错 javax.crypto.BadPaddingException: Decryption error
    星座和生肖转化
    bio与nio
    跳表
    springboot+dubbo+zookeeper
  • 原文地址:https://www.cnblogs.com/brt3/p/9785785.html
Copyright © 2020-2023  润新知