网络结构

网络层

  1. IP地址

    • 格式

      {<网络号>, <主机号>}

    • IP地址划分

    ​ A,B,C类地址网络号字段前的$1 \sim 3$位属于类别位,用以标识为哪类地址

    • 易错点

      需要注意A网络号和主机号中各存在两个特殊的号码

      • 网络号字段全0:表示本网络
      • 网络号字段为127:用于本地软件环回测试本主机的进程之间的通信。因此网络号为127的地址不是一个网络地址。
      • 主机号字段全0:表示本主机连接到的单个网络地址($5.6.7.8$所连接到的单个网络地址为$5.0.0.0$)
      • 主机号字段全1:表示网络上的所有主机

      在计算可指派的网络号和网络中的最大主机数时需要排除这些特殊的数值 子网划分

  2. 地址解析协议ARP

    • 用途

      已知一台主机的IP地址,找出其对应的硬件MAC地址

    • 实现形式

      在主机A的ARP高速缓存中存放一个从IP地址到MAC地址的映射表

      在发送IP数据报过程中,若能在映射表中找到对应IP的MAC地址,则进入链路层

      若无法找到,则在局域网中广播发送ARP请求分组,对应IP的主机收到分组后回复A并更新

      A中的映射表

    • 易错点

      ARP协议只能应用于同一局域网,不同局域网的主机之间无法使用(实际上也不需要使用

  3. IP数据报

    • 首部长度:单位为$32$位字(4字节)。因IP首部固定部分为$20$字节,故该字段最小值为$5$

    • 区分服务:单位为字节

    • 生存时间(TTL)

      TTL指明某数据报在互联网中最多经过的路由器数(这样说不太准确,若TTL设为1,在第一个路由器时就会被丢弃了,并没有经过),判断逻辑类似下面的代码。

      #include <iostream>
      
      using namespace std;
      
      int main()
      {
          int ttl;
          if (-- ttl) return 0;
      }
      
    • 首部检验和

      该字段可能会设置题目要求计算某数据报的首部检验和

      其作用为检测数据报的首部是否在传输过程中发生错误

      • 发送方计算方法

        将IP数据报首部数据划分为多个$16$位的序列,使用反码运算(有进位的二进制加法)将所有$16$位序列相加,将结果取反码(所有位取反,不考虑正负)

      • 接收方计算方法

        使用反码运算将首部所有$16$位序列(包含首部检验和)相加,将结果取反码。若结果为0表示未发生变化

      检验原理为$a + (-a) = 0$。设发送方在最终取反之前计算结果为$a$,那么首部检验和为$-a$,显然若信息未发生变化,接收方的运算为$a+(-a)$,结果为0.

  4. 子网

    通过增加分类标准细化IP的划分从而增加IP的利用率

    • IP地址格式

      {<网络号>, <子网号>, <主机号>}

    • 子网掩码

      无论一个网络是否划分子网,其都有一个子网掩码,目的是统一路由器在面对一个划分子网的IP地址和未划分子网的IP地址的寻址工作。