计算机网络——网络层篇

网络层服务概述

从发送主机向接收主机传送数据段(segment ) 。发送主机:将数据段封装到数据报(datagram )中,接收主机:向传输层交付数据段(segment )。

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

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

网络服务模型

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

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

连接服务(connection service):

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

数据报与虚电路网络

虚电路网络

虚电路网络提供网络层连接服务
虚电路: 一条从源主机到目的地的主机,类似于电路的路径(逻辑连接)
通信过程:

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

每条虚电路包括:

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

对于虚电路网络,每台路由器的转发表包括了VC号的转换。
为什么一个分组沿着其路由在每条链路上不能保持相同的VC号?

  • 逐链路代替该号码减少了在分组首部VC字段的长度。
  • 通过允许沿着该虚电路路径每条链路有一个不同的VC号,大大简化了虚电路的建立。

    虚电路中三个确认的阶段:

  • 虚电路的建立

  • 数据传送
  • 虚电路拆除

数据报网络

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

路由器工作原理

一台路由器的4个组成部分:

  • 输入端口
  • 交换结构
  • 输出端口
  • 选路处理器

IP协议

因特网的网络层有三个主要的组件。

  1. IP协议:寻址规约、数据报(分组)格式、分组处理规约
  2. 选路组件,决定数据报从源到目的所遵循的路径,RIP、OSPF、BGP
  3. 报告数据报中的差错和对某些网络层信息请求进行响应的措施,ICMP

数据报格式

计算机网络——网络层篇_第1张图片

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

IP数据报分片
网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限不同链路的MTU不同。大IP分组向较小MTU链路转发时, 可以被“分片” (fragmented)。

IPv4编址

接口(interface): 主机/路由器与物理链路的连接
IP地址: 32比特(IPv4)编号标识主机、路由器的接口
IP地址:

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

IP子网

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

IP子网划分与子网掩码

计算机网络——网络层篇_第2张图片

特殊IP地址
计算机网络——网络层篇_第3张图片

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

来分析一个组织如何为其设备得到一个地址块和一个设备如何从本地组织地址中被分配到一个地址。

  1. 获取一块地址
  2. 获取组织地址:有两种方法为一台主机分配IP地址。手工配置和动态主机配置协议(DHCP),常被称为即插即用协议。
  3. 网络地址转换(NAT)

ICMP:网际控制报文协议

ICMP最典型的作用是差错报告。但是不仅用于通知差错报告,如ping和源抑制报文。

英特网中的协议

AS内部路由协议也称为内部网络协议IGP(interiorgatewayprotocols)

  • 最常见的AS内部路由协议:
  • 路由信息协议: RIP(Routing Information Protocol)
  • 开放最短路径优先: OSPF(Open Shortest Path First)
  • 内部网关路由协议: IGRP(Interior Gateway Routing Protocol)

RIP协议

早于1982年随BSD-UNIX操作系统发布
- 距离向量路由算法
- 距离度量:跳步数 (max = 15 hops),每条链路1个跳步(防止无穷计数)
- 每隔30秒,邻居之间交换一次DV,成为通告(advertisement)
- 每次通告:最多25个目的子网(IP地址形式)

RIP示例
计算机网络——网络层篇_第4张图片
注意这里路由器之间交换的通告和一般的距离向量路由算法不同,增加了下一跳信息,如果看到某个路由器看到下一跳就是自己,那么就相当于起到了毒性逆转的作用.
RIP链路的失效和恢复信息
如果180秒没有收到通告→邻居/链路失效

  • 经过该邻居的路由不可用
  • 重新计算路由
  • 向邻居发送新的通告
  • 邻居再依次向外发送通告(如果转发表改变)
  • 链路失效信息能否快速传播到全网?
  • 可能发生无穷计数问题
  • 毒性逆转技术用于预防乒乓(ping-pong)环路(另外:无穷大距离 = 16 hops)

RIP路由表的处理:RIP路由表是利用一个称作route-d(deamon)的应用层进程实现的
通告报文周期性通过UDP数据报发送
RIP协议适用于小规模AS,以为最大跳步15.

OSPF协议

采用链路状态路由算法

  • LS分组扩散(通告)
  • 每个路由器构造完整的网络(AS)拓扑图
  • 利用Dijkstra算法计算路由
  • OSPF通告中每个入口对应一个邻居
  • OSPF通告在整个AS范围泛洪
  • OSPF报文直接封装到IP数据报中
  • 与OSPF极其相似的一个路由协议:IS-IS路由协议

OSPF优点
- 安全(security): 所有OSPF报文可以被认证(预防恶意入侵)
- 允许使用多条相同费用的路径 (RIP只能选一条)
- 单播选路与多播选路的综合支持
- 支持在单个选路域内的层次结构

OSPF分层示例:
计算机网络——网络层篇_第5张图片
两级分层

  • 链路状态通告只限于区内
  • 每个路由器掌握所在区的详细拓扑
  • 只知道去往其他区网络的”方向”(最短路径)

区边界路由器(Area Border Routers):“汇总”到达所在区网络的距离,通告给其他区边界路由器(每个小区和蓝色区相交的那个路由器)
主干路由器(Backbone Routers):在主干区内运行OSPF路由算法.(图中蓝色区域的普通路由器)
AS边界路由器(AS boundary routers):连接其他AS.(最上面那个路由器)

BGP路由协议

边界网关协议BGP (Border GatewayProtocol):事实上的标准域间路由协议。将Internet “粘合”为一个整体的关键
BGP为每个AS提供了一种手段:

  • eBGP: 从邻居AS获取子网可达性信息.
  • iBGP: 向所有AS内部路由器传播子网可达性信息.
  • 基于可达性信息与策略,确定到达其他网络的 “好”路径.
  • 容许子网向Internet其余部分通告它的存在:“ 我在这儿!

BGP会话(session): 两个BGP路由器 (“ Peers” )交换BGP报文:

  • 通告去往不同目的前缀( prefix)的路径 (“路径向量(path vector)” 协议)
  • 报文交换基于半永久的TCP连接

BGP报文:

  • OPEN: 与peer建立TCP连接,并认证发送方
  • UPDATE: 通告新路径 (或撤销原路径)
  • KEEPALIVE: 在无UPDATE时,保活连接;也用于对OPEN请求的确认
  • NOTIFICATION: 报告先前报文的差错;也被用于关闭连接

当AS3通告一个前缀给AS1时:

  • AS3承诺可以将数据报转发给该子网
  • AS3在通告中会聚合网络前缀

BGP分发路径信息:
计算机网络——网络层篇_第6张图片
在3a与1c之间, AS3利用eBGP会话向AS1发送前缀可达性信息.

  • 1c则可以利用iBGP向AS1内的所有路由器分发新的前缀可达性信息
  • 1b可以( 也可能不)进一步通过1b-到-2a的eBGP会话,向AS2通告新的可达性信息
  • 当路由器获得新的前缀可达性时,即在其转发表中增加关于该前缀的入口(路由项)

通告的前缀信息包括BGP属性

  • 前缀+属性= “ 路由”

两个重要属性:

  • AS-PATH(AS路径): 包含前缀通告所经过的AS序列: e.g., AS 67,AS 17
  • NEXT-HOP(下一跳): 开始一个AS-PATH的路由器接口,指向下一 跳AS.

BGP路由选择
网关路由器收到路由通告后,利用其输入策略(import policy)决策接受/拒绝该路由e.g., 从不将流量路由到AS x

  • 基于策略(policy-based) 路由
  • 路由器可能获知到达某目的AS的多条路由,基于以下准则选择:本地偏好(preference)值属性: 策略决策(policy decision)、最短AS-PATH、最近NEXT-HOP路由器: 热土豆路由(hot potato routing)、附加准则。

路由选择策略示例:
计算机网络——网络层篇_第7张图片
A向B通告一条路径: AW
B向X通告路径: BAW
B是否应该向C通告路径BAW呢?
- 绝不! B路由CBAW的流量没有任何“收益”,因为W和C均不是B的客户。
- B期望强制C通过A向W路由流量
- B期望只路由去往/来自其客户的流量!

为什么采取不同的AS内与AS间路由协议
策略(policy):

  • inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等.
  • intra-AS: 单一管理,无需策略决策

规模(scale):

  • 层次路由节省路由表大小,减少路由更新流量
  • 适应大规模互联网

性能(performance):

  • intra-AS: 侧重性能
  • inter-AS: 策略主导

你可能感兴趣的:(CS基础技能)