计算机网络网络层知识概括

网络层概述

网络层概述:

  • 从发送主机向接收主机传 送数据段(segment)
  • 发送主机:将数据段封装 到数据报(datagram)中
  • 接收主机:向传输层交付 数据段(segment)
  • 每个主机和路由器都运行 网络层协议
  • 路由器检验所有穿越它的 IP数据报的头部域,决策如何处理IP数据报

网络层核心功能:

  • 转发(forwarding):
    将分组从路由器的输入端口转移到合适的输出端口
  • 路由(routing):
    通过路由算法确定分组从源到目的经过的路径
  • 连接建立
    ①数据分组传输之前两端主机需要首先建立虚拟/逻辑连接
    ②网络设备(如路由器)参与连接的建立
    ③ 网络层连接与传输层连接的对比:
    1、网络层连接: 两个主机之间 (路径上的路由器等网络设备参与其中)
    2、传输层连接: 两个应用进程之间(对中间网络设备透明)

网络层服务模型:

  • 无连接服务(connection-less service):
    ①不事先为系列分组的传输确定传输路径
    ② 每个分组独立确定传输路径
    ③ 不同分组可能传输路径不同
    ④数据报网络(datagram network )
  • 连接服务(connection service):
    ①首先为系列分组的传输确定从源到目的经过的路径(建立连接)
    ② 然后沿该路径(连接)传输系列分组
    ③ 系列分组传输路径相同
    ④ 传输结束后拆除连接
    ⑤ 虚电路网络(virtual-circuit network )

虚电路网络

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

  • 数据报网络提供网络层无连接服务
  • 虚电路网络提供网络层连接服务

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

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

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

  • 分组交换
  • 每个分组的传输利用链路的全部带宽
  • 源到目的路径经过的网络层设备共同完成虚电路功能
  • 通信过程:
    呼叫建立(call setup)→数据传输→拆除呼叫
  • 每个分组携带虚电路标识(VCID),而不是目的主机地址
  • 虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态
  • 链路、网络设备资源(如带宽、缓存等)可以面向VC进行预分配

VC具体实现:

  • 每条虚电路包括:
    ①从源主机到目的主机的一条路径
    ②虚电路号(VCID), 沿路每段链路一个编号
    ③ 沿路每个网络层设备(如路由器),利用转发表记录经过的每条虚电路
  • 沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址
  • 同一条VC ,在每段链路上的VCID通常不同

虚电路信令协议(signaling protocols):

  • 用于VC的建立、维护与拆除
    路径选择
  • 应用于虚电路网络
    如ATM、帧中继(frame-relay)网络等
  • 目前的Internet不采用

数据报网络

数据报网络概述:

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

最长前缀匹配优先:

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

数据报网络 or VC网络?
Internet (数据报网络) :

  • 计算机之间的数据交换
    ①“弹性”服务,没有严格时间需求
  • 链路类型众多
    ①特点、性能各异
    ② 统一服务困难
  • “智能”端系统 (计算机)
    ①可以自适应、性能控制、差错恢复
  • 简化网络, 复杂“边缘”

ATM (VC网络) :

  • 电话网络演化而来
  • 核心业务是实时对话:
    ① 严格的时间、可靠性需求
    ②需要有保障的服务
  • “哑(dumb)” 端系统 (非智能)
    ① 电话机
    ② 传真机
  • 简化“边缘”, 复杂网络

IP协议

计算机网络网络层知识概括

IP数据报

计算机网络网络层知识概括
生存时间(TTL)字段占8位:

  • IP分组在网络中可以通过的路由器数(或跳步数)
  • 路由器转发一次分组,TTL减1
  • 如果TTL=0,路由器则丢弃该IP分组

首部校验和字段占16位:

  • 实现对IP分组首部的差错检测
  • 计算校验和时,该字段置全0
  • 采用反码算数运算求和,和的反码作为首部校验和字段
  • 逐跳计算、逐跳校验

IP分片

  • 网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限
  • 大IP分组向较小MTU链路转发时,可以被“分片” (fragmented)
  • 1个IP分组分为多片IP分组
  • IP分片到达目的主机后进行“重组”(reassembled)

IP编址

IP分组:

  • 源地址(SA)-从哪儿来
  • 目的地址(DA)-到哪儿去

接口(interface):

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

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

IP地址:

  • 网络号(NetID) – 高位比特
  • 主机号(HostID) – 低位比特
    计算机网络网络层知识概括

IP子网:

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

有类IP地址

有类编址:
计算机网络网络层知识概括
特殊IP地址:
计算机网络网络层知识概括
私有(Private)IP地址:
计算机网络网络层知识概括
环回地址 127.0.0.1:
严格来说127.0.0.1只是环回地址之一。所有127.x.x.x都是环回地址。从127.0.0.0 到 127.255.255.255 均予以保留。此地址块中的任何地址都将环回到本地主机中。此地址块中的任何地址都绝不会出现在任何网络中。
环回地址:所有发往该类地址的数据包都应该被 loop back。正常的网络包从IP层进入数据链路层,然后发送到网络上, 而发向loopback地址的包,直接在IP层短路了,也就是发到IP层的包直接被IP层接收了,不再向下发送。
环回地址主要用来做回环测试,通过使用ping 127.0.0.1 测试某台机器上的网络设备,操作系统或者TCP/IP实现是否工作正常。

任何地址 0.0.0.0:
0.0.0.0 不能ping通。0.0.0.0就是任何地址IP_ADDR_ANY,任何地址的意思就是包括环回地址。
任何地址IP_ADDR_ANY的意思也就是,不管主机有多少个网口,多少个IP,如果监听本机的0.0.0.0上的端口,就等于监听机器上的所有IP端口。数据报的目的地址只要是机器上的一个IP地址,就能被接受。

IP子网划分与子网掩码

为什么要划分子网?
IPv4地址如果只使用有类(A、B、C类)来划分,会造成大量的浪费或者不够用,为了解决这个问题,可以在有类网络的基础上,通过对IP地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了。

IP地址:

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

子网掩码:

  • 子网地址+子网掩码→准确确定子网大小
  • 将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址
  • 形如IP地址:
    ①32位
    ② 点分十进制形式
  • 取值:
    ① NetID、SubID位全取1
    ② HostID位全取0

IP.e.g

一e.g:
计算机网络网络层知识概括
把三级IP地址的子网掩码和收到的数据报的目的IP地址145.13.3.10逐位相与运算,就立即得出网络地址来。
归纳上述要点:从网络145.13.0.0外面看,这就是一个普通的B类网络,其子网掩码为16个1后面跟16个0.但进入网络之后还有许多网络,其网络地址是145.13.x.0,在这个B类网络的外面和里面。看到的网络是不一样的。
现在互联网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。
A类地址的默认子网掩码:255.0.0.0
B类地址的默认子网掩码:255.255.0.0
C类地址的默认子网掩码:255.255.255.0
例题:
已知IP地址是141.14.72.24,子网掩码是255.255.192.0。试求网络地址。
解:子网掩码是11111111 11111111 11000000 00000000
掩码的前两个字节全是1,因此网络地址的前两个字节可写为141.14。子网掩码的第四字节是全0,因此网络地址的第四字节是0。
计算机网络网络层知识概括
如果把上例中的子网掩码改为255.255.224.0,同样方法所得网络地址仍为141.14.64.0.
由此可说明:同样的IP地址和不同的子网掩码可以得出相同的网络地址,但是不同的掩码效果是不同的。

二e.g:
计算机网络网络层知识概括
IP地址:201.2.3.192是个C类网络。前24位是网络地址。
子网掩码:255.255.255.192转换为10进制。
计算得出子网号占两位,因此通过计算2的2次方得出可以分出4个子网。

计算机网络网络层知识概括

三e.g:
计算机网络网络层知识概括
计算机网络网络层知识概括

  • 要解答这些问题,先看一个日常生活中的例子.如图2所示,住在北大街的住户要能互相找到对方,必须各自都要有个门牌号,这个门牌号就是各家的地址,门牌号的表示方法为:北大街+XX号.假如1号住户要找6号住户,过程是这样的,1号在大街上喊了一声:“谁是6号,请回答.”,这时北大街的住户都听到了,但只有6号作了回答,这个喊的过程叫"广播",北大街的所有用户就是他的广播范围,假如北大街共有20个用户,那广播地址就是:北大街 21号.也就是说,北大街的任何一个用户喊一声能让"广播地址-1"个用户听到.
  • 从这个例中可以抽出下面几个词: 街道地址:北大街,如果给该大街一个地址则用第一个住户的地址-1,此例为:北大街0号
    住户的号:如1号,2号等. 住户的地址:街道地址+XX号,如北大街 1号,北大街 2号等
    广播地址:最后一个住户的地址+1,此例为:北大街21号
  • Internet网络中,每个上网的计算机都有一个像上述例子的地址,这个地址就是IP地址,是分配给网络设备的门牌号,为了网络中的计算机能够互相访问,IP地址=网络地址+主机地址,图1中的IP地址是192.168.100.1,这个地址中包含了很多含义.如下所示:
    网络地址(相当于街道地址): 192.168.100.0
    主机地址(相当于各户的门号): 0.0.0.1
    IP地址(相当于住户地址): 网络地址+主机地址=192.168.100.1
    广播地址: 192.168.100.255

CIDR与路由聚合

CIDR详解:

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

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

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

划分超网:

  • 划分超网:将多个小网合并一个大网,主机ID向网络ID借位
    例子:将以下几个小网合并成大网
    220.78.168.0/24 220.78.10101 000.0/24
    220.78.169.0/24 220.78.10101 001.0/24
    220.78.170.0/24 220.78.10101 010.0/24
    220.78.171.0/24 220.78.10101 011.0/24
    220.78.172.0/24 220.78.10101 100.0/24
    220.78.173.0/24 220.78.10101 101.0/24
    220.78.174.0/24 220.78.10101 110.0/24
    220.78.175.0/24 220.78.10101 111.0/24

路由聚合:

  • 层级编址使得路由信息通告更高效。
  • 选用更具体的路由:最长前缀匹配优先。

网关

  • 网关就是一个网络连接到另一个网络的“关口”,实质上是一个网络通向其他网络的IP地址。

  • 比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络A向网络B转发数据包的过程。

  • 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。在和 Novell NetWare 网络交互操作的上下文中,网关在 Windows 网络中使用的服务器信息块 (SMB)协议以及NetWare网络使用的 NetWare 核心协议 (NCP) 之间起着桥梁的作用。网关也被称为 IP路由器。

  • 默认网关:一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。

总结:

  • 有类网络:也叫主类网络或标准网络,就是指把IP地址能归结到的A类、B类、C类IP,使用的是标准的默认子网掩码。
  • 无类网络:相对于有类网络,无类网络IP地址的掩码是变长的。在有类网络的基础上,拿出一部分主机ID作为子网ID。
  • 超网:把多个小网络组合成一个大网络,称为超网(SuperNetting),也可以说子网掩码长度小于相对应的有类网络的叫超网。
  • 子网:有类网络划分成更小后的网络,称为子网(Subnet),也可以说子网掩码长度大于相对应的有类网络的叫子网。
  • 广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。
  • “255.255.255.255” 是一种受限的广播地址,常用于在计算机不知道自己IP地址的时候发送,然后在返回目标的地址给发送广播的设备获取目标IP,比如设备启动时向DHCP服务器索要地址等等,一般情况下,路由器不会转发目标为受限广播地址的广播包。而且,有些路由器/Wi-Fi热点不支持该广播地址(例如:用Android手机做Wi-Fi热点的时候),因此在程序中会出现“ENETUNREACH (Network is unreachable)”的异常,因此,为了保证程序成功发送广播包,建议使用直接广播地址,例如:当前IP地址是 192.168.1.100,子网掩码是 255.255.255.0 的情况下,广播地址为:192.168.1.255,(具体的推算方法这里就不展开了,可以参考计算机网络相关书籍)。

DHCP协议

如何获得IP地址?

  • “硬编码”:静态配置
  • 动态主机配置协议-DHCP: Dynamic Host Configuration Protocol
    ①从服务器动态获取:
    • IP地址
    • 子网掩码
    • 默认网关地址
    • DNS服务器名称与IP地址
    ② “即插即用”
    ③ 允许地址重用
    ④ 支持在用地址续租
    ⑤ 支持移动用户加入网络

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

  • 主机广播 “DHCP discover”(发现报文)
  • DHCP服务器利用 “DHCP offer” (提供报文) 进行响应
  • 主机请求IP地址: “DHCP request” (请求报文)
  • DHCP服务器分配IP地址: “DHCP ack” (确认报文)

网络地址转换(NAT)

网络地址转换(NAT)的作用:
计算机网络网络层知识概括
使用网络地址转换(NAT)的理由:

  • 只需/能从ISP申请一个IP地址------- IPv4地址耗尽
  • 本地网络设备IP地址的变更,无需通告外界 网络
  • 变更ISP时,无需修改内部网络设备IP地址
  • 内部网络设备对外界网络不可见,即不可直接寻址(安全)

网络地址转换(NAT)实现:

  • 替换: 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
  • 记录: 将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端口号)的替换信息存储到NAT转换表中
  • 替换: 根据NAT转换表,利用(源IP地址, 源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号), 即(NAT IP地址, 新端口号)

NAT主要争议:

  • 路由器应该只处理第3层功能
  • 违背端到端通信原则
    ①应用开发者必须考虑到NAT的存在,eg: P2P应用
  • 地址短缺问题应该由IPv6来解决

互联网控制报文协议(ICMP)

互联网控制报文协议 ICMP (Internet Control Message Protocol)支持主机或路由器:

  • 差错(或异常)报告
  • 网络探询

两类ICMP 报文:

  • 差错报告报文(5种)
    • 目的不可达
    • 源抑制(Source Quench)
    • 超时/超期
    • 参数问题
    • 重定向 (Redirect)
  • 网络探询报文(2组)
    • 回声(Echo)请求与应答报文(Reply)
    • 时间戳请求与应答报文

IPv6

最初动机:

  • 32位IPv4地址空间已分配殆尽

其他动机:

  • 改进首部格式
  • 快速处理/转发数据报
  • 支持QoS

IPv6数据报格式:

  • 固定长度的40字节基本首部
  • 不允许分片
  • 地址长度128 位,分成8个部分每个部分16位,按16进制转换。

路由算法

关键问题: 源到目的(如u到z)的最小费用路径是什么?
路由算法: 寻找最小费用路径的算法

路由算法分类:

静态路由 vs 动态路由?
静态路由:

  • 手工配置
  • 路由更新慢
  • 优先级高

动态路由:

  • 路由更新快
  • 定期更新
  • 及时响应链路费用或网络拓扑变化

全局信息 vs 分散信息?
全局信息:

  • 所有路由器掌握完整的网络拓扑和链路费用信息
  • E.g. 链路状态(LS)路由算法(使用Dijkstra 算法)

分散(decentralized)信息:

  • 路由器只掌握物理相连的邻居以及链路费用
  • 邻居间信息交换、运算的迭代过程
  • E.g. 距离向量(DV)路由算法

层次路由

将任意规模网络抽象为一个图计算路由-过于理想化:

  • 标识所有路由器
  • “扁平”网络
    (eg:扁平化概念的核心意义是:去除冗余、厚重和繁杂的装饰效果。而具体表现在去掉了多余的透视、纹理、渐变以及能做出3D效果的元素,这样可以让“信息”本身重新作为核心被凸显出来。同时在设计元素上,则强调了抽象、极简和符号化。)

——在实际网络(尤其是大规模网络)中,不可行!

网络规模:

  • 考虑6亿目的结点的网络
  • 路由表几乎无法存储!
  • 路由计算过程的信息(e.g. 链路状态分组、DV)交换量巨大,会淹没链路!

管理自治:

  • 每个网络的管理可能都期望自主控制其网内的路由
  • 互联网(internet) = 网络之网络(network of networks)

层次路由:

  • 聚合路由器为一个区域:自治系统AS(autonomous systems)
  • 同一AS内的路由器运行相同的路由协议(算法)
    ①自治系统内部路由协议(“intra-AS” routing protocol)
    ② 不同自治系统内的路由器可以运行不同的AS内部路由协议

网关路由器(gateway router):

  • 位于AS“边缘”
  • 通过链路连接其他AS的网关路由器

互连的AS:
计算机网络网络层知识概括
转发表由AS内部路由算法与AS间路由算法共同配置:

  • AS内部路由算法设置AS内部目的网络路由入口(entries)
  • AS内部路由算法与AS间路由算法共同设置AS外部目的网络路由入口
  • 热土豆路由: 将分组发送给最近的网关路由器

路由器到底有没有运输层?

RIP协议

AS内部路由:

  • Internet采用层次路由
  • AS内部路由协议也称为内部网络协议IGP(interior gateway protocols)
  • 最常见的AS内部路由协议:
    ①路由信息协议:RIP(Routing Information Protocol)
    ② 开放最短路径优先:OSPF(Open Shortest Path First)
    ③内部网关路由协议:IGRP(Interior Gateway Routing Protocol)
    ④Cisco私有协议

RIP协议:

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

OSPF协议

OSPF (Open Shortest Path First):

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

OSPF优点(RIP不具备) :

  • 安全(security): 所有OSPF报文可以被认证 (预防恶意入侵)
  • 允许使用多条相同费用的路径 (RIP只能选一条)
  • 对于每条链路,可以针对不同的TOS设置多个不 同的费用度量 (e.g., 卫星链路可以针对“尽力” (best effort) ToS设置“低”费用;针对实时ToS 设置“高”费用)
  • 集成单播路由与多播路由:
    ①多播OSPF协议(MOSPF) 与OSPF利用相同的 网络拓扑数据
  • OSPF支持对大规模AS分层(hierarchical)

BGP协议

Internet AS间路由协议: BGP:

  • 边界网关协议BGP (Border Gateway Protocol): 事实上的标准域间路由协议
    ①将Internet “粘合”为一个整体的关键
  • BGP为每个AS提供了一种手段:
    ①eBGP: 从邻居AS获取子网可达性信息.
    ②iBGP: 向所有AS内部路由器传播子网可达性信息.
    ③ 基于可达性信息与策略,确定到达其他网络的 “好”路径.
  • 容许子网向Internet其余部分通告它的存在:“我在这儿!”.

BGP基础:

  • BGP会话(session): 两个BGP路由器 (“Peers”)交换BGP报文:
    ①通告去往不同目的前缀(prefix)的路径 (“路径向量(path vector)”协议)
    ②报文交换基于半永久的TCP连接

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

BGP路由选择:

  • 网关路由器收到路由通告后,利用其输入策略(import policy)决策接受/拒绝该路由
    ① e.g., 从不将流量路由到AS x
    ② 基于策略(policy-based) 路由
  • 路由器可能获知到达某目的AS的多条路由,基于 以下准则选择:
    ①本地偏好(preference)值属性: 策略决策(policy decision)
    ②最短AS-PATH
    ③最近NEXT-HOP路由器: 热土豆路由(hot potato routing)
    ④附加准则

为什么采用不同的AS内与AS间路由协议?

  • 策略(policy):
    ① inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等.
    ② intra-AS: 单一管理,无需策略决策
  • 规模(scale):
    ①层次路由节省路由表大小,减少路由更新流量
    ②适应大规模互联网
  • 性能(performance):
    ① intra-AS: 侧重性能
    ② inter-AS: 策略主导