计算机网络网络层知识概括
计算机网络网络层知识概括
网络层概述
网络层概述:
- 从发送主机向接收主机传 送数据段(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: 策略主导