学习笔记之网络层
网络层
分下列内容介绍
-
网络层提供的两种服务
-
IP地址及其表示方法
-
IP数据报
-
IP层转发分组的过程
-
地址解析协议ARP
-
网际控制报文协议ICMP
-
互联网的路由选择协议
-
路由器的结构
-
P组播地址管理协议IGMP
网络层提供的两种服务:
-
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
-
网络不提供服务质量的承诺。
也就是说传送分组的过程中可能会出错、丢失、重复、失序。当然也不保证分组交付的时限。
IP地址及其表示方法
以下是IPv4地址的信息,共有4个字节,32位。
IP地址的编码过程共经过了三个历史阶段
-
分类的IP地址
将IP地址按照前缀的范围分为A,B,C,D,E。且每个IP地址有网络号和主机号两部分。此时路由器根据网络号进行转发。
-
子网的划分
在某类IP地址中,将IP地址分为网络号、子网号和主机号三部分。增加子网掩码的概念,网络号和子网号全1。路由器根据子网掩码和IP地址进行转发。注意,此时并没有消除类别的概念
-
构建超网
消除A、B、C、D、E这些类别的概念,IP地址只分为网络前缀和主机号。子网掩码中网络前缀全为1。路由器根据子网掩码和IP地址进行转发。
IPv6共有16 个字节,128位。
IP数据报
-
IP协议三个定义:
-
IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式。
-
IP软件完成路由选择功能,选择数据传送的路径。
-
IP包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则。
-
-
IP数据包:
联网的基本传送单元是IP数据包,包括数据包头和数据区部分。
-
IP数据包封装:
物理网络将包括数据包包头的整个数据包作为数据封装在一个帧中。
-
MTU网络最大传送单元:
不同类型的物理网对一个物理帧可传送的数据量规定不同的上界。
-
IP数据包的重组:
一是在通过一个网络重组;二是到达目的主机后重组。后者较好,它允许对每个数据包段独立地进行路由选择,且不要求路由器对分段存储或重组。
-
生存时间,简称跳数。
IP数据包格式中设有一个生存时间字段,用来设置该数据包在联网中允许存在的时间,以秒为单位。如果其值为0,就把它从互联网上删除,并向源站点发回一个出错消息。
-
IP数据包选项:
IP数据包选项字段主要是用于网络测试或调试。包括:记录路由选项、源路由选项、时间戳选项等。
路由和时间戳选项提供了一种监视或控制互联网路由器路由数据包的方法。
IP层转发分组的过程
在数据报的首部中只标明源IP地址和目的IP地址,当路由器收到IP数据报时,会根据目的IP地址来获取下一条地址。
然后送交数据链路层的网络接口软件。网络接口软件负责把下一条路由器转化为硬件地址(使用ARP),然后将此硬件地址放在MAC帧的首部,数据链路层负责把他交给目的主机(路由器),显然后面这些都是数据链路层的工作了。
那么路由器是怎么根据目的IP地址来获取下一条IP地址呢?
这之中路由表的自动学习过程将在下块解释。
特定主机路由:网络管理员在网络中设置的静态路由
路由器的分组转发算法如下:
这是在分类的IP地址转发数据报的过程,其他阶段的IP地址与该数据报转发过程原理相同。
- 从数据报的首部提取目的地址的IP地址D,得出目的的网络地址为N
- 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机。否则就是间接交付,执行3
- 若路由器有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一条路由器。否则执行4
- 若路由器中有到达网络N的路由,则把数据报送给指明的下一条路由器。否则执行5
- 如果该路由器有默认路由(0,0,0,0),则将数据报送给默认路由指明的下一条路由器。否则执行6
- 报告分组转发出错
使用子网时的转发:目的网络地址概念变为目的网络地址和子网掩码
使用超网时的转发:目的网络地址概念变为网络前缀
地址解析协议ARP
ARP协议经常被IP协议使用。
在实际运用中,我们经常遇到了知道一个机器的ip地址,需要找出其硬件地址。地址解析协议ARP就是用来解决这样的问题的。
因为在数据链路层,也就是局域网内数据的传送是依靠mac地址使用CSMA/CD协议来寻址的,所以mac地址至关重要。
还有一个旧的协议RARP协议的作用是根据mac地址找出其ip地址,不过现在的DHCP协议已经包含了。
ARP协议怎样运作的呢?
首先每台主机有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的ip地址到硬件地址的映射表,这些都是主机已经知道的一些地址,那么它又是如何知道这些地址的呢?
注意ARP cache的每一条映射记录都有一个生存时间(10~20分钟),凡是超过生存时间的记录都会从中删掉。
(1) 主机A的ARP进程在本局局域网广播发送一个ARP请求,大致内容是“我ip地址是209.0.0.5,mac地址是00-00-C0-15-AD-18,我现在要找ip地址为209.0.0.6主机的硬件地址“。
(2) 在本局域网上呃所有主机运行的ARP进程都收到此ARP请求分组
(3) 主机B的ip地址与ARP请求要查询的ip地址一致就会收下这个ARP请求,否则就丢弃改请求。收到改ARP请求的主机会更新ARP cache中发送者ip地址和mac地址的条目,并且向主机A发送一个单播,大致内容是”报告209.0.0.5,我的ip地址是209.0.0.6,mac地址是00-00-C0-15-AD-19“。
(4) 主机A收到该请求时就会在ARP cache中更新该信息条目。
ARP欺骗:主机A在请求网关的mac地址时,主机B伪装网关回复主机A。这样就造成主机A无法与网关通信,也就无法访问外网,且主机B也就截获的主机A向互联网发送的信息
P2P终结者:利用ARP欺骗网关来监测该网段的流量
网际控制报文协议ICMP
ICMP使用IP协议
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP协议看起来像是高层(ICMP报文是装在IP数据报中,作为其中的数据部分)但ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP数据报的数据,加上数据报的头部,组成IP数据报发送出去。
ICMP的报文种类有两种,即ICMP差错报文和ICMP询问报文。
总之ICMP协议就是用于报告差错和异常情况的协议。
平常的ping
命令、pathping
命令和tracert
命令都使用的是ICMP协议。
互联网的路由选择协议
自治系统:简称AS
(autonomous system),自治系统AS是在单一技术管理下的一组路由器,例如ISP
路由选择协议主要分两种:
-
内部网关协议IGP(interior Gateway Protocol)
在一个AS(autonomous system)内部使用的协议(例如:RIP和OSFP)
-
外部网关协议EGP(external Gateway Protocol)
若源主机和目的主机不在同一个AS,那么这两个AS可能没有使用同一个IGP,那么在在主机所在AS的边界就要做一个协议的转化,将协议信息转化为另一个AS中,这样的功能就有EGP提供。例如:BGP-4协议
注意这些不是协议的名称,而是协议类型的名称
分布式路由协议主要关注的是下列几点,和哪些路由器交换信息?交换那些信息?什么时候交换信息?
RIP协议
RIP(router information protocol)属于IGP类型,是一种分布式的基于距离向量的路由选择协议,基于Bellman-ford算法。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的记录信息,即(目的网络地址,子网掩码,距离),其中距离的标准是”跳数“,自己到自己的跳数为1,没经过一个路由器的跳数增加1。且RIP协议要求每一条信息的跳数最多为16。如果经过了16个路由器就视为不可达。
另外RIP作为UDP用户数据报的数据部分。(即使用传输层的UDP协议)
RIP协议的特点是:
- 仅和相邻的路由器交换信息
- 路由器交换的信息是当前路由器知道的全部信息,即自己现在的路由表。
- 按固定的时间间隔交换信息(例如30秒)
距离向量算法如下:
-
对地址为X的相邻路由器发来的RIP报文,先修改保温中的所有项目,(目的网络N,距离d,下一跳B)改为
(目的网络N,距离d+1,下一条X)
-
对修改后的RIP报文中的每一个项目,进行以下步骤。
- 若原来的路由表中没有目的网络N,则把该项目添加到路由表中。退出。
- 否则
- 若下一跳路由器地址为X,则把该项目替换原路由器的项目(以最新信息为准)
- 否则(到目的网络N,但当前路由表中下一跳地址不为X)
- 若收到的项目中的距离d小于路由器的距离则进行更新
- 否则人们也不做
-
若3分钟还没有收到相邻路由器A的更新路由表,则把此相邻就把此相邻路由器A设为不可达,即把距离置为16(把所有下一跳为A的距离都设为16)
RIP协议的缺点是:
- 好消息传播的慢,快消息传播的快。即一个路由器错误的时候,这种信息可能会经过较长的时间才更新所有路由器。
OSPF协议
开放式最短路径优先(Open Shortest Path First,OSPF)是目前广泛使用的一种动态路由协议
该协议基于dijkstra提出的最短路径算法。
OSPF协议的特点是:
- 向本自治系统内所有路由器发送信息。这里使用的方法是洪泛法。
- 发送的信息就是本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓链路状态就是说明本路由器和那些路由器相邻,以及该链路的度量。
- 只有当链路状态发生变化时,。路由器才向所有路由器用洪泛法发送此信息。
核心思想就是上述,不过在具体实现的过程中有很多扩充,这里只简单叙述以下,不具体介绍。
以下内容参考百度 https://baike.baidu.com/item/OSPF路由协议/10984752?fr=aladdin
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新.
实现过程:
1、初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
2、路由器间通过泛洪(Floodingl机制交换链路状态信息:各路由器一方面将其LSA数据包传送给所有与其相邻的OSPF路由器,另一方面接收其相邻的OSPF路由器传来的LSA数据包,根据其更新自己的数据库。
3、形成稳定的区域拓扑结构数据库:OSPF路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。
4、形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表
路由器
路由器是一个三层结构,具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
路由器有多个输入端口和输出端口。整个路由器结构可划分为两大部分:路由选择部分和分组转发部分。
路由器若收到的分组是路由器之间交换路由信息的分组,则把这种分组送交路由器路由选择部分中的路由选择处理机。
若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果将数据从合适的端口传发出去。
注意转发表是根据路由表得出的,但在讨论路由选择的原理时,往往不区分他们之间的区别,都可以笼统的使用路由表这一名词。
具体原理不详细介绍,《计算机网络》第7版的167页有介绍
IP组播地址管理协议IGMP
对于组播,相当于一个聊天室。每一个组播指定一个组播地址(聊天室号码),发送者向互联网发送该组播信息,如果多播路由器接受到该组播信息,且某一个接口有组播的成员,那么就将该信息复制一份发送到对应的接口去。而多播路由器中IGMP协议就维护并且管理每个接口的网络的成员都绑定了哪些组播地址信息。
即:
多播路由器的每个接口都有IGMP协议进程,IGMP协议会用某些算法知道该接口对应的网络中绑定了哪些组播地址。
多播信息传播的过程可以使用洪泛和剪除法,隧道技术、居于核心的发现技术等等。这里不详做介绍
散碎知识点:
- 网络层使用的中间设备是路由器
- 网关是网络层使用的路由器称为网关,默认网关指该局域网向外部通信时所连接的第一个路由器的地址。