zoukankan      html  css  js  c++  java
  • IP地址分类

    IP地址的分类

    分类的IP地址就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。

    第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。

    第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。

    因此一个IP地址在整个互联网范围内是唯一的。

    这种两级的IP地址可以记为

    ​ IP地址∷={<网络号>,<主机号>}

    下图给出了各种IP地址的网络号字段和主机号字段,这里A类、B类和C类地址都是单播地址(一对一通信),是最常用的。

    img

    • A类、B类和C类地址的网络号字段(在图中这个字段是灰色的)分别为1个、2个和3个字节长,而在网络号字段的最前面有1~3位的类别位,其数值分别规定为0、10、110。
    • A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长
    • D类地址(前4位是110)用于多播(一对多通信)
    • E类地址(前4位是111)保留为以后用

    常用的三类IP地址

    A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0),但可指派的网络号是126个(2^7-2)。减2的原因:网络号全0为保留地址,表示本网络。网络号为127(011111111)的地址保留用于环回测试本主机的进程间通信

    A类地址的主机号占3个字节,因此每一个A类网络中的最大主机数是(2^24-2), 即16770214。减2的原因是:全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0),全1的主机号字段表示该网络上的所有主机

    A类IP地址空间共有2^32 (即4294967296)个地址。整个A类地址空间有 2^31 个地址,占整个IP地址空间的50%

    B类地址的网络号字段有2个字节,但前面两位(10)已经固定了,只剩下14位可以进行分配。因为网络号字段后面的14位无论怎样取值也不可能出现使整个2字节的网络号字段成为全0或全1,因此这里不存在网络总数减2的问题。但实际上B类网络地址1280.0.0是不指派的,而可以指派的B类最小网络地址是128.1.0.0。因此B类地址可指派的网络数为2^14-1,即16383。

    B类地址的最大主机数是2^16,即65534。这里需要减2是因为要扣除全0和全1的主机号

    B类地址空间共约有2^30个地址,占整个P地址空间的25%。

    C类地址有3个字节的网络号字段,最前面的3位是(110),还有21位可以进行分配。C类网络地址192.0.0.0是不指派的,可以指派的C类最小网络地址是192.0.1.0,因此C类地址可指派的网络总数是2^21-1,即2097151。

    每一个C类地址的最大主机数是2^8-2,即254,减2是因为要扣除全0和全1的主机号

    C类地址空间共约有2^29个地址,占整个IP地址的12.5%。

    image-20200712203835354

    image-20200712203854575

    IP地址与硬件地址

    物理地址数据链路层物理层使用的地址,IP地址是网络层以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)

    image-20200712204006161

    IP地址仅在网络层及以上使用

    物理地址只在数据链路层和物理层使用

    网际层会对TCP/UDP数据报进行封装,并在IP数据报的首部添加目的IP地址和源IP地址,并交付给数据链路层

    数据链路层将IP数据报封装为MAC帧,MAC帧的首部有目的硬件地址和源硬件地址,并在各个主机(路由)上进行传播

    各个主机(路由)会对MAC帧进行解析,获取IP地址信息后选择对其进行接收,或者再次打包转发

    image-20200712204333108

    ARP地址解析

    由于IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。

    ARP协议的用途是将网络层的IP地址解析为数据链路层的硬件地址

    image-20200713091938512

    每一台主机都设有一个ARP高速缓存(ARP cache),当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。也有可能查不到主机B的IP地址的项目。

    在局域网中主机A对所有主机进行广播,收到广播的主机B会对主机A进行单播响应

    ​ 由于在未来一段时间内主机AB可能还会继续通信,因此主机A在发送其ARP请求分组时,就把自己的IP地址到硬件地址的映射写入ARP请求分组。当主机B收到A的ARP请求分组时,就把主机A的这一地址映射写入主机B自己的ARP高速缓存中。以后主机B向A发送数据报时就很方便了。

    当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)

    ​ 同时ARP高速缓存内的映射信息是有生存时间的,到达一定时间后就会被清除,主要是因为硬件地址可能会发生改变(主机断电,主机坏了等)

    使用ARP的四种情况

    1. 发送方是主机(如H1),要把IP数据报发送到同一个网络上的另一台主机(如H2)。这时H1发送ARP请求分组(在网1上广播),找到目的主机H2的硬件地址
    2. 发送方是主机(如H1),要把IP数据报发送到另一个网络上的一台主机(如H3或H4)。这时H1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。R1要做的事情是下面的(3)或(4)。
    3. 发送方是路由器(如R1),要把IP数据报转发到与R1连接在同一个网络(网2)上的主机(如H3)。这时R1发送ARP请求分组(在网2上广播),找到目的主机H3的硬件地址。
    4. 发送方是路由器(如R1),要把IP数据报转发到网3上的一台主机(如H4)。H4与R1不是连接在同一个网络上。这时R1发送ARP请求分组(在网2上广播),找到连接在网2上的一个路由器R2的硬件地址。剩下的工作由这个路由器R2来完成。

    image-20200817151108004

  • 相关阅读:
    springboot 基础
    spring 基础
    spring MVC 基础
    windows shell
    oracle 创建用户和视图并授权
    maven 安装本地依赖
    JAVA ssl 证书
    mybatis 递归
    MyBatis基础
    当年的毕设-cpf (一个简易的协议 fuzzer)
  • 原文地址:https://www.cnblogs.com/code-duck/p/13831499.html
Copyright © 2011-2022 走看看