【计算机网络】网络层

计算机网络:自顶向下方法(第五版&第七版)学习笔记,第四章网络层,本章以第五版为主。

概述

  • forwarding转发:move packets from router’s input(输入链路口) to appropriate router output
  • routing路由选择:determine route taken by packets from source to destination,是网络范围的过程
  • 转发表(forwarding table):索引查询链路,路由选择算法(routing algorithm)决定转发表里的值
  • 分组交换机(packet switch):分组交换设备,输入链路进输出链路出
    • 链路层交换机(link-layer switches):基于链路层字段的某些值转发
    • 路由器(router):基于网络层字段的某些值转发
  • 连接建立(connection setup):网络层数据流动前的状态建立
  • 网络层提供的服务
    • 对于数据报来说:确保交付(guaranteed delivery)、具有时延上界的确保交付
    • 对于数据流来说:有序分组交付(in-order datagram delivery)、确保最小带宽(guaranteed minimum bandwidth to flow)、确保最大时延抖动、安全性服务
  • 因特网:尽力而为(best-effort)
  • 三个主要组件:IP协议、路由选择协议(RIP, OSPF, BGP)、控制报文协议(ICMP)

虚电路和数据报网络

  • 虚电路网络(Virtual Circuit,VC):在网络层提供连接服务
  • 数据报网络(Datagram Network):在网络层提供无连接服务
  • 主流计算机网络体系结构连接和无连接二选一,不同时提供,因特网提供无连接服务

虚电路网络

  • 主机间的一条路径,每段链路一个VC号(每个路径上的同一链路VC号可以不同,以减少分组首部VC号长度,和简化虚电路建立),分组携带走的VC号,路由器转发表指示
  • 创建/终止虚电路,转发表增加/删除相应项
  • 为建立连接,路由器维护连接状态信息(connection state information)
  • 虚电路建立(VC setup):从运输层获得地址,决定路径及路上的VC号,沿路上为路由器添加转发表项,这些报文叫信令报文(signaling message),交换报文的协议叫信令协议(signaling protocol)
  • 数据传送(data transfer):数据流动
  • 虚电路拆除(VC teardown):通知结束,删除路上路由器转发表项

数据报网络

  • 路由器用分组的目的地址转发分组,有将目的地址映射到链路接口的转发表(比如前缀匹配)
  • 转发表由路由选择算法修改,几分钟更新一次

路由器

  • 路由器功能:运行路由选择算法和路由选择协议、转发数据报

输入端口(input port)

  • 查找输出端口,利用输入端口的存储器中的转发表,利用硬件达到线性查找
  • 若forwarding速率小于数据包到达速率会排队:Head-Of-the-Line (HOL) blocking(线头阻塞),多个不同入口的包要进一个输出端口,后走的包如果输出链路不排队得被迫排队(queued datagram at front of queue prevents others in queue from moving forward)
  • 依次是线路端接(物理层)、数据链路处理(链路层,协议、拆封)、查找转发排队(网络层)

交换结构(Switching fabrics)

  • 从输入缓存转移到合适的输出缓存
  • 交换速率(switching rate):包转移的速率
  • 三种类型:

输出结构(output port)

  • 缓存,交换速度大于传输速度
  • 分组调度(packet scheduler)程序

网际协议(IP,Internet Protocol)

数据报

IPv4:

  • 首部长度:标记数据开始的位置,一般20bytes
  • 服务类型(TOS):告诉子网需要的服务类型
  • 数据报长度:首部+数据,理论最大65535字节
  • 标识(identifier)、标志(flags)、位偏移(fragmentation offset):让目的主机判断新来的分段属于哪个分组
    • MTU(Maximum Transmission Unit,最大传输单元):The maximum amount of data that a link layer packet can carry
    • 分片:不同链路协议的链路层帧大小不同,将数据分片,在端系统组装
    • 属于同一分组的分段包含同样的标识
    • DF位表示不分段:命令路由器不要将数据分段,因为目的主机不能重组分段;MF位表示是否所有的分组都已到达;flag=0为最后一片,=1为其他片
    • 位偏移说明分段在当前数据报的位置,offset=(MTU20)/8offset=(MTU-20)/8
  • 寿命TTL:用来限制分组的生命周期的计数器,每经过一个结点都有递减,当减到0,分组就丢弃,为了避免在整个网络中分组一直传递的问题
  • 上层协议:到达目的地后这个字段指示上层协议的类型

IPv4编址(addressing)

  • 接口(interface):主机/路由器和物理链路的边界,路由器通常有多个接口,主机一般只有一个
  • IP地址:32位(8+8+8+8),接口地址

特殊IP地址

  • broadcast address(广播地址):主机号全为1,向其它网络广播,必须有一个有效的网络号
  • limited broadcast address (有限广播):255.255.255.255,向本网络的所有主机广播,不需要网络号
  • “0” address(“0”地址):0.0.0.0,本网络本主机
  • loopback address (回送地址):netid=127,将信息回送本机

子网

  • 子网(subnet):device interfaces with same subnet part of IP address, can physically reach each other without intervening router

  • 子网编址(subnetting):将hostid分为subnetid|hostid

  • 子网掩码(subnet mask):如193.1.1.0/24,意味最左侧24位指示了子网地址

  • 地址分配:CIDR无类别域间路由选择(Classless InterDomain Routing):a.b.c.d/xa.b.c.d/x

获得IP地址的方法

  • 系统管理员硬编码在设置文件中,这个IP是手动配置的
  • 动态主机配置协议DHCP(Dynamic Host Configuration Protocol):主机与网络连接时从服务器动态获取IP地址
    • 网络管理员可配置选择每次给主机相同IP还是临时IP(temporary IP address)
    • 主机也可以获得子网掩码、默认网关(第一跳路由器)、本地DNS服务器的IP和名称等信息,又被称即插即用协议(plug-and-play)
    • 分为DHCP discover、DHCP offer、DHCP request、DHCP ack四步
      • DHCP discover:向255.255.255.255广播,本机地址0.0.0.0,UDP 67或68端口
      • DHCP offer:发送报文响应,提供推荐IP地址、网络掩码、IP租用期(address lease time)
      • DHCP request:主机选择一个DHCP服务器响应
      • DHCP ack:证实参数
    • 客户DHCP每次启动都会自动广播请求原来的IP地址和配置,若没有应答但是并未过租用期就继续用
    • 租用期过半时request+ack续租,失败则租期到达87.5%的时候再次利用广播方式发送一个DHCP请求信息续租,如果失败就重新获取(4个过程)
  • 用户IP从ISP那来,ISP的由ICANN(Internet Corporation for Assigned Names and Numbers)管理(还管理DNS和域名),ISP也是子网,因此同前缀的网络信息可以发往一个方向

网络地址转换(Network Address Translation,NAT)

  • 如果ISP连续空间不够、外界网络不需要关心本地网络内的IP分配因此更方便分配和修改、ISP若需要更换IP不需改子网内的IP、IP暴露在外不安全
  • NAT将要发走的数据报中的源IP和端口修改为NAT的IP和端口,收到的数据报反过来修改
  • NAT translation table包含了修改信息

因特网控制报文协议ICMP(Internet Control Message Protocol)

  • 主机和路由器交流网络层信息,如差错报告(error reporting)、回显请求和回复(ping程序)
  • Traceroute程序:通过发不可达UDP,TTL依次设为1,2,3,…根据路由返回的过期信息知道路由器信息,最后一个到达的

IPv6

  • 原因:32位空间不够用,以及对IPv4进行一些优化
  • 数据报
    • 流量类型又称优先级(priority):区别数据包的类别和优先级,与IPv4的TOS类似
    • 流标签:区别在同一个流中的数据报
    • 下一个首部(next header):上一层协议类型
    • 跳限制(hop limit)即TTL
    • 其他去除的:checksum、options(可以在下一个首部里)、分片信息
  • ICMPv6:新版本的ICMP,有更多信息和multicast group management functions
  • IPv4转IPv6:旧路由器可能没法更新到能处理IPv6的,通过建隧道(Tunneling),即通过IPv4群前将IPv6信息打包成IPv4

路由选择算法

  • 找到最小代价路线

分类

  • 全局式&分散式:
    • 全局式(global)路由选择算法:需要知道全局的路径费用,链路状态算法(Link State)LS
    • 分散式(decentralized)路由选择算法:迭代交换信息,距离向量(Distance-Vector)DV
  • 静态&动态:
    • 静态:路由变化缓慢,人工调整转发表
    • 动态:网络流量负载和拓扑变化时/周期性运行

LS算法

Dijkstra

DV

Bellman-Ford,收到相邻节点给的距离向量后更新

Dx(y)minv{c(x,v)+Dv(y)}D_x(y) \leftarrow \min _v\left\{c(x, v)+D_v(y)\right\}

好消息(路径费用变小)传的快,坏消息传得慢,可能出现无穷计数,错误的消息不断传出去更新,解决方法是毒性逆转,如果A到B的最小费用通过C更新了(C告知的),告诉C,A到B费用为正无穷

层次路由选择(Hierarchical Routing)

  • 自治系统AS(autonomous system)组织路由器(如一个ISP内),通过网关(gateway)路由器向外通信
  • 内部要知道哪些网关路由器能到达外部指定地点
  • 热土豆算法(hot potato routing)将包发给最近的网关路由器

因特网路由选择

内部:Intra-AS

又叫内部网关协议Interior Gateway Protocols (IGP)

RIP: Routing Information Protocol

  • 路由信息协议
  • DV算法,跳数(hops)作为费用测度,每条链路费用为1
  • 最大费用15,RIP只能使用在直径不超15跳的AS中
  • 路由间用RIP响应报文更新信息,又叫RIP通告(advertisement),包含多达25个子网的列表
  • 180s没有收到邻居的通告则把邻居视为不可达
  • 16跳即无穷大
  • RIP报文通过UDP发送,RIP是当作应用层进程实现的
  • 一般设在下层ISP

OSPF: Open Shortest Path First

  • OSPF路由协议

  • LS

  • 在IP中传输

  • 周期性/变化时广播链路状态,广播给整个AS,使用flooding

  • 相比RIP的优点

    • 安全:authenticated
    • 多条相同费用的路径
    • 多播单播路由都支持
    • 链路多个成本指标
    • hierarchical OSPF in large domains
      • 主干区域(backbone)
      • 边界(area border)路由器

外部:Inter-AS

BGP: Border Gateway Protocol

  • 边界网关协议

  • BGP连接包括两种:

    • eBGP: obtain subnet reachability information from neighboring AS,即e是external

    • iBGP: propagate reachability information to all AS-internal routers,即i是internal

  • BGP peers产生TCP连接称BGP session

为什么区分内外部

  • 外部要考虑policy,内部只需关注效果
  • 分层次能够减少路由转发表的大小,减少更新所需流量