《计算机网络自顶向下方法》读书笔记:网络层

Posted 思源湖的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《计算机网络自顶向下方法》读书笔记:网络层相关的知识,希望对你有一定的参考价值。

前言

打算系统学习下计算机网络,就来翻阅经典的自顶向下

本篇是第四章网络层,在网络中的每一台主机和路由器中都有一个网络层部分。正因如此,网络层协议是协议桟中最具挑战性(因而也是最有趣)的部分。将首先学习网络层 数据平面功能,即网络层中每台路由器的功能,主要是IPv4和IPv6;然后学习网络层的控制平面功能,即网络范围的逻辑,主要是路由选择算法,以及广泛用于今天因特网中的诸如OSPF和BGP等路由选择协议

资源:

1、概述

(1)转发和路由选择:数据平面和控制平面

网络层的作用是将分组从一台发送主机移动到一台接收主机,需要使用两种重要的网络层功能:

  • 转发(forwarding):当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。转发是在数据平面中实现的唯一功能(尽管是最为常见和重要的功能),纳秒级
  • 路由选择(routing):当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm),在网络层的控制平面中实现,秒级

先简单提一嘴软件定义网络(Soft-ware-Defined Networking, SDN),如图所示:

(2)网络服务模型

网络层能提供的某些可能的服务包括:

  • 确保交付:该服务确保分组将最终到达目的地。
  • 具有时延上界的确保交付:该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在100ms内)交付。
  • 有序分组交付:该服务确保分组以它们发送的顺序到达目的地。
  • 确保最小带宽:这种网络层服务模仿在发送和接收主机之间一条特定比特率(例如 1 Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则所有分组最终会交付到目的主机。
  • 安全性:网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运 输层报文段提供机密性。

因特网的网络层提供尽力而为服务(best-effort service):传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小的带宽

2、路由器

路由器的体系结构如图所示:

(1)输入端口处理和基于目的地转发

输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层


假设我们的路由器具有4条链路,编号0到3,转发表中用分组目的地址的前缀(prefix)与该表中的表项进行匹配:


当有多个匹配时,该路由器使用最长前缀匹配规则(longest prefix matching rule):在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组

(2)交换

交换结构位于一台路由器的核心部位,因为正是通过这种交换结构,分组才能实际地从一个输入端口交换(即转发)到一个输出端口中,三种方式如下:

(3)输出端口处理

输出端口处理取出已经存放在输出端口内存中的分组并将其发送到
输出链路上

(4)排队

1、输入排队

线路前部(Head-Of-the-Line, HOL)阻塞:在一 个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于线路前部的另一个分组所阻塞

2、输出排队

(5)分组调度

1、先进先出(First-In-First-Out, FIFO)


2、优先权排队(priority queuing)


就是特权插队


3、循环排队(round robin queuing discipline)和加权公平排队
(Weighted Fair Queuing, WFQ)

3、网际协议:IPv4、IPv6和其他

最重要的IP协议:IPv4 [RFC 791]和IPv6 [RFC 2460; RFC 4291]

(1)IPv4报文


如图所示:

  • 版本:4bit,规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分
  • 首部长度:4bit,因为一个IPv4数据报可包含一些可变数量的选项(这些选项包括在 IPv4数据报首部中),故需要确定IP数据报中载荷开始的地方。大多数IP数据报不包含选项,所以一般的IP数据报具有20字节的首部
  • 服务类型(TOS):8bit,使不同类型的IP数据报(例如,一些特别要求低时延、高吞吐量或可靠性的数据报)能相互区别开来
  • 数据报长度:16bit,IP数据报的总长度(首部加上数据),IP数据报的理论最大长度为65 535字节,不过很少有超过1500字节的
  • 标识、标志、片偏移:这三个字段与所谓IP分片有关,有趣的是,IPv6不允许在路由器上对分组分片
  • 寿命(Time-To-Live, TTL):确保数据报不会永远在网络中循环。每当一台路由器处理数据报时,该字段的值减1,若TTL字段减为0,则该数据报必须丢弃
  • 协议:指示了 IP数据报的数据部分应交给哪个特定的运输层协议。例如,值为6表明数据部分要交给TCP,而值为17表明数据要交给UDP,参见[IANA Protocol Numbers 2016 ]
  • 首部检验和:将首部中的每2个字节当作一个数,用反码算术对这些数求和,帮助路由器检测收到的IP数据报中的比特错误
  • 源和目的IP地址:当某源生成一个数据报时,它在源IP字段中插入它的IP地 址,在目的IP地址字段中插入其最终目的地的地址
  • 选项:允许IP首部被扩展,在IPv6首部中已去掉了 IP选项

(2)IPv4数据报分片

一个链路层帧能承载的最大数据量叫作最大传送单元(Maximum Transmission Unit, MTU),因为每个IP数据报封装在链路层帧中从一台路由器传输到下一台路由器,故链路层协议的MTU严格地限制着IP数据报的长度

故需要分片:

  • 发送主机通常将它发送的每个数据报的标识号加1
  • 使用偏移字段指定该片应放在初始IP数据报的哪个位置
  • 最后一个片的标志比特被设为0,,而所有其他片的标志比特被设为1

(3)IPv4 编址

[Stewart 1999]的第1章是介绍IPv4编址的优秀读物

IP地址由因特网名字和编号分配机构(Internet Corporation for Assigned Names and Numbers, ICANN) [ICANN 2016]管理,管理规则基于[RFC 7020]。非营利的ICANN组织[NTIA 1998]的作用不仅是分配IP地址,还管理DNS根服务器

1、子网

如图所示的情况中,如223. 1.1. xxx的IP 地址络形成一个子网(subnet) [RFC950],分配一个地址223.1.1.0/24,其中的 /24记法,有时称为子网掩码(network mask),指示32比特中的最左侧24比特定义了子网地址

2、用动态主机配置协议(Dynamic Host Configuration, DHCP)


如图所示的情况中,通过4步获取IP

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


假设一个用户坐在家庭网络主机10. 0. 0. 1后,请求IP地址为 128. 119. 40. 186的某台Web服务器(端口 80)上的一个Web页面。主机10. 0. 0. 1为其 指派了(任意)源端口号3345并将该数据报发送到LAN中。NAT路由器收到该数据报, 为该数据报生成一个新的源端口号5001,将源IP替代为其广域网一侧接口的IP地址 138. 76. 29.7,且将源端口 3345更换为新端口 5001。当生成一个新的源端口号时,NAT路由器可选择任意一个当前未在NAT转换表中的源端口号。(注意到因为端口号字段为16 比特长,NAT协议可支持超过60 000个并行使用路由器广域网一侧单个IP地址的连接!)
路由器中的NAT也在它的NAT转换表中增加一表项。Web服务器并不知道刚到达的包含HTTP请求的数据报已被NAT路由器进行了改装,它会发回一个响应报文,其目的地址是 NAT路由器的IP地址,其目的端口是5001。当该报文到达NAT路由器时,路由器使用目 的IP地址与目的端口号从NAT转换表中检索出家庭网络浏览器使用的适当IP地址 (10. 0. 0.1)和目的端口号(3345)。于是,路由器重写该数据报的目的1P地址与目的端 口号,并向家庭网络转发该数据报

(5)IPv6

目前已经开始缓慢的代替,但仍在拉扯博弈中,这里就看下报文:

4、通用转发和SDN

通用转发:每台分组交换机包含一张匹配加动作表,该表是由远程控制器计算和分发的

(1)匹配

以于OpenFlow [ McKeown 2008 ; Open Flow 2009 ; Casa- do 2014; Tourrilhes 2014]为例,流表的分组匹配字段如下:

(2)动作

  • 转发:一个入分组可以转发到一个特定的物理输岀端口,广播到所有端口(分组到 达的端口除外),或通过所选的端口集合进行多播。该分组可能被封装并发送到用于该设备的远程控制器。该控制器则可能(或可能不)对该分组采取某些动作,包括安装新的流表项,以及可能将该分组返回给该设备以在更新的流表规则集合下进行转发
  • 丢弃:没有动作的流表项表明某个匹配的分组应当被丢弃
  • 修改字段:在分组被转发到所选的输出端口之前,分组首部10个字段(图4・29中显示的除IP协议字段外的所有第二、三、四层的字段)中的值可以重写

5、路由选择算法(routing algorithm )

用图来抽象

分类:

  • 静态路由选择算法(static routing algorithm):路由随时间的变化非常缓慢,通常是人工进行调整(如人为手工编辑一条链路开销)
  • 动态路由选择算法(dynamic routing algorithm):随着网络流量负载或拓扑发生变化而改变路由选择路径。一个动态算法可周期性地运行或直接响应拓扑或链路开销的变化而运行

(1)链路状态(LS)路由选择算法

Dijkstra算法

(2)距离向量(DV)路由选择算法


6、因特网中自治系统内部的路由选择:OSPF

自治系统(Autonomous System, AS):一个自治系统由其全局唯一的AS号(ASN)所标识[RFC 1930]。就像IP 地址那样,AS号由ICANN区域注册机构所分配[ICANN 2016]。通常在一个ISP中的路由器以及互联它们的链路构成一个AS。然而,某些ISP将它们的网络划分为多个AS

OSPF参见[Huitema 1998; Moy 1998; RFC 2328],使用洪泛链路状态信息和Dijkstra最低开销路径算法。

  • 安全:能够鉴别OSPF路由器之间的交换(如链路状态更新),仅有受信任的路由器能参与一个AS内的OSPF协议,因此可防止恶意入侵者
  • 多条相同开销的路径:当到达某目的地的多条路径具有相同的开销时,OSPF允许使用多条路径
  • 对单播与多播路由选择的综合支持。多播OSPF (MOSPF) [RFC 1584]提供对OSPF的简单扩展,以便提供多播路由选择。MOSPF使用现有的OSPF链路数据库,并为现有的OSPF链路状态广播机制增加了一种新型的链路状态通告
  • 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化地配置多个区域

7、ISP之间的路由选择:BGP

所有的AS运行相同的AS间路由选择协议,称为边界网关协议(Broder Gateway Protocol, BGP) [ RFC 4271 ; Stewart 1999]

(1)作用

BGP为每台路由器提供了一种完成以下任务的手段:

  • 从邻居AS获得前缀的可达性信息:BGP允许每个子网向因特网的其余部 分通告它的存在
  • 确定到该前缀的“最好的”路由:为了确定最好的路由,路由器将本地运行一个BGP路由选择过程(使用它经过相邻的路由器获得的前缀可达性信息)

(2)IP 任播(anycast)

考虑一下情景:

  • 在许多分散的不同地理位置,替换不同服务器上的相同内容
  • 让每个用户从最靠近的服务器访问内容

8、SDN控制平面

SDN体系结构具有4个关键特征[Kreutz 2015 ]:

  • 基于流的转发:SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行
  • 数据平面与控制平面分离:数据平面由网络交换机组成,交换机是相对简单(但快速)的设备,该设备在它们的流表中执行“匹配加动作”的规则。控制平面由服务器以及决定和管理交换机流表的软件组成
  • 网络控制功能:位于数据平面交换机外部。控制平自身由两个组件组成:一个SDN控制器(或网络操作系统[Gude 2008 ]),以及若干网络控制 应用程序。控制器维护准确的网络状态信息(例如,远程链路、交换机和主机的状态);为运行在控制平 面中的网络控制应用程序提供这些信息;提供方法,这些应用程序通 过这些方法能够监视、编程和控制下面的网络设备
  • 可编程的网络:通过运行在控制平面中的网络控制应用程序,该网络是可编程的


9、ICMP:因特网控制报文协议

由[RFC 792]定义的因特网控制报文协议(ICMP),被主机和路由器用来彼此沟通网络层的信息。ICMP最典型的用途是差错报告。例如,当运行一个HTTP会话时,你也许会遇到一些诸如“目的网络不可达”之类的错误报文。从体系结构上讲它位于IP之上,因为ICMP报文是承载在IP分组中的。这就是说,ICMP报文是作为IP有效载荷承载

报文类型如下:

10、网络管理和SNMP


简单网络管理协议(Simple N etwork Management Protocol)版本 2 ( SNMPv2) [RFC 3416]是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。协议数据单元(PDU)的格式和类型如下:


结语

网络层很重要,路由相关知识有点草草过了,回头再细细学下

以上是关于《计算机网络自顶向下方法》读书笔记:网络层的主要内容,如果未能解决你的问题,请参考以下文章

《计算机网络自顶向下方法》读书笔记:传输层

《计算机网络自顶向下方法》读书笔记:传输层

《计算机网络自顶向下方法》读书笔记:链路层和局域网

《计算机网络自顶向下方法》读书笔记:链路层和局域网

《计算机网络自顶向下方法》读书笔记:计算机网络和因特网

《计算机网络自顶向下方法》读书笔记:计算机网络和因特网