网络层
一、网络层概念以及两种网络连接方式
1.1 概念
转发:指分组从输入链路接口到适当的输出链路接口的路由器本地动作
路由选择:涉及一个网络中的所有路由器,决定分组从源到目的地所采取的端到端路径。
转发表:每台路由去都具有一张转发表,根据分组的首部字段值在转发表中进行检索,然后进行转发。
交换机:链路层交换机,基于网络层字段中的值做转发决定
路由器:基于网络层字段中的值做转发决定。
网络层提供的是尽力而为的服务
虚电路网络:仅在网络层提供连接服务的计算机网络
数据报网络:仅在网络层提供无连接服务的计算机网络
网络层由是三部分组成:ip协议、路由选择部分、报告数据报中的差错以及对网络层信息请求进行响应的设施。
1.2 虚电路网络
1.2.1虚电路的组成:
源和目的主机之间的路径、VC号、沿着该路径的每台路由器中的转发表表项。
1.2.2 数据传输过程:
- 虚电路连接。传输层与网络层联系,网络层决定发送方与接收方之间的路径,以及该路径上的每条链路的VC号,最后在每台路由器的转发表上增加一个表项。在连接建立期间,网络层还会预留改路径上的资源(如带宽)
- 数据传送。
- 虚电路拆除。通知另一侧的端系统结束呼叫,并更新每台路由器上的转发表,删除相应表项。
1.2.3 网络层的虚电路连接与传输层的连接的区别:
- 传输层的连接建立仅涉及两个端系统,但网络层对于此完全不知情。
- 对于虚电路网络层,沿着两个端系统上的所有路由器都会参与虚电路建立,且每台虚电路都知道它的所有虚电路。
1.2.4信令报文和信令协议
信令报文:端系统向网络发送虚电路建立和拆除的报文,路由器之间用于建立虚电路的报文。
信令协议:用来交换信令报文的协议。
1.3 数据报网络
1.3.1 数据传输过程
- 为分组加上目的端系统地址,并将分组推入网络
- 分组达到路由器时,路由器根据目的地址前缀在转发表中进行匹配,当有多个匹配时,采用最常前缀匹配规则,并向该链路接口转发。
1.3.2 数据报网络的特点
- 路由器不维持连接状态信息,但维持转发状态信息,相对于来说变化时间较慢,
- 其转发表是根据路由选择算法来改变的
- 路由器的转发表随时都有可能会被修改,分组在这个过程中,可能会无序到达
1.3.3 虚电路和数据报网络的由来
- 虚电路的概念来源于电话界
- 因特网是一种数据包网络
二、路由器的工作原理
2.1 路由器体系结构
2.2 输入端口
在输入端口会完成查找功能,转发表会从路由选择处理器经独立总线复制到输入线路卡,如上图虚线所示。三态内容可寻址存储器TCMA经常被用于查找转发表内容。
2.3交换结构
三种方式:
经内存交换、经总线交换、经互联网交换
2.4 输出端口
输出端口会取出存放在输出端口内存中的分组,并将其发送到输出链路上。
2.5 排队与丢包
在输入端口与输出端口都会有一定的排队,随着队列的增长,路由器的缓存空间将会最终耗尽,当无内存可用于存储到达的分组时,将会出现丢包。
输出端口:当交换结构的处理速度比输出端口的速度快很多时,会出现排队以及丢包。分组调度程序会保证服务质量,选择进行发送的分组,而主动队列管理会算法则会选择丢弃的分组。
输入端口:当交换结构的处理速度比输入端口的速度慢很多时,会出现排队以及丢包。当出现了这种情况,而输出端口没有分组的竞争行为,这就是线路前部阻塞。
三、网际协议
3.1 数据报格式
IPV4数据报格式
版本号:指明了该数据报的ip协议版本(如:ipv4)
首部长度:数据部分从何开始
服务类型:区分不同类型的数据报
数据包长度
标识、标志、片偏移:与ip分片有关。在ipv6中不允许路由器上对分组分片
寿命:该数据包被一台路由器处理,该字段减1,直到为0被丢弃。
协议:指明ip数据报的数据部分应交由哪种传输层协议。tcp为6,udp为17
首部校验和:用于帮助路由器检测收到的ip数据报中的比特错误。
源和目的地址
选项:允许ip首部被扩展。在ipv6中已被舍弃
数据:有效载荷
3.2 ip数据包分片
一个链路层帧能承受的最大数据为最大传送单元(MTU),受MTU的限制,IP数据报中的数据被分为多个小ip数据报,用单独的链路层帧封装,然后向输出链路发送这些帧。这些每个较小的数据报为片。
在ipv4中,IP数据报的分片在路由器中进行,但重新组装是在端系统中。
标识:发送主机在生成一个数据包时,在贴上源地址和目的地址的同时,会将标识号加1。
标志:数据包进行分片之后,其他片的标志比特都为1,最后一片为0。
片偏移:偏移字段指示该片应放在IP数据报的哪个位置。
3.3 IPV4
主机与物理链路之间的边界叫做接口,每台主机与路由器接口都要拥有自己的IP地址。
因特网的地址分配策略被称为无类别域间路由选择(CIDR),IP地址被划分为了两部分,a.b.c.d/x,x指出了第一部分的比特数。
3.3.1 动态主机配置协议
dhcp是一个客户服务器协议,客户通常是新达到的主机,它要获得ip地址在内的网络配置信息。
dhcp允许主机自动获取一个IP地址,该地址是临时的,每次与网络连接获取到的是随机,不一致的
4个步骤:
- DHCP服务器发现。新主机首先是要发现一台能与其交互的DHCP服务器,通过向udp分组中的端口67发送发现报文。
- DHCP服务器提供:DHCP在收到发现报文后,用DHCP提供报文作出相应。包含了发现报文的事物ID、向客户推荐的IP地址,网络掩码,以及IP地址租用期。
- DHCP请求:客户机选择一个DHCP服务器,并向其发送DHCP请求报文,回显配置参数。
- DHCP ACK:服务器用DHCP ACK报文做出响应,证实其参数。
3.3.2 网络地址转换
nat就是使路由器对外界隐藏了局域网的细节,统一对外界有一个ip地址,通过nat转换表,对应具体的设备。
- 用户请求一个web网页,主机为其分配了任意一个源端口号,并将请求数据报发送到局域网中。
- NAT路由器收到该数据报,为该数据报生成了一个新的源端口号进行替换,并将源IP地址替代为广域网一侧接口的IP地址。路由器也在它的nat路由转换表中增加一个表项。
- web服务器返回响应请求,其目的地址是NAT路由器的地址,端口号也是nat生成的那个端口号。
- web响应报文到达NAT路由器,路由器使用目的IP地址端口号从转换表中检索出局域网内部的IP地址和目的端口号,对该响应报文进行修改,并向局域网内部发送。
UPnP:通用即插即用协议,是一种允许主机发现并配置邻近NAT的协议,UPnP允许外部主机使用TCP或UDP向NAT化的主机发起通信会话。
3.4 因特网控制报文协议(ICMP)
因特网的网络层具有3个主要组件:IP协议、因特网路由选择协议、因特网控制报文协议
ICMP最典型的用途是差错报告,ICMP报文是作为IP有效载荷承载的,就像TCP和UDP报文作为IP有效载荷被承载那样,当一台主机收到包含ICMP的IP协议的时候,它分解出该数据报的内容给ICMP。
ICMP报文有一个类型字段,一个编码字段。
ping程序就是发送一个ICMP类型8编码0的报文到指定主机,还有一种ICMP源抑制报文,拥塞的路由器向一台主机发送抑制报文,以强制使其减小发送功率。
Traceroute程序,允许我们跟踪世界上任意一条主机到主机的路由,它也是由ICMP报文实现的。
3.5 IPV6
变化:
- 扩大的地址容量,从32比特增加到了128比特
- 简化高效的40字节首部
- 流标签与优先级。给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流,如一种非默认服务质量或需要实施服务的流。
数据报格式
- 版本:用于标志ip版本号,IPV6的该值设置为6,但IPV4的并不是4
- 流量类型:与IPV4的TOS(服务类型)字段类似
- 流标签:用于标志数据报流
- 有效载荷长度
- 下一个首部:这一字段标志传输层协议
- 跳限制:转发数据报的每台路由器,减一,如果达到0,该数据报会被抛弃
- 源地址和目的地址
- 数据
与IPV4相比没有的:
- 分片/重新组装:IPV6不允许在中间路由器上进行分片与重新组装,这种操作只能在终端进行。该功能加快了网络中IP转发速度
- 首部检验和
- 选项
实现从IPV4到IPV6的迁移:双栈方法,使用该方法的节点既有IPV6,又有IPV6,具有两种IP地址。当收发数据的对方只有IPV4或IPV6,它就也只能以相应的数据报格式进行传输。IPV6到IPV4的数据报转换,可被复制,但是从IPV4到IPV6的转换时,IPV6中的某些字段在IPV4中没有对应部分,这些字段的数据就会丢失。
另一种双栈方法:建隧道。将两台IPV6路由器之间的IPV4路由器的集合称为一个隧道,在隧道的发送端,将IPV6包放到一个IPV4报文中去,该IPV4报文的目的地址指向另一个IPV6的接收端,中间的IPV4路由器将其作为普通数据报进行转发,隧道接收端的IPV6路由器最终收到该IPV4数据报,并确定其中还包含着IPV6包并取出,再为该IPV6包提供路由。
3.7 路由选择算法
路由费用计算:物理长度、链路速度、与该链路相关的金融费用
广义分类:
- 全局式路由选择算法:用完整 的全局性的网络知识计算出从源到目的地之间的最低费用路径,全局式算法具有关于连通性和链路费用方面的完整信息。具有全局状态信息的算法被称为链路状态(LS)算法。
- 分散式路由算法:以迭代、分布式的方式计算出最低费用。每个节点仅有与其直接相连链路的费用知识。其中由距离向量算法(DV)
层次路由选择
- 路由器组织会通过自治系统(AS)进行管理自治。每个AS有一组在相同管理控制下的路由器组成(如相同的ISP或者相同的公司网络)。在相同的AS下的运行一样的路有选择算法,其中一台路由器负责向AS外转发分组,称其为王网关路由器。
- AS内部的路由器都知道转发分组给网关路由器的最短路径,各AS网关路由器之间采用自治系统间路由选择协议,各AS之间运行相同的AS间路由选择协议,BGP4
- AS内部路由选择协议:RIP、OSPF
- AS间路由选择协议:BGP
3.7.1 RIP(路由选择信息协议)
RIP被设置在下层ISP和企业网中
1、它是一种距离向量协议
2、跳:沿着源路由器到目的子网的最短路径所经过的子网数量。
RIP的适应限制在网络直径不超过15跳的自制系统内。
3、路由选择更新信息通过使用RIP响应报文(RIP通告)来交换
4、每台路由器维护一张路由选择表,其中包括该路由器的距离向量和转发表。
转发表有三列内容,第一列是目的子网,第二列是沿着最短路径到目的子网的下一个路由器标识,第三列是沿着最短路径到目的子网的跳数。
3.7.2 OSPF
OSPF被设置在上层ISP中。
一台路由器中有关于整个自治系统的完整拓扑图,在本地运行dijkstra最短路径算法,确定以自身为根节点到所有子网的最短路径树。
使用OSPF,路由器向自治系统内的所有其他路由器广播路由选择信息。
ospf的优点:
- 安全。通过简单口令,以及MD5鉴别对方路由器发送的ospf分组是否发生改变
- 多条费用相同的路径。可以使用多条费用相同的路径来承担流量
- 对单播与多播路由选择的综合支持
- 支持在单个路由选择域内的层次结构
一个ospf自治系统可以配置成多个区域,在一个区域内。一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择。在as内,只有一个ospf区域被配置为主干,包含了所有区域边界路由器或是部分非边界,为AS内其他区域提供路由选择。
3.7.3 BGP
边界网关协议,跨越多个AS的路由选择协议
- 从相邻AS处获得子网可达信息
- 向本AS内部的所有路由器传播这些可达信息
- 给予可达信息和AS策略,决定到达子网的路由
3.8 广播和多播
3.8.1 广播
无控制洪泛
- 源节点向它所有邻居发送分组副本,而当节点接收到分组,又向它所有邻居发送副本。会导致广播风暴
受控洪泛
- 序号控制洪泛。源节点将地址及广播序号放入分组,每个结点维护它收到的源地址以及序号分组,当再收到一个分组时,首先检查该分组是否在列表中,在则丢弃,不在则向所有邻居转发。
- 反向路径转发。仅当发送分组的链路是结点返回其源结点的最短单播路径上,该结点才向其所有初链路发送报文,否则丢弃该分组。
生成树广播
3.8.2 多播
多播被用于批量数据传送、流式连续媒体、数据共享应用、web缓存更新
多播数据报使用间接地址来进行编制,用一个标志来表示一组接收方,在因特网中,这种标志就是一个D类多播地址,这一组接收方就是多播组,单播地址完全独立于多播地址。