计算机网络学习笔记4(网络层)
1.概述
-
-
在发送端要把报文段封装为数据包
-
在接收端要传递报文段给运输层
-
在每一个主机和路由器中都有网络层协议
1.两个关键的网络层功能
-
转发(forwarding)和路由(routing)
-
转发是把数据包从路由器的输入端移动到合适的路由器的输出端
-
路由时决定分组在发送时所经过的路径
-
路由选择算法决定了经过网络的端到端路径
-
每台路由器都有一张转发表,转发表决定了路由器的局部转发
2.虚电路和数据报网络(Virtual circuit and datagram networks)
1.网络层有连接和无连接的服务
-
数据报网络提供网络层的无连接的服务
-
虚电路网络提供网络层的有连接的服务
-
网络层服务是端对端的
2.虚电路(Virtual Circuit)
-
有一条源到端的路径
-
虚电路有三个阶段,虚电路建立,数据传送,虚电路拆除
-
每个包都有一个VC号
-
VC号是沿着该路径的每段链路的一个号码
-
每个路由器在源到端的路径上都必须为进行中的连接维持状态信息。
-
连接和路由器资源可以分配给虚电路
1.一个虚电路包括
-
源和主机之间的路径
-
VC号,沿着该路径的每段链路的一个号码
-
沿着该路径的每台路由器中的转发表的表项
-
每个分组会在它的头部携带一个VC号,而不是端地址
-
VC号会在每一个链路时被改变
-
新的VC号从转发表处获得
-
路由器会保持连接状态信息
3.数据报网络(Datagram network)
-
数据报网络不需要建立连接
-
路由器不维护任何虚电路的状态信息
-
数据包是根据目的主机地址来转发的
-
在匹配目的地址时会采取最长前缀匹配的方法
3.路由器工作原理
1.路由器体系结构
-
路由选择管理控制平面(软件)
路由选择处理器
-
转发数据平面(硬件)
输入输出端口
高速交换结构
-
输入端口
输入最左侧是线路端接,连接物理链路和路由器
中间是链路层协议
右边是查找转发排队
-
交换结构有三种
内存交换,总线交换和互联网络交换
2.阻塞
-
HOL(Head-Of-the-Line)阻塞
会阻塞输入队列
-
到达的包超过输出速率会造成输出端阻塞
4.网际协议(Internet Protocol)
1.IP数据报格式
-
IP数据报头有20个字节,在20-60字节之间
-
版本号(ver):确定IP协议版本
-
首部长度(head len):确定IP报头的长度
-
数据报长度(length):IP数据报的总长度(首部加数据),该字段是16bit,所以理论最大长度为65535字节
-
标识标志和片偏移与IP分片有关
-
寿命(Time-To-Live),一般用跳数来表示,当TTL变为0时该数据报必须要丢弃
-
上层协议:指定了IP数据报的数据部分应该交给哪个特定的运输层协议
-
首部检验和:查找是否出现错误
-
源IP地址和目的IP地址
2.IP数据报分片
-
网路连接有MTU
-
可以把太大的IP数据报分成更小的段
-
分完段之后的IP数据报在目的端重组
-
3.Ipv4编址
-
IP地址是一个32位的标识符
-
接口(interface)是主机或路由器和物理链路的边界
-
一个路由器有多个接口
-
一个IP地址对应一个接口,并且一个主机可以对应多个IP地址
-
IP地址采用点分10进制记法
-
子网(Subnets)
-
对于IP地址来说,高位表示子网部分,低位表示主机部分
-
在同一个子网内的主机有着一样的IP地址的子网部分
-
同一个子网内的设备在没有干预路由器的情况下可以物理的到达对方
-
为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,这些隔离的网络中的每一个都叫做一个子网
-
因特网的地址分配策略被称为无类别域间路由选择(Classless Interdomain Routing CIDR)
-
在CIDR中,子网部分的长度可以是任意的
-
IP地址被划分成形如a.b.c.d/x的格式,x表示了地址的子网部分的比特数
-
这种/x记法有时也称为子网掩码
4.DHCP
-
获取主机地址可以采用动态主机配置协议(DHCP Dynamic Host Configuration Protocol)
-
DHCP可以从服务器中动态的获取地址
-
DHCP具有能将主机连接进一个网络相关方面的自动能力,所以它又被称为即插即用(plug-and-play protocol)协议
-
DHCP的目标:允许主机加入网络时从服务器这里动态的获取IP地址
-
可以续租使用的地址
-
一个地址可以重复使用
-
支持移动设备的用户加入
-
DHCP的过程
-
主机广播DHCP服务器发现的信息
-
DHCP服务器用包含IP地址的DHCP提供信息回复
-
主机发送DHCP请求信息
-
DHCP回复DHCP确认信息
-
DHCP discover message
-
主机端使用广播地址255.25.255.255并且使用主机源地址0.0.0.0
-
DHCP offer message
-
在这个信息中,仍然采用广播地址,并且发送的内容里包含IP地址,网络掩码和IP地址租用期
-
DHCP request message
-
回显配置参数
-
DHCP ack message
-
证实请求参数
-
DHCP返回的可以不只是分配的IP地址,还可以返回网络的掩码,第一跳路由器的地址,DNS服务器的名称和IP地址
5.网络地址转换(NAT)
-
网路地址转换(Network Address Translation NAT)是私有IP地址到公有IP地址之间的转换
-
端口地址转换(Port Address Translate PAT)是将多个私有地址影射到同一个共有IP地址的不同端口
-
私有地址就是不可路由的地址
-
所有离开本网的数据报都有相同的单源NAT IP地址,和不同的端口号
-
动机:就外界而言,局域网只使用一个IP地址
-
不需要从ISP提供的地址范围,对所有的设备只需要一个IP地址
-
在局域网内就能够进行设备地址的更改而不需要通知外界
-
可以在不改变本地网络设备地址的情况下改变ISP
-
局域网内的设备不能显式寻址,不会被外界可见
-
为了实现NAT,NAT路由器必须做这样的事情:
-
对于离开的数据报,必须把要离开数据报的源IP地址和源端口号换成NAT的IP地址和新的端口号,之后要记录NAT转换表,每一个数据对(NAT IP地址,新端口号)都对应着另一个数据对(源IP地址,源端口号),对于进入的数据报,通过查找NAT转换表把数据对进行替换。
6.Ipv6
-
32-bit的IP地址很快就被分配完了
-
Ipv6地址是128位的地址
-
Ipv6报文是定长的40位,并且不允许分段
-
Ipv6报文格式
1.优先级(priority)确定流中数据报的格式
2.流标签(flow Label)确定数据报是否是同一个流
3.下一个首部(next header)该字段标识数据报的内容需要交付给哪个协议
4.跳限制(hop limit)确定报文的生存周期
-
Ipv4向Ipv6迁移的方法
-
隧道法(tunneling)
7.路由选择算法
-
路由选择算法的目的:确通过路由网络送发送主机到接收主机之间“好的”路径
-
路由选择算法:找到最小代价路径的算法
-
需要全部的信息的路由选择算法是链路选择算法(link state)
-
需要分散的局部信息的路由选择算法是距离矢量法(distance vector)
-
全局的意思是所有的路由器都有完整的网络拓扑图和链路的代价信息
-
分散的意思就是路由器只知道于它相邻的邻居的信息,通过跟它的邻居的信息进行迭代的计算
1.距离矢量法(Distance-Vector)
-
在距离矢量法中采用了bellman-ford算法
2.链路状态算法(Link State)
-
将整个网络拓扑的信息广播给所有路由器,然后它们各自计算出汇聚树给其它路由器
-
在这个算法中,每个路由器必须要做的事情有
-
发现它的邻居并了解它们的网络地址
-
测量每个相邻节点的延迟或成本
-
构造一个链路状态包,告诉它刚刚学到的所有内容
-
发送数据包到所有其它路由器
-
计算到每个其他路由器的最短路径--Dijkstra算法
-
阶段1,从邻居那里学习
-
在每一个点对点线路上发送一个Hello包
-
期望另一端的路由器发回一个回复,告诉它是谁
-
阶段2,估计线路的花费
-
确定到每个路由器邻居的延迟
-
-
通过每个接口发送一个ECHO包,然后测量往返延迟
-
为了获得跟更好的结果,测试可以进行多次,平均使用
-
-
阶段3,建立连接状态包
-
每个路由器都构建一个包含所有数据的包
-
-
发送方的身份
-
序列号和年龄
-
邻居列表
-
-
何时建立链路状态报文
-
-
定期建立
-
当一些重大的事情发生时
-
8.层次路由选择
-
使路由的规模变大了
如今的路由的规模太大了,不能在路由表中存储所有目的地
路由表的交换将淹没链接
-
管理自治
因特网成为网络中的网络
每一个网络管理员希望能在自己的网络中控制路由
-
这两个问题都可以通过将路由器组织进自治系统(Autonomous System AS)来解决
-
自治系统的协议分为自治系统内协议和自治系统间的协议
-
自治系统内路由(intra-AS routing)
在同一个自治系统内的主机和路由器之间的路由
所有的自治系统内的路由器都必须运行相同的自治系统内路由协议
在不同的自治系统内的路由器可以运行不同的自治系统内路由协议
有网关(gateway)路由器,在自治系统的边缘,有着与其它自治系统的路由器的连接
-
自治系统间路由(inter-As routing)
是运行在自治系统间的协议
由网关路由器来运行自治系统间路由协议
-
热土豆算法:在最近的两个路由器之间转发包
1.自治系统内的路由选择
1.RIP
-
RIP(Routing Information Protocol)路由选择信息协议
-
RIP是一个基于距离矢量的协议
-
RIP使用跳数作为费用测度
-
在RIP中,路由选择更新信息在邻居之间通过使用一种RIP相应报文来交换,大约每30秒互相交换一次
-
RIP失败的原因
-
DV路由会遇到的问题:
-
路由环,计数到无穷,收敛慢的问题
-
解决方法:水平分割,毒性逆转,抑制定时器,触发更新
2.OSPF
-
OSPF(Open Shortest Path First)开放最短路优先
-
OSPF采用链路状态算法
2.自治系统间的路由选择
-
BGP (Border Gateway Protocol) 边界网关协议
-
BGP分为iBGP(internal BGP session 内部BGP会话)和eBGP(external BGP session 外部BGP会话)
-
eBGP:从邻居自治系统获取子网可达性信息
-
iBGP:向所有自治系统内的路由传播可达性信息
-
根据可达性信息和策略确定到其它网络的“良好”路由
-
BGP会话:两个BGP路由器通过半永久TCP连接交换BGP信息
-
向不同的目的网络前缀发布路径,在BGP中,目的地不是主机,而是CDIR化的前缀
-
BGP是一种路径向量协议(path vector)
-
BGP发布的前缀也包含BGP属性
-
前缀+属性=路由,带有属性的前缀被称为路由
-
BGP中两个重要属性
-
自治系统路径(AS-PATH) 该属性包含了前缀的通告已经通过的AS
-
下一跳(NEXT-HOP) 表示到达下一跳AS的特定内部AS路由器
-
基于策略的路由
-
接受路由的网关使用导入策略来接受/拒绝路径
-
是否向其它邻居AS通告路径,由AS策略决定
-
BGP路由选择
-
1.指定一个本地偏好值作为属性
-
2.选择最短的AS-PATH
-
3.热土豆算法,选择具有最靠近NEXT-HOP路由器的路由
-
4.一些额外的准则