zoukankan      html  css  js  c++  java
  • 云课堂入门整理---计算机网络-网络层(上)

    网络层服务

    从发送主机向接收主机传送数据段(segment ) 
    发送主机:将数据段封装到数据报(datagram )中

    接收主机:向传输层交付数据段(segment )

    每个主机和路由器都运行网络层协议

    路由器检验所有穿越它的IP数据报的头部域

    • 决策如何处理IP数据报

    网络层核心功能-转发与路由

    转发:将分组从路由器的输入端口转移到合适的输出端口 
    路由:确定分组从源到目的经过的路径

    路由算法(协议)确定通过网络的端到端路径 
    转发表确定在本路由器如何转发分组

    网络层核心功能-连接建立

    某些网络的重要功能

    • ATM,帧中继,X.25 
      数据分组传输之前两端主机需要首先建立虚拟/逻辑连接

    • 网络设备(如路由器)参与连接的建立

    网络层连接与传输层连接的对比

    • 网络层连接: 两个主机之前(路径上的路由器等网络设备参与其中)
    • 传输层连接: 两个应用进程之间(对中间网络设备透明)

    网络层服务模型

    无连接服务(connection-less service):

    • 不事先为系列分组的传输确定传输路径
    • 每个分组独立确定传输路径
    • 不同分组可能传输路径不同
    • 数据报网络(datagram network )

    连接服务(connection service):

    • 首先为系列分组的传输确定从源到目的经过的路径(建立连接)
    • 然后沿该路径(连接)传输系列分组
    • 系列分组传输路径相同
    • 传输结束后拆除连接
    • 虚电路网络(virtual-circuit network )

    数据报与虚电路网络

    虚电路网络

    数据报(datagram)网络与虚电路(virtual-circuit)网络是典型两类分组交换网络

    数据报网络提供网络层无连接服务

    虚电路网络提供网络层连接服务

    类似于传输层的无连接服务(UDP)和面向连接 
    服务(TCP ),但是网络层服务:

    • 主机到主机服务
    • 网络核心实现

    虚电路: 一条从源主机到目的地的主机,类似于电路的路径(逻辑连接)

    • 分组交换
    • 每个分组的传输利用链路的全部带宽
    • 源到目的路径经过的网络层设备共同完成虚电路功能

    通信过程:

    • 呼叫建立(call setup)→数据传输→拆除呼叫 
      每个分组携带虚电路标识(VCID), 而不是目的主机地址 
      虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态 
      链路、 网络设备资源(如带宽、 缓存等)可以面向VC进行预分配
    • 预分配资源=可预期服务性能
    • 如ATM的电路仿真(CBR)

    VC具体实现

    每条虚电路包括: 
    1. 从源主机到目的主机的一条路径 
    2. 虚电路号( VCID) , 沿路每段链路一个编号 
    3. 沿路每个网络层设备(如路由器), 利用转发表记录 
    经过的每条虚电路

    沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址

    同一条VC ,在每段链路上的VCID通常不同

    路由器转发分组时依据转发表改写/替换虚电路号

    转发表

    输入接口 输入VC 输出接口 输出VC
    1 12 3 22
    2 63 1 18
    3 7 2 17
    1 97 3 87

    VC路径上每个路由器都需要维护VC连接的状态

    VC进入路由器后,路由器将VC头替换,然后转发出去

    数据报网络

    网络层无连接 
    * 每个分组携带目的地址 
    * 路由器根据分组的目的地址转发分组 
    * 基于路由协议/算法构建转发表 
    * 检索转发表 
    * 每个分组独立选路

    路由器转发表

    目的地址 输出链路
    地址范围1 3
    地址范围2 2
    地址范围3 2
    地址范围4 1

    最长前缀匹配优先: 
    在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry).

    IP协议

    主机、路由器网络层主要功能:

    • 路径选择 
      • RIP
      • OSPF
      • BGP
    • IP协议 
      • 寻址规约
      • 数据报(分组)格式
      • 分组处理规约
    • ICMP协议 
      • 差错报告
      • 路由器命令

    IP数据报格式

    首部 描述
    版本号(4bit) 描述IP协议的版本号,目前主要有V4和V6两个版本
    首部长度(4bit) 以四字节为单位例如: 5 -> IP首部长度为20(5 * 4)字节,不这么计算的话,长度描述根本不够
    服务类型(8bit) 指示期望获得哪种类型的服务
    1 .只有在网络提供区分服务(DiffServ)时使用 
    2.一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
    总长度(16bit) IP分组的总字节数(首部 + 数据)
    1. 最大IP分组的总长度: 65535B 
    2.最小的IP分组首部: 20B
    3. IP分组可以封装的最大数据:65535 - 20 = 65515B
    生存时间TTL(8bit) IP分组在网络中可以通过的路由器数(或跳步数)
    1.路由器转发一次分组, TTL减1
    2.如果TTL=0,路由器则丢弃该IP分组
    协议(8bit) 指示IP分组封装的是哪个协议的数据包,实现复用/分解
    首部校验和(16位) 实现对IP分组首部的差错检测
    1.计算校验和时,该字段置全0
    2.采用反码算数运算求和,和的反码作为首部校验和字段
    3.逐跳计算、逐跳校验
    源IP地址、目的IP地址字段(各占32bit) 分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址
    选项字段(长度可变,范围在1~40B之间) 携带安全、源选路径、时间戳和路由记录等内容(实际上很少被使用)
    填充(长度可变,范围在0~3B之间) 目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数
    标识字段(16bit) 标识一个IP分组,IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
    标志位(3bit)
    1. DF (Don’t Fragment)
    2. MF (More Fragment)
    DF =1:禁止分片;
    DF =0:允许分片
    MF =1:非最后一片;
    MF =0:最后一片(或未分片)
    片偏移(13bit) 一个IP分组分片封装原IP分组数据的相对偏移量
    片偏移字段以8字节为单位

    IP分片

    网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限不同链路的MTU不同

    大IP分组向较小MTU链路转发时, 可以被“分片” (fragmented)

    • 1个IP分组分为多片IP分组
    • IP分片到达目的主机后进行“重组”(reassembled)

    IP首部的相关字段用于标识分片以及确定分片的相对顺序

    • 总长度、标识、标志位和片偏移

    假设原IP分组总长度为L,待转发链路的MTU为M 
    若L>M,且DF=0,则可以/需要分片 
    分片时每个分片的标识复制原IP分组的标识 
    通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片 
    一个最大分片可封装的数据应该是8的倍数, 因此, 一个 
    最大分片可封装的数据为: 

    M2088

    需要的总片数为: 
    L20d

    每片片偏移字段取值为 
    Fi=d8(i1),1in

    每片的总长度字段为 
    Li={d+20L(n1)d1<ni=n

    每片MF标志位为: 
    MFi={101i<ni=n

    IP编址

    接口(interface): 主机/路由器与物理链路的连接

    • 实现网络层功能
    • 路由器通常有多个接口
    • 主机通常只有一个或两个接口(e.g.,有线的以太网接口,无线的802.11接口)

    IP地址: 32比特(IPv4)编号标识主机、路由器的接口

    IP地址与每个接口关联

    IP地址:

    • 网络号(NetID) – 高位比特
    • 主机号(HostID) – 低位比特

    IP子网

    • IP地址具有相同网络号的设备接口
    • 不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口

    IP子网划分与子网掩码

    “有类”编码 
    如图: 

    特殊IP地址 
     
    私有IP地址 

    子网划分

    IP地址:

    • 网络号(NetID) – 高位比特
    • 子网号(SubID) – 原网络主机号部分比特
    • 主机号(HostID) – 低位比特

    如何确定是否划分了子网?利用多少位划分子网?

    • 子网掩码

    形如IP地址:

    • 32位
    • 点分十进制形式

    取值:

    • NetID、 SubID位
    • HostID位全取0

    将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址

    无类域间路由(CIDR: Classless InterDomain Routing)

    • 消除传统的 A 类、 B 类和 C 类地址界限
    • NetID+SubID→Network Prefix (Prefix)可以任意长度
    • 融合子网地址与子网掩码,方便子网划分
    • 无类地址格式: a.b.c.d/x,其中x为前缀长度

    子网201.2.3.64, 255.255.255.192→201.2.3.64/26

    无类域间路由(CIDR: Classless InterDomain Routing)

    • 提高IPv4 地址空间分配效率
    • 提高路由效率
    • 将多个子网聚合为一个较大的子网
    • 构造超网( supernetting)

    当一个子网无法聚合所有的子网时,需要零碎出去的”子网片”利用最长前缀匹配原则向路由器通告,以便正确收发消息.

  • 相关阅读:
    三、在Canvas中使用WebGL
    二、认识Canvas
    一、WebGL概述
    给XXX客户服务器转移过程中的重大失误
    centos运行netcore error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
    centos运行netcore error:package: ‘Microsoft.AspNetCore.Antiforgery‘, version: ‘2.0.3‘
    React.js 三周 -- 入门到搭建团队基础项目
    Javascript百学不厌
    Javascript百学不厌
    Javascript百学不厌
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9381017.html
Copyright © 2011-2022 走看看