loading...

34网络层

4.1 网络层基本概念

网络层的传输单位为分组,也叫IP数据报

网络层实现了主机到主机的传输

  • 网络中的路由器根据IP数据报首部中的源IP地址、目的IP地址进行分组转发

IP地址:

  • 网络层中标识不同主机的地址,默认指ipv4,ipv4为32bit,ipv6为64bit
    • 对于ipv4,通常以8bit为一组,并且本组按照十进制表示,并用点进行分割
    • 因此每组的合法范围为0~255,如59.175.49.153
  • 接入网络的每台主机至少拥有一个ip地址
  • 通常,路由器的每个接口都需要分配一个ip地址(最新技术标准中取消了该强制要求)

4.1.1 网络层功能

异构网络互联

  • 异构:每个网路的拓扑结构、物理层与链路层的实现不同,主机类型也各不相同
  • 连接异构网络的重要设备是路由器router

在TCP/IP文献中,路由器也称为网关Gateway

路由与转发

  • 路由:
    • 各个路由器之间相互配合,规划IP数据包/分组的最佳转发路径
    • 各个路由器需要运行路由协议,最终生成各自的路由表
  • 转发:
    • 一台路由器,根据自己的转发表,将收到的ip数据包从何时的接口转发出去
    • 转发表相当于精简版的路由表,更利于快速检索

拥塞控制

  • 拥塞:
    • 拥塞状态下,网络上分组数增加,但吞吐量反而下降(来不及处理)
    • 原因:网络上出现过量分组,超负荷,导致网络性能下降
  • 拥塞控制方法:
    • 开环控制:静态
      • 在部署网络时,就提前设计好预防拥塞的方法,一旦网络系统开始运行,就不再修改
    • 闭环控制:动态
      • 动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器,如通过ICMP报文
      • 相关路由器及时调整路由表,避免进一步加剧拥塞

4.1.2 网络层协议

IP协议,Internet Protocol:

  • 也叫网络协议,是互联网的核心

ARP协议:

  • 用于查询同一网络中<主机IP地址,MAC地址>之间的映射关系

ICMP协议:

  • 用于网络层实体之间相互通知异常事件

IGMP协议:

  • 用于实现IP组播

4.2 IPv4

4.2.1 IP分组格式:

img

  • IP数据报分为首部和数据部分,从首部开始发送,均以二进制表示
  • 首部包括固定部分和可变部分,默认情况下,固定部分占20B,可变部分为0 ~ 40B
    • 首部实际长度 = 首部长度字段 x 4B
  • IP分组总长度 = 首部总长度字段 x 1B
  • 版本字段用二进制标识,常见为v4,v6两个标准,分别为1000,1010
  • 标识、标志和片偏移用于目标主机进行重组时确定各分组的先后次序
    img
    • 标识用于区分收到的分片是否数据同一个原IP数据报
    • 标志位共3bit:
      • 最高位考研不考察
      • 中间位DF,don't fragment表示是否允许分片,DF=1表示不允许
      • 最低为MF,more fragment表示是否为最后一个分片,MF=0表示最后一个分片
      • 假设路由器接收到DF=1的且长度超过MTU的数据报,则该路由器只能将该数据报舍弃,并向发送方发送ICMP报文,通知异常
    • 片偏移表示数据部分在被分片前的位置,且偏移位置 = 片偏移字段 x 8B
      • 除最后一个分片外,其余每个分片的数据部分必须是8B的整数倍

img

  • 生存时间字段占8bit,表示网络中可通过路由器数的最大值,常记TTL
    • TTL初值通常由源主机设置
    • 每经过一个路由器,路由器TTL减1,如果TTL减到0,则直接丢弃分组,并向源主机发送ICMP报文
    • 路由器先减TTL,然后判断是否为0,0则直接丢弃,即如果路由器收到TLL=1的数据报则直接丢弃
  • 协议字段占8bit,用于告知接收方传输过来的IP数据报中数据部分对应传输层的TCP还是UDP协议
  • 首部校验和仅校验首部,数据部分的校验交给上层做校验
  • 源地址、目的地址各占32bit,分别表示发送方、接收方ip地址

关于长度方面的记忆口诀,"418,首总偏"

4.2.2 IP分组分片与重组

尽管IP分组数据部分理论最短为0B,理论最长为65515B,但实际传输过程,数据部分长度受到下一段链路最短/最长帧长限制

  • 最大传送单元MTU:
    • 一个链路层数据帧能承载的最大数据量
    • 以太网的MTU=1500B
  • 如果一个IP数据报总长度超出了下一段链路的MTU,则需要将数据部分进行分片,并添加首部信息
    img
    • 注:每个分片都是独立的IP数据报
    • 除最后一个分片,MF=0,其余分片的MF=1;标识、DF照抄;片偏移,第一个分片为0,后续分片片偏移依照上一个分片的长度/8不断累加
    • IP数据报的分片可能在源主机或传输链路的任何一个路由器中发生,并按照传输链路的MTU进行分片
  • 由于一个过长IP数据报被拆分成了若干个独立的IP分组,不同的IP分组可以通过不同的链路传输到目标主机,提高了传输效率

那么同理,接收方在接受完所有分片以后,还需要对分片进行重组,还原原始IP数据报

  • 同时分片可能乱序到达目的主机,只有最后的目的主机需要对收到的分片进行重组
  • 重组过程依赖于IP分组首部的标识、标志和片偏移
  • 标识相同的进行重组,并按照片偏移从小到大排列,直到MF=0的分片,拆除后续分片多余的首部,将数据部分拼回原始IP数据报

4.2.3 IP地址划分——原始分类方案

ipv4协议于1981年发明,只有政府、学校、军队等大机构会使用互联网

  • 由于设计之初只用于特定领域才能使用,仅设计了32bit,共计42亿个地址
  • IP地址资源由互联网名字和数字分配机构ICANN采用有偿租用的方式进行分配

IPv4最初分为三类地址:

  • 单播地址:
    • 单播地址用于分配给独立主机
  • 多播地址:
    • 多播地址用于实现IP多播/组播,将若干个IP归在一个分组
  • 保留地址:
    • 设计之初暂未规定具体用途,暂不使用,保留给未来特定场景使用

任何一个32bit的IP地址分为两部分<网络号>,<主机号>

  • 在互联网初期,要求每台主机、每个路由器接口被分配的IP地址都是全球唯一的
  • 路由器和路由器连接的允许不分配IP地址,但路由器和其他节点连接的接口必须分配IP地址
  • 从属同一个网络的所有主机、路由器接口的IP地址<网络号>均相同
  • 当一台新主机接入网络时,需要给他分配一个IP地址,并配置默认网关
  • 由于ip地址一般按照每8bit为一组,按照十进制表示,表示范围为0~255,可根据该字节区分不同类型的IP

单播地址

依照单播地址的网络号长度,根据前几个比特划分不同类型
img

A类地址:

  • 网络号为前8bit,第一个比特为0;主机号为剩余24bit
  • IP地址首字节为1~126

B类地址:

  • 网络号为前16bit,第一个比特位1,第二个比特为0;主机号为剩余16bit
  • IP地址首字节为128~191

C类地址:

  • 网络号为前24bit,第一个比特为1,第二个比特为1,第三个比特为0;主机号为剩余8bit
  • IP地址首字节为192~223

组播地址

img
D类地址:

  • 不划分网络号和主机号,前4个比特分别为1110,区别于A、B、C类地址
  • IP地址首字节为224~239

保留地址

img
E类地址:

  • 同样不划分网络号和主机号,前4个比特分别为1111,区别于A、B、C、D类地址
  • IP地址首字节为240~255

特殊IP汇总

网络号 主机号 作为IP分组源地址 作为IP分组目的地址 代表含义
Y 全0 不能作为源地址 不能作为目的地址 表示网络号Y所表示的整个网络本身,只能用于路由表、转发表
Y 全1 不能作为源地址 可以作为目的地址 向网络号为Y的网络广播IP分组
0 X 可以作为源地址 不能作为目的地址 表示本网络中主机号为X的主机
全0 全0 可以作为源地址 不能作为目的地址 表示本网络中本主机,在DHCP协议中使用
全1 全1 不能作为源地址 可以作为目的地址 向本网络广播IP分组
127,前八位全1 非全0或非全1的任何数 可以作为源地址 可以作为目的地址 环回自检地址。表示一台主机本身,用于本地
软件环回测试

注:

  • 以上这些特殊地址不能指派给网路中的任何一台主机或路由器私用
  • 如果一个网络中,主机号占N bit,那么这个网络中,最多支持\(2^N-2\)台主机&路由
  • 源地址全0,一般用于一台主机新接入网络时使用
    • 由于其没有IP地址,会向网络发送DHCP报文,源地址全0,目的地址全1的数据报/分组
    • 网络中会存在一台DHCP服务器,该服务器专用于分配ip地址,新接入的主机发送DHCP后会响应其请求并分配一个可用的ip,以DHCP的方式广播

IP例题——IP地址原始分类

img

  • 每个单位申请到唯一的网络号,该单位内所有主机的网络号均为该地址,主机号由该单位的管理员自由分配
  • 如果同一个网络内存在网络号不同的主机,该主机无法于本网络内任何其他主机直接通信
  • 由于路由器于其他节点的连接的接口必须分配IP地址,本网络内所有主机除了配置网络号和主机号外还需要配置默认网关
    • 默认网关即默认路由器,表示本网络接入外部网络,必须向这台路由器的特定端口发送,并由这台路由器转发出去

假设学校网络内的主机166.1.0.1向公司网络内的主机200.1.1.2发送IP分组

  • IP分组首部源地址为166.1.0.1,目的地址为200.1.1.2
  • 源主机通过网络号判断目的地址是否在本地网络,不在本地网络需要通过默认网关转发
  • 源主机可通过ARP协议,得到默认网关的MAC地址,通过修改MAC帧的目的地址为网关的MAC地址,直接向默认网关发送IP分组
    • 该过程发送的MAC帧虽然是发送给默认网关的,但是本网络内的主机都能收到该帧,只是因为IP地址不同直接舍弃
  • 路由器收到分组后,根据其转发表转发到B0端口,经过链路到达公司路由器C0,查询转发表转发到C2端口
  • 转发前,公司路由器也同样通过ARP协议查询目的地址主机的MAC,然后转发到目的主机200.1.1.2

假设学校网络内的主机166.1.0.1向学校网络内的另一台主机166.1.4.4发送IP分组

  • IP分组首部源地址为166.1.0.1,目的地址为166.1.4.4
  • 源主机通过网络号判断目的地址在本地网络,直接通过ARP协议查询目的主机MAC,不需要通过默认网关转发
  • 获得目的主机MAC后,直接发送给目的主机166.1.4.4
    • 该过程发送的MAC帧也会被本网络内的主机收到,只是因为IP地址不同直接舍弃

综上所述,在主机之间的分组发送过程中,分组首部的源地址和目的地址始终没有发生变化,但MAC帧的源MAC地址、目的MAC地址在不断变化

4.2.4 IP地址划分——子网划分方案

1985年,推出子网划分技术

子网划分技术:

  • 原理:
    • 若某单位足有一个IP地址段,假设原本主机号占n bit,可将前kbit保留作为子网号,用剩余n-k bit作为主机号,从而划分除2\(^k\)个子网,且每个子网包含的IP地址数相同
  • 子网划分前,IP地址为二级结构<网络号,主机号>;子网划分后,IP地址为三级结构<网络号,子网号,主机号>
  • 每个子网地址中,主机号不能分配为全0或全1,全0表示子网本身,全1表示子网广播地址

子网掩码,subnet mask:

  • 作用:
    • 用子网掩码和IP地址进行按位与运算,算出<网络号,子网号>,合称为网络前缀
    • 只有网路前缀相同的IP地址,才归属于同一个网络/子网
  • 如果一个网络内部进行了子网划分,那么整个网络中每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
  • 如果一个路由器支持子网划分技术,那么他的转发表中,需要包含<目的网络号,子网掩码,转发接口>

默认子网掩码:

  • 如果一个传统网络A/B/C类内部没有进行子网划分,可以按照如下作为默认子网掩码
  • A类默认为255.0.0.0;B类默认255.255.0.0;C类默认255.255.255.0

默认路由:

  • 默认路由(默认转发表项)设置为<目的网络号全0,子网掩码全0>
  • 在路由器转发表中,如果所有表项都不匹配,那么将默认路由转发出去

IP例题——子网划分

img

主机发送IP数据报过程:

  • 判断目的主机和本机是否属于同一个网路
    • 用子网掩码和主机IP按位与,检查本地IP地址和目的IP地址的网络前缀是否相同
    • 若网络前缀相同,说明目的主机和本机属于同一个网络
    • 若网络前缀不同,说明不属于同一个网络
  • 将IP数据报封装成MAC帧发送到链路上
    • 如果目的主机和本机属于同个网络,就通过ARP协议找到目的主机的MAC地址,再将IP数据报封装成帧,将帧发送给目的主机
    • 如果目的主机和本机不属于同一个网络,就通过ARP协议找到默认网关的MAC地址,再将IP数据报封装成帧,将帧发送给默认网关

路由器转发一个IP数据报过程:

  • 路由器的某个接口收到一个IP数据报
  • 对IP数据报首部进行校验,并从中找到目的IP地址
  • 查询路由器转发表
    • 转发表想包含<目的网络号,子网掩码,转发接口>
    • 检查目的IP地址与每个表项能否匹配,将目的IP地址、子网掩码按位与,匹配表项中目的网络号

    至少默认路由表项一定可以成功匹配

  • 将IP数据报进行转发
    • 根据转发表的查询结果,将IP数据报从匹配的接口转发出去
    • 如果匹配的转发接口和该IP数据报入口相同,就不用再把IP数据报转发回去,直接丢弃

注:

  • 在IP数据报传输过程中,并不会将子网掩码一同传输,只用于本地的子网划分
    • 新加入的主机,会通过本网络的DHCP获得本地网络的子网掩码
    • 对于路由器而言,转发表项中的子网掩码一般情况下填写默认子网掩码
      • 只有整个网络开始搭建过程,需要人工填写对应子网的子网掩码
      • 网络搭建完成后,路由器可通过学习其他路由器的转发表信息从而更新子网掩码
  • 不支持子网划分的路由器R1与支持子网划分的路由器R2之间通信
    • 从R1转发给R2的数据报,对其IP数据报的目的地址自动添加默认子网掩码,以判断是否与转发表中的表项相同
    • 从R2转发给R1的数据报,由于子网掩码并不随IP数据报一同传输,直接按照其首部的网络号转发端口
  • 子网掩码计法除了使用32bit表示,也可以直接在IP地址后标记"/X"
    • 如166.1.0.1/17表示ip地址为166.1.0.1,子网掩码为255.255.128.0
    • 默认路由一般记为0.0.0.0/0

4.2.5 IP地址划分——无分类编制CIDR方案

1993年推出无分类编址CIDR,由于每台主机至少消耗一个全球唯一的IP地址,IP地址告急

  • 传统编址方式,一个单位申请的IP地址段,只能按照A、B、C三类进行选择,IP地址资源分配不灵活,利用率很低,有限的IP地址资源很快就耗尽
  • CIDR不同于传统的子网划分技术
    • 子网划分是在获取A、B、C类网络后,将一部分主机号划成子网,自行组成网络前缀,方便本单位对IP的管理(单位自己的管理);
    • CIDR是从IP地址管理机构层面,直接提供给单位一个独立的网络前缀,增加IP地址资源分配的灵活性(对IP地址管理结构的管理)

无分类编制CIDR

  • 将32bit地址直接分为<网络前缀,主机号>
    • 某单位有2000态主机想要联网,ICANN可以给他分配一个21bit网络前缀的CIDR地址快
    • 前21 bit为该网段的网络地址,末尾11 bit由申请单位自行分配
  • 单位获得CIDR地址快后,可以再进一步进行子网划分
    • 定长子网划分:类同传统子网划分技术
      • 在一个CIDR地址快中,把主机号前k bit保留作为定长子网号,划分出2\(^k\)个子网,每个子网包含IP地址块大小相等
      • 缺点:
        • 每个子网都等大,不够灵活,IP地址利用率低,浪费有限的IP地址资源
    • 变长子网划分:
      • 在一个CIDR地址快中,划分子网是,子网号长度不固定,每个子网包含IP地址快大小不同
      • 变长子网划分相比定长子网划分更加灵活

无分类编址CIDR、变长子网划分的应用

CIDR网络地址块子网划分
img

例题:咸鱼电信公司租用了一个CIDR地址快128.14.32.128/27

  • 由于网络前缀占27位,仅有5位作为主机号,即共有2\(^5\)=32个IP地址
  • 现有如下需求,为咸鱼电信公司设计地址分配方案,并配置咸鱼电信的路由器转发表
    1. 假设某人向该公司购买宽带服务,用于开网吧,网吧共12台电脑,每台电脑需要分配一个IP地址,且所有电脑属于同一个子网
    2. 旺财家共5口人,忍受一台电脑,每台电脑需要分配一个IP地址,所有电脑要组成一个子网
    3. 狗剩家只有一条电脑,需要从咸鱼电信的路由器拉一条"路由器直连主机"的点对点链路

分配过程:
img

  • 网吧需要12个IP地址,可将最高位主机号0,1分别将32个IP地址划分为两个16个地址的子网,并将其中一个子网分配给网吧使用,除去全0,全1两个地址,网吧与咸鱼电信路由器直接相连还需占用1个IP,因此网吧共最大可分配13个IP
  • 剩余16个地址,可以再拿出1位主机号,分成两个8个地址的子网,再将其中一个子网分配给旺财家,除去全0、全1,旺财家与咸鱼电信路由器直接相连还需占用1个IP,因此旺财家最大可分配5个IP
  • 剩余的8个地址,再拿出1位主机号,分成两个4个地址的子网,其中一个子网分配给狗剩家,出去全0,全1两个地址,狗剩与咸鱼电信路由器直接相连还需占用1个IP,因此狗剩所分配的子网至多分配一个IP
  • 剩下的4个地址的子网,同狗剩,至多也就分配给1个独占地址,因此也不能执行进一步子网划分

路由转发拓扑结构:
img

  • 在路由转发表中不难发现,每个分配出去的子网的网络前缀都与其他子网前缀的前缀各不相同

总结:
CIDR地址块的子网划分技巧:可以利用类似于"从根到叶构造二叉哈夫曼树"的技巧

  • 原始CIDR地址块作为根节点(假设可以自由分配的主机号占 h bit)
  • 每个分支节点必须同时拥有左右孩子,左0,右1(反过来也行)
  • 每个叶子结点对应一个子网,根据根节点到达叶子结点的路径来分析子网对应的IP地址块范围
  • 整棵树的高度不能超过h-1,h为CIDR网络块剩余的主机号位数 (因为即便最小的子网也至少要保留 2bit 主机号)

采用CIDR技术后,主机发送IP数据报的过程和采用子网划分技术时相同

子网划分原则

  • 不重合,不遗漏
  • 显然,在子网构造的二叉哈夫曼树中,祖先节点IP地址空间包括子孙节点IP地址空间
    • 要求不重合,则说明各子网节点,只能拥有一个唯一的祖先节点
    • 要求不遗漏,可以假设从根节点出发流水,看下面花费的子网分支能否把水给堵住

例题:将一个IP网络划分为4个子网,若其中一个子网为172.16.1.128/26

  • 其CIDR地址块至多为172.16.1.0/24,主机号占8 bit,即0000 0000/24
  • 下一级子网为0000 0000/25和1000 0000/25,分别为172.16.1.0/25,172.16.1.128/25
    • 172.16.1.0/25可划分为0000 0000/26和0100 0000/26,分别为172.16.1.0/26,172.16.1.64/26
    • 172.16.1.128/25可划分为1000 0000/26和1100 0000/26,分别为172.16.1.128/26,172.16.1.192/26

下列网络中,不可能是172.16.1.128/26的另外三个子网之一的是:
A:172.16.1.0/25,B:172.16.1.64/26,C:172.16.1.96/27,D:172.161.224/27
img

  • A和题干,D,以及1100 000/27可构成四个子网,确保不重合不遗漏
  • B和题干,以及0000 0000/26,1100 0000/26可构成四个子网,确保不重合不遗漏
  • C和题干,就算加上1100 0000/26,0000 0000/26构成四个子网,也无法保证不遗漏,还需一个0100 0000/27,存在五个子网,不符合题意

4.2.6 IP地址划分——路由聚合方案

路由聚合:也称构成超网

  • 对一个路由转发表,如果有几条路由表项的转发接口相同,部分网络前缀也相同,则可将这几条路由表项聚合为一条
  • 路由聚合是伴随着CIDR技术的出现一同出现的,由于减少路由表项
  • 特点:
    • 进行路由聚合,可以减少路由表的大小,从而加快查询,转发时延更低
    • 如果表项转发接口不同,不能进行路由聚合
    • 路由聚合可能会引入额外的无效地址

最长前缀匹配原则:

  • 假设某路由器接收到一个IP数据报,该路由器使用路由聚合技术,按照转发表中匹配的最长前缀的接口进行转发
  • 因此引入CIDR技术后,由于路由聚合,路由器转发IP数据报的过程会存在差异
    • 一个IP地址在转发表中可能匹配多个表项,按照最长前缀匹配原则

4.2.7 IP地址划分——NAT方案

1994年,推出NAT技术

网络地址转化NAT技术:

  • 多个设备同处于一个局域网下,让同一局域网下的设备共用同一个全球唯一的IPv4地址连接到互联网中,从而缓解了IP地址不够用的问题
  • 由于这个技术的出现,将本地网络划分成内网IP/私有IP地址,以及外网IP/全球IP地址/公网IP
  • 全球IP地址:
    • 由ISP提供,全球唯一。外网IP是一个局域网与外接通信时所需使用的IP地址
  • 私有IP地址:
    • 包括以下IP范围:
      • 10.0.0.0 ~ 10.255.255.255
      • 172.16.0.0 ~ 172.31.255.255
      • 192.168.0.0 ~ 192.168.255.255
    • 这些IP只允许分配给局域网内部的节点,不允许分配给互联网上的节点
    • 每个局域网内部都可自行分配这些私有IP地址,且可以复用
      • 只要求局域网内唯一,不要求全球唯一

NAT路由器:

  • 作用:
    • 转发IP数据报时,进行内网IP和外网IP的相互转换
  • NAT表:
    • NAT路由器除了转发表外额外的一个记录表,用于记录地址转换关系,<内网IP:端口号,外网IP:端口号>
    • 端口号为上层传输层进程对外通信所使用的虚拟端口,同一台主机内唯一,可以复用,共16bit
      • IP+端口号,对应一个主机内一个特定的进程
  • 由于NAT路由器使用了端口号,因此需要实现传输层的功能

普通路由器和NAT路由器对比

普通路由器转发IP数据报时,不会改变源IP、目的IP地址

  • 普通路由器仅包含网络层及以下层的功能

NAT路由器接收到一个IP数据报时

  • 从内网转发到外网,会更改源IP地址、源端口号
  • 从外网转发到内网,会更改目的IP地址、目的端口号

NAT路由示例

img

  • 对于其他网络的主机,只能看到本地网络主机对外暴露的NAT端口,即外网端口

4.2.8 地址解析协议ARP

ARP协议

  • 作用:在一个局域网内,通过ARP协议查询到一个IP地址对应的MAC地址
  • ARP表(ARP缓存):
    • 记录着当前网络内<IP地址,MAC地址>之间的映射关系
    • ARP表是一个数据结构,每台主机、路由器都有自己独立的ARP表
    • ARP表项具有有效期,过期后表项无效,因此需要定期更新ARP表项

ARP分组属于网络层的传输单元
img

  • 如果主机发送的是ARP分组,则下层MAC帧封装数据部分为ARP分组的PDU;如果发送IP分组,则封装IP分组的PDU
  • ARP分组封装到MAC帧中,类型字段值为0x0806

ARP分组发送过程

ARP请求分组:本质上是MAC广播帧

  • 请求分组中必须指明发送方的IP地址X、MAC地址Y,以及需要查找MAC地址的主机IP地址Z
  • ARP请求分组会封装到MAC帧中,帧目的地址全1,源地址为Y

ARP响应分组:本质上是MAC单播帧

  • 响应分组中必须指明发送方的IP地址Z、MAC地址V
  • ARP响应分组会封装到MAC帧中,帧目的地址为Y,源地址为V

img

  • 当接收方收到来自发送方的ARP请求分组时,会顺带将其IP地址和MAC的映射记录在自己的ARP表中
    • 注:尽管ARP请求分组对应的MAC帧是广播帧,但是只有ARP请求中的目的地址IP匹配的主机才会接收该ARP请求分组,即在网络层中,只有IP匹配的主机和发送方对该ARP请求分组可见
  • 因此主机在发送IP数据报以及路由器进行IP数据报转发前,会查找自己的ARP表
    • 如果可以直接获得目的IP对应的MAC地址,则直接封装成帧向该主机/路由器发送
    • 否则需要再进行一次ARP请求分组获得MAC地址,随后按照该MAC地址封装成帧向目的主机/路由器发送
  • 连接H5和H6的设备为集线器,MAC帧的传输过程略有不同
    • 假设H3向H6发送ARP请求分组时,H3的默认网关会直接转发给集线器,集线器同时转发给H5和H6
    • H5发现IP不匹配直接丢弃,H6收到ARP请求分组后进行ARP响应,向H3发送ARP响应分组
    • 但由于H6需要通过集线器将单播MAC帧转发出去,因此H5也会收到该ARP响应分组,但由于目的IP不匹配也同样直接丢弃
    • 集线器转发给H3默认网关后,由于之前转发过ARP请求分组,已得知H3的MAC地址,则直接封装成帧转发给H3

扩展:ARP分组格式(仅了解)

ARP分组和IP分组同属于网络层,但其PDU完全不一样
img

  • ARP分组大小为28B,如果被封装到MAC帧中,需要额外填充18B达到46B才能被发送

4.2.9 动态主机配置协议DHCP

动态主机配置协议DHCP,Dynamic Host Configuration Protocol:

  • 作用:
    • 给刚接入网络的主机动态分配IP地址,配置默认网关和子网掩码
  • DHCP时应用层协议,基于UDP
    img
    • 客户UDP端口号为68,服务器UDP端口为67
  • 网络中的主机通过DHCP获得的IP地址均具有租用期,当租用期快结束时,客户主机可向DHCP发出续租请求对当前分配的IP使用状态进行更新

DHCP采用客户/服务器模型(C/S)

  • DHCP客户:
    • 新接入网络的主机,等待获得IP地址等配置
  • DHCP服务器:
    • 负责分配IP地址的那台主机,管理一系列IP地址池
    • 在一个大型网络内可以由多台DHCP服务器,防止单台服务器负载过高
    • 注:在家庭网络中,通常由家庭路由器兼任DHCP服务器的

DHCP过程

DHCP分为四个过程

  1. 客户端向DHCP服务器发送DHCP发现报文
  2. DHCP服务器向客户端发送DHCP提供报文
  3. 客户端向DHCP服务器发送DHCP请求报文
  4. DHCP服务器向客户端发送DHCP确认报文

img

  1. DHCP发现报文
  • 新加入网络的主机只有MAC地址,因此在DHCP发现报文中必须指明客户主机MAC地址
    • 除了该信息外,还可以向DHCP服务器提出对IP地址租用期的要求
  • 封装到传输层UDP段,UDP中指明本地主机UDP进程的68端口(源端口号)以及DHCP服务器的UDP进程的67端口(目的端口号)
  • 封装到网络层数据报,由于当前主机没有IP,因此源IP地址为全0,该主机也不清楚DHCP服务器的IP,因此该数据报为广播IP数据报,目的地址为全1
    • 由于发送的是广播IP数据报,除DHCP服务器以外的主机也会接收到该报文。MAC帧、IP数据报均顺利接收并向上传递,当解析到UDP段时发现该主机内并不存在相关进程使用67端口
      • 在互联网中,一些专用进程/服务的端口是按照标准规定好的,默认不允许其他进程使用特定端口,除非修改配置文件
    • 由于该主机没有使用67端口的进程,会直接舍弃该UDP包,从而确保了只有DHCP服务器才会响应该DHCP发现报文
  • 封装到链路层MAC帧,源MAC地址为本机MAC,DHCP服务器的MAC地址也未知,也同样需要方式MAC广播帧,目的MAC地址全1
  1. DHCP提供报文
  • DHCP服务器在提供报文必须指明给客户分配的IP地址、子网掩码、默认网关,以及默认的租用期
  • 封装到传输层UDP段,UDP中指明目的主机UDP进程的68端口(目的端口号)以及本地DHCP服务器的UDP进程的67端口(源端口号)
  • 封装到网络层数据报,源地址为DHCP服务器的IP,由于目的主机没有IP,因此目的IP地址仍为全0,因此该数据报仍为广播IP数据报,目的地址为全1
  • 封装到链路层MAC帧,源MAC地址为DHCP服务器MAC,目的地址为新主机的MAC地址,该帧为单播帧
    • 尽管该帧中的IP数据报为广播IP数据报,但路由器会精准转发该单播帧,网络内其他主机不会受到该帧
  1. DHCP请求报文
  • 新主机在请求报文中需要声明接收的IP地址(实际就是之前DHCP分配过来的地址)以及MAC地址信息
  • 封装到传输层UDP段,同上面DHCP发现报文
  • 封装到网络层数据报,由于此时分配过来的IP还不是该主机的IP地址,因此源IP仍为全0,目的地址为全1,该数据报仍为广播IP数据报
    • 由于网络中可能存在多台DHCP服务器,新主机发送的发现报文可能会受到多个DHCP提供报文
    • 新主机发送的请求报文声明接受的IP地址,并且以广播发送,是为了告知其他DHCP服务器,新主机已经接受该IP地址,其余分配过来的IP地址不进行接收(反之其误以为接收了分配过来的IP)
  • 封装到链路层MAC帧,目的MAC地址为全1,源地址为新主机的MAC地址,该帧为广播帧
    • 使用广播帧原因同上
  1. DHCP确认报文
  • DHCP在确认报文中,信息和DCHP提供报文相同
  • 封装到传输层UDP段,同上面DHCP发现报文
  • 封装到网络层数据报,由于此时目的主机IP还不是该分配的IP地址,因此源IP为DHCP服务器IP地址,目的地址为全1,该数据报仍为广播IP数据报
  • 封装到链路层MAC帧,源的MAC地址为DHCP服务器MAC地址,目的地址为新主机的MAC地址,该帧为单播帧

简要汇总

DHCP报文 携带信息 网络层信息 链路层信息
DHCP发现报文 客户主机的MAC地址,可选是否附带要求的租用期 源ip=0.0.0.0,目的IP=255.255.255.255(广播IP数据报) 源MAC=客户MAC地址,目的MAC=FF:FF:FF:FF:FF:FF(广播帧)
DHCP提供报文 给客户分配的IP地址、子网掩码、默认网关以及租用期 源IP=DHCP服务器IP,目的IP=255.255.255.255(广播IP数据报) 源MAC=DHCP服务器MAC地址,目的MAC=客户的MAC地址(单播帧)
DHCP请求报文 客户机确认要使用的IP地址 源IP=0.0.0.0,目的IP=255.255.255.255(广播IP数据报) 源MAC=客户MAC地址,目的MAC=FF:FF:FF:FF:FF:FF(广播帧)
DHCP确认报文 同DHCP提供报文 源IP=DHCP服务器IP,目的IP=255.255.255.255(广播IP数据报) 源MAC=DHCP服务器MAC地址,目的MAC=客户的MAC地址(单播帧)

4.3 IPv6

待更新

4.4 路由算法和路由协议(待更新)

路由算法和路由协议,本质上是让各个路由器相互配合,自动调整路由表、转发表中的信息

静态路由:

  • 通过人工的方式,手动向路由器的路由表中填写网络信息以及转发端口
  • 由于现实状态路由器的数量很多,单纯依赖人工方式不现实

动态路由:

  • 路由器之间相互配合,自行更新路由表、转发表

自治系统AS:

  • 边界网关:
    • 一个自治系统至少有一台路由器与其他自治系统的路由器相连,这类与其他自治系统相连的路由器均被称为边界网关
    • 相对的,自治系统内其他路由器统称为内部网关

距离-向量路由算法

链路状态路由算法

RIP路由协议

OSPF路由协议

BGP路由协议

4.5 IP组播

待更新

4.6 移动IP

待更新

posted @ 2024-10-30 02:01  GK_Jerry  阅读(113)  评论(0)    收藏  举报