第四章 网络层
博文为博主复习期末考试时做的的书本小笔记和大纲(书本为《计算机网络自顶向下方法》第六版),同时也部分参考了网上的资料
概述
1.核心功能:路由和转发
- 转发:分组从输出端口转移到合适的输出端口(转发表:确定本路由器如何转发分组,根据地址信息查出输出链路,然后进行转发)
- 路由:确定分组从源到目的经过的路径(路由算法)
2.其它功能:连接建立(connection setup)
3.网络层服务模型:
- 无连接服务 -> 数据报网络(datagram network):不事先为系列分组确定传输路径;每一个分组独立确定传输路径;不同分组可能传输路径不同 -> 数据报网络
- 连接服务 -> 虚电路网络(virtual-circuit):为系列分组传输确定从源到目的经过的路径(建立连接);然后沿着该路径连接传输系列分组,系列分组传输路径相同,传输结束后拆除连接 -> 虚电路网络
虚电路网络
1.虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接) -> 分组交换,每一个分组的传输利用链路的全部带宽,路径经过的网络层设备共同完成虚电路功能
2.一条虚电路的组成:
- 源和目的主机之间的路径
- VC沿着该路径的每段链路的一个号码(属于一条虚电路的分组将在它的首部携带带一个VC号)
- 沿着该路径的每一台路由器中的转发表表项
4.VC转发表
5.在虚电路中有3个明显不同的阶段
- 虚电路建立
- 数据传送
- 虚电路拆除
6.网络层的连接建立和传输层的连接建立的区别:传输层的连接只涉及两个端系统,但是对于一个虚电路网络,沿着两个端系统之间路径上的路由器都要参与虚电路的建立
数据报网络(因特网)
1.无连接,每一个发送的分组加上目的端系统的地址
2.分组通过路由器查阅转发表转发(根据目的地址 -> 输出链路的接口;最长前序匹配logest prefix matching rule)
路由器工作原理
网际协议:因特网中的转发和编址
1.网络层常用协议一览
- 路由选择协议:①路径选择②RIP,OSPF,BGP
- IP协议
- ICMP协议
IP数据报格式
IP数据报分片
1.背景:不是所有的链路层协议都可以承载相同长度的网络层分组,而一个链路层帧能承载的最大数据量叫做最大传送单元(MTU),MTU限制着IP报文的长度
2.ip分片(ipv6不允许在路由器上对分组分片):将ip数据报中的数据分片分、成两个或者更多较小的ip数据报,用单独的链路层帧封装这些较小的ip数据报(称为片),然后向输出链路发送这些帧;片在其到达目的运输层前需要重新组装(不完整的数据报会被丢弃)
3.标识字段(16bit):发送主机将为它发送的每一个数据报的标识号加1
4.标志位DF(don’t frame.不要分片标志位,为0时表示不可以分片,为1时表示可以分片)
5.标志位MF(more frames.为0时表示最后一个片,其余为1)
6.片偏移:一个ip分组分片封装原ip分组数据的相对偏移量(8字节为单位)
ipv4编址
1.接口(interface):主机/路由器与物理链路的连接,实现网络层接口;路由器通常有一个或者两个接口(有线以太网接口和无线的802.11接口)
2.ipv4:32bit,编号标识主机、路由器的接口,ip地址与每个接口关联
3.ip地址 = 网络号(NetID) + 主机号(HostID)
4.ip子网:ip地址中具有相同的网络号的设备接口,不跨越路由器设备可以彼此物理连通的接口
5.子网划分 -> IP地址 = NetID + SubID(子网号,原网络主机号部分比特,例如00,01,10,11, -> 然后用路由器进行划分) + HostID
6.如何确定是否划分了子网了呢?利用多少位划分子网呢? -> 子网掩码
7.分类编址(classful addressing):网络号长度为8,16,24bit;形如IP地址,取值:NetID和SubID位全部取1,HostID全部取0,于是A,B,C三类的子网掩码就分别是255.0.0.0,255.255.0.0,255.255.255.0;借用3比特划分子网的B网的子网掩码为:255.255.224.0 (224 = 128 + 64 + 32)
8.子网地址+子网掩码 -> 准确确定子网大小;可分配地址范围:IP分组的目的IP地址与子网掩码按位与运算,提取子网地址,也可以得到地址范围了(区分可分配地址范围 -> 需要去掉HostID中全0和全1,一个表示子网地址,一个表示该网段的直接广播地址)
9.特殊ip地址
NetID | HostID | 作为ip分组的SA | 作为ip分组的DA | 用途 |
---|---|---|---|---|
全0 | 全0 | 可以 | 不可以 | 在本网范围表示本机(因为一台主机可能还不知道自己的ip地址),在路由表中用于表示默认路由(相当于整一个Internet网络) |
全0 | 特定值 | 不可以 | 可以 | 表示本网某一个特定主机 |
全1 | 全1 | 不可以 | 可以 | 本网的广播地址(路由器不转发) |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,表示一个网络 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上的所有主机进行广播 |
127 | 非全0或者非全1的任何数 | 可以 | 可以 | 用于本地软件环回测试,称为环回地址 |
10.私有地址
Class | NetIDs | Blocks |
---|---|---|
A | 10 | 1 |
B | 172.16 to 172.31 | 16 |
C | 192.168.0 to 192.168.255 | 256 |
11.CIDR:无类域间路由 -> 地址格式a.b.c.d/x 其中x为前缀长度
12.路由聚集:小的子网集合为更大的子网,减少路由表的大小
例子:一个设备从它组织地址中分配到一块地址
DHCP(动态主机配置协议)
1.DHCP协议步骤
- DHCP服务器发现:新来的主机需要找到DHCP服务器,通过发送DHCP发现报文(DHCP discover message),src ip : 0.0.0.0 dest ip:255.255.255.255
- DHCP服务器提供:服务器收到发现报文,用一个DHCP提供报文(DHCP offer message : 包含推荐的ip,网络掩码,ip地址租用期)做出响应,仍然使用ip广播地址255.255.255.255
- DHCP请求(DHCP request message ):客户从众多offer 报文中选择其中一个,并向选中的服务器提供用一个DHCP 请求报文
- DHCP ACK:对请求报文进行响应
NAT(网络地址转换)
1.实现:
- 替换:利用(NAT IP地址,新端口号)替换每一个外出IP数据报的(源IP地址,源端口号)
- 记录:将替换信息存储在NAT转换表中
- 替换:根据NAT转换表,利用(源IP地址,源端口号)替换每一个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP 地址,新端口号)
2.16-bit端口号字段:可以同时支持65536个并行连接
3.NAT穿透:
- 背景:例如外部网络想要访问内部的服务器,而这台服务器对外唯一可见的地址是NAT地址
- 解决方法:①静态配置NAT(转换表):将特定端口的连接请求转发给服务器②利用UPnP互联网网关设备协议IGD自动配置③中继(如skype):NAT内部的客户与中继服务器建立连接,外部客户也与中继服务器建立连接,中继服务器桥接两个连接的分组
ICMP互联网控制报文协议
1.差错或者异常报告;网络探询
2.两类ICMP报文:差错报告报文
- 目的不可达
- 源抑制
- 超时/超期:ip报文上的TTL字段(每一次经过路由器都会减1)
- 参数问题
- 重定向
网络探询报文
- 回升请求与应答报文ping
- 时间戳请求与应答报文
3.几种不发送ICMP差错报告报文的特殊情况
4.ICMP报文的格式:ICMP报文封装到IP数据报中传输
5.ICMP差错报告报文数据封装
6.ICMP应用Traceroute
IPV6
1.固定长度的40字节,不允许分片
2.128bit
路由算法
1.路由算法的分类(根据算法是全局还是分散来区分)
- 全局式路由选择算法:实践中,具有全局状态信息的算法常被称为链路状态算法(Link State, LS),这是因为该算法必须知道网络中每一条链路的费用
- 分散式路由选择算法(decentralized routing algorithm):以分布式、迭代的方式计算出最低费用路径,每一个结点维护到网络中其它所有结点的费用
2.根据算法是静态还是动态进行分类
链路状态路由算法(Link State, LS)
1.参考:Dijkstra算法
距离向量(Distance-Vector,DV)路由选择算法
1.DP
2.问题
- 好消息传得快,坏消息传得慢(解决:毒性逆转poisoned reverse;定义最大度量值)
层次路由选择
1.自治系统(Autonomous System,AS):在相同的AS下的路由器全部运行相同的路由选择算法,在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择算法(intra-autonmous system routing protocol)
2.网关路由器(gateway router):负责向本AS之外的目的地转发分组
3.向其它AS发包
- 单个网关路由器
- 多个网关路由器:①本AS需要知道相邻的AS可以到达那些地方②并且本AS中的所有路由器都必须知道这些信息。要完成这两项工作需要自治系统间路由选择协议(inter-autonomous system routing protocol);如果有多个网关路由器都可以到达目的地,那么就会选择具有最低费用路径的网关,这使用的方法是热土豆路由选择(hot potato routing)
因特网中的路由选择
1.概述:学习
- AS 内部路由选择协议:RIP,OSPF
- AS间路由选择协议:BGP
AS系统内部的路由选择(也称为内部网络协议IGP:interior gateway protocols)
RIP(路由选择协议:Routing information protocol)
1.使用距离向量协议,每一跳作为它的费用
2.针对振荡的解决:最大费用设为15,大于15等于无穷
3.路由选择更新信息在邻居之间使用一种RIP响应报文(RIP response message)来交换,又被称为RIP通告(RIP advertisement)
4.每一台路由器维护一张称为路由选择表(routing table)的RIP表
OSPF
1.核心:洪泛链路状态信息的链路状态协议和Dijkstra最短路径算法
2.使用OSPF路由器向自治区内其它所有路由器广播路由选择信息,每当有一条链路发生变化,路由器就会广播链路状态信息
3.一个OSPF自治区可以配置多个区域,每一个区域都运行自己的OSPF链路状态路由选择算法,一个区域内的每一台路由器都向该区域内的所有其它路由器广播其链路状态,在一个区域内,一台或者多台区域边界路由器(area border router)负责为流向该区域以外的分组提供路由算法
自治系统间的路由选择:BGP(border gateway protocol)
基础
1.为每一个AS提供:
- eBGP从相邻AS处获得子网可达性信息
- iBGP向本AS内部的所有路由器传播这些可达性信息
- 基于可达性信息和AS策略,决定到达子网的好路由
2.BGP使得每一个AS知道经过其相邻AS可以到达那些目的地,目的地不是主机而是CDIR化的前缀,每一个前缀表示一个子网或者一个子网的集合
3.BGP会话(session):两个BGP路由器(peers)交换BGP报文 -> 通过去往不同目的前缀的路径,报文交换基于半永久的TCP连接
4.BGP报文
- open:与peer建立TCP连接,并认证发送方
- update:通告新路径
- keepalive:没有update时保持连接
- norification:报告先前的报文的差错,也被用于关闭连接
路径属性和BGP路由
1.一个自治系统由其全局唯一的自治系统号ASN,但是有一种叫做桩(stub)的AS就没有ASN,这种桩仅承载源地址或者目的地址为本AS的流量
2.一台路由器通过BGP会话通知一个前缀时,它在前缀包括一些BGP属性,带有属性的前缀叫路由(route)
3.两个重要的属性
- AS-PATH:包含前缀通告所经过的AS序列
- NEXT-HOP:开始一个AS-PATH的路由器接口,指向下一跳AS
BGP路由选择
1.网关路由器收到路由通告后,利用其输入策略(import policy)决策接收/拒绝该路由
2.如果到达目的AS有多条,那么由以下准则选择
- 本地偏好(preference):策略决策(policy decision)
- 最短AS-PATH
- 最近的NEXT-HOP路由器:热土豆路由
BGP路由选择策略
1.书本P267