计网复习(网络层)

概述

网络层工作流程 将分组从发送方发到接收方 发送方将数据段包装成分组发出去 接收方将分组解出数据段然后给传输层 网络层协议在每台主机和路由器上 剩下的直接在具体内容里看吧

虚电路和数据报网络

数据报网络在网络层提供无连接服务 虚电路网络是有连接服务 可以对比传输层的TCP和UDP,但是也有区别

  • 服务是主机到主机,提供给传输层(传输层是端到端,提供给应用进程的服务)
  • 同一时间提供两种中的一种(传输层:提供TCP和UDP)
  • 在端系统及网络核心实现(传输层是在端系统实现的)

虚电路网络

和普通的电话线路相似,性能可靠,源端到目的端 特点:

  • 数据传输前建立虚电路,传输完毕拆除虚电路
  • 每个分组携带vc标识
  • 从源到目的的路径上的每个路由器都要维护每个连接的状态信息
  • 链路、路由器资源可能分配给vc

数据报网络

对于端到端的连接没有状态信息维护,分组使用目的主机的地址进行转发,同一个源到目的主机分组可能走不同的路径 blacsheep 使用的是最长前缀匹配,不作过多说明

路由器工作原理

首先是路由器的两个主要功能:

  • 运行路由算法/协议(RIP,OSPF,BGP),管理控制平面
  • 将分组从输入链路转发到适当的输出链路,转发数据平面

路由器的结构如下图 blacsheep ####输入端口

  • 根据分组中的目的地址,在输入端口的缓存中查找转发表得出适当的输出端口
  • 有硬件查找和线性搜索两种
  • 目标:要求输入端口的处理速度超过线路的处理速度
  • 排队:如果输入端口分组的到达速度快于转发速度,那么就会进行排队

交换结构

在输入端口的路由表已经找到了输出端口,后面就要依靠交换结构来将分组从输入端口转到输出端口了 交换结构有三种

  • 内存交换

传统的计算机,交换在cpu的控制下完成的,分组被拷贝到内存 这种交换收到内存带宽的限制(每个分组经过两次总线)

  • 总线交换

分组从输入端口缓存经过一根共享总线到达输出端口缓存,交换速率受到带宽限制

  • 互联网络交换

克服了总线带宽的限制

输出端口

  • 缓存

当分组从交换结构达到的速率快于输出链路速率的时候就需要缓存

  • 调度原则

先到先服务FCFS,加权公平排队WFQ 抛弃原则:弃尾,主动队列管理,随机早期检测 当分组从交换结构达到的速率过快,输出端口缓冲区溢出的时候则会造成分组的丢失

网际协议

Internet网络层 blacsheep

IP数据报格式

头部20字节,具体来看 blacsheep

分片和重组

例题 blacsheep 每隔一个完整数据报偏移为1480/8=185,ID相同,除了最后一个数据报的fragflag为0其他的均为1,length为MTU

ip寻址:介绍

IP地址:分配给主机或路由器接口的32bit的标识符 接口:主机/路由器和链路之间的边界

  • 路由器和主机都可以有多接口
  • 每个接口有一个ip地址
子网

IP高位为子网部分 低位为主机部分 什么是一个子网?

  • 设备接口的IP有相同的网络部分
  • 没有路由器的介入,物理上能够互相到达

为了确定子网,分开主机和路由器的每个接口,从而产生了几个分离的网络岛,这些独立网络中的每一个叫做一个子网

子网掩码

和IP做AND运算,获得的结果相同则处于同一子网

分类ip
blacsheep
CIDR地址块

格式:a.b.c.d/x

DHCP

问:主机如何获得IP? windows:控制面板->网络->配置->tcp/ip->属性 unix:/etc/rc.config

  • DHCP(动态主机配置协议)

自动从一个DHCP服务器得到IP地址

目标:

  • 允许主机在加入网络时从网络服务器动态得到IP地址
  • 能够在使用时续借地址租用
  • 允许重用地址
  • 支持准备加入网络的移动用户
  • DHCP概述 主机广播"DHCP discover" DHCP回复"DHCP offer" 主机请求 "DHCP request" DHCP发送地址"DHCP ack"
NAT

动机:对外部网络来讲,本地网络只用一个IP地址:

  • 不需要从ISP分配一系列IP,只要一个IP地址用于所有设备

  • 本地网络改变设备的IP不需要通知外界

  • 可以变更ISP而不用改变本地网络的设备的地址

  • 本地网络内部不能被外界寻址(对外界不可见)

执行 对于NAT路由器

  • 对于外出的分组,替换每个外出分组的(源ip,端口)为(NAT IP,新端口),远程服务器用(NAT IP,新端口)作为目的地来响应

  • NAT转换表中,每个(源IP,端口)到(NAT IP,新端口)转换配对

  • 进来的分组:对每个进来的分组,用保存在NAT表中的(源IP 端口)来替换目的域(NAT IP,新端口)

也就是用NATIP来做外访问外网的媒介,示意图如下 blacsheep

ICMP

用于主机路由器之间彼此交流网络层信息 - 差错报告:不可到达的主机,端口,协议

  • 请求/应答

位于IP之上 - ICMP消息装载在IP分组里 ICMP的类型 blacsheep

ipv6

初始动机:32-bit地址空间即将用尽 其他动机:改变格式可以帮助转发 IPv6数据报格式

  • 固定长度的40字节首部

  • 不允许分片

ipv6和ipv4的不同:

  • 校验和:全部去掉,减少每一跳的处理时间

  • 选项:允许,但是不是标准首部的一部分,而是用下一个首部域指出

  • ICMPv6:新版本的ICMP,增加了消息类型,比如分组太大,多波组管理功能

ipv4到ipv6的过渡 两种推荐方法:

  • 双栈:一些路由器具有双重栈能够在两种格式中转换

即ipv6和ipv4之间转换

  • 隧道:穿过ipv4路由器的时候,ipv6作为分组负载

用ipv4包住ipv6

选路算法

选路算法决定了路由器中转发表中的值 路由算法可以简单的分个类 比如全局或是分散 全局 所有的路由器都有完整的网络拓扑结构和链路开销 使用链路状态算法(如dijkstra) 分散 路由器只知道物理连接的邻居和到邻居的链路开销 通过邻居之间的反复计算处理和交换信息来构造路由表 使用距离矢量算法 或者是静态和动态的 静态的 路由变化很慢,通常有人工设定 动态的 路由变化很快,周期性更新,而且直接影响链路开销的变化

链路状态算法

也就是dijkstra算法 所有节点知道网络拓扑结构和链路开销(通过链路状态广播完成)

距离向量算法

动态计算 dx(y)=minv{c(x,y)+dv(y)} 方程举例: blacsheep 基本思想

  • 每个节点周期性地给相邻节点发送自己的距离向量估计值

  • 当节点x从它的任何一个邻居v收到一个新的距离向量估计值,就用B-F方程更新自己的距离向量估值

简单正常情况下,距离向量估值Dx(y)收敛到实际的最小路径开销dx(y)