博文目录
一、路由器的结构和功能
二、二层交换和三层交换技术
三、路由选择算法的基本概念
四、路由表
五、控制报文协议ICMP
六、地址解析协议ARP
一、路由器的结构和功能
路由器的功能
建立并维护路由表
为了实现分组转发功能,需要一个路由表,保存路由器每个端口对应的目的网络地址,及默认路由器的地址。路由器通过定期与其他路由器交换路由信息来自动更新路由表提供网络间的分组转发功能
路由器检查IP分组的目的地址,根据路由表决定该分组的交付方式。若是直接交付,就将分组传送到目的网络。若是间接交付,确定转发端口号与下一跳路由器的IP地址
路由器的结构和工作原理
路由器是一种具有“多个输入/输出端口”,完成分组转发的计算机系统,它的核心就是由路由“路由选择处理机”和“分组处理和交换”(三层模块)组成
(1)路由选择处理机
是路由的控制部分,用于生成和维护路由表
(2)分组处理和交换
输入/输出端口有三个模块:物理层、数据链路层和网络层
物理层:完成比特流的接受和发送
数据链路层:完成拆帧和封装帧
网络层:处理IP分组头
排队队列:当输入/输出端口接受到多个分组不能处理及时处理时,这些分组会进入排队队列等待
二、二层交换和三层交换技术
二层设备是数据链路层的设备,如网桥,二层交换机,
三层设备是网络层的设备,如路由器,三层交换机,ip网关
那么层是指哪些呢?
由路由器的结构可以看到,路由器的三层结构就是物理层-数据链路层-网络层,相应的,二层结构就是指物理层-数据链路层,因此可以看出,二层设备只能识别mac地址,而三层设备能识别ip地址
对于三层设备如路由器,是可以连接多个不同的网段的,而二层设备如网桥,是不能连接不同的网段,因为它没有网络层,不能识别ip
路由器和网桥的区别:
- 网桥能够在数据链路层实现不同数据链路层协议的局域网的连接,而路由器能够实现不同网络的互联
- 网桥可以划分冲突域,但是不能划分广播域,因为网桥是二层识别,对于高层ip来说是透明的,而路由器可以划分广播域,因为路由器不转发广播ip分组
ps(冲突域:一次载波监听的范围;广播域:是一次广播发生的范围)
三、路由选择算法的基本概念
路由选择算法指的是IP分组从源主机发送到目的主机时,如何选择路由器跳转的问题,并生成路由表。
路由表分为静态路由表和动态路由表(大型公司使用动态路由表)
1. 路由选择算法中涉及的一些基本概念
- 分组交付:指在Internet中,主机和路由器转发IP的过程
直接交付:分组的源主机和目的主机在同一个网络时,或目的路由器向目的追加传送时
间接交付:目的主机和源主机不在同一个网络时 - 默认路由器:源主机发送IP分组时的第一跳路由器,又称为默认网关
- 目的路由器:与目的主机连接的路由器
当一个ip分组通过路由器转发的时候,ip分组结构会发生改变的有:
1. TTL
2. 头部校检和
3. 如果该ip分组的源地址是私有地址的话,还会改变源地址(转换为全局地址)
2. 选择路由选择算法时考虑的参数
- 跳数
一个分组从源主机到达目的主机经过的路由器的数量,该参数越少越好 - 带宽
指链路的传输速率 - 延时
指一个分组从源主机到达目的主机的时间 - 负载
通过路由器或线路的单位时间通信量 - 可靠性
传输过程中的分组丢失率 - 开销
传输过程中的耗费
四、路由表
1. 一般的路由表建立
每一个路由器都有一张路由表,路由表记录的信息有:子网掩码,目的地址,下一跳地址,转发端口
tip:S0,S1表示串行接口,E0,E1表示Ethernet接口
分析:
1.路由器接受到目的地址为202.1.1.2/24的分组, 路由器根据子网掩码255.255.255.0,确定是发送到202.1.1.0/24的子网1,路由表记录该内容
2. 其它子网同上
3. 路由器接收到目的地址为238.12.8.20/18的分组,路由器判断该分组不在网内,于是接入Internet的默认路由器转发出去,路由器2通过端口E1以直接交互的方式传送分组到路由器3的E0端口。路由器记录:掩码0.0.0.0、目的地址0.0.0.0、下一条地址202.1.4.0/24、端口E1
2.路由表的汇聚
最长前缀匹配原则
原因:路由器的路由表项数量越少,路由选择查询时间越短,分组转发延迟时间越少,路由汇聚是减少路由表项数量的重要手段
路由表项由“网络前缀”和“下一跳地址”组成,这样路由选择是选择具有最长网络前缀的路由的过程,这就是“最长前缀匹配”的路由选择原则
路由汇聚
由图中的结构示意图,Ra,Rb,Rc,Rd分别连接着156.26.1.0~156.26.4.0 和 156.26.59.0~ 156.26.59.0 8个子网
对于RG,它只需要知道该目的地址是应该从哪个端口转发出去,而不能直接确定该IP分组转发的完整路径,这就体现了最长前缀匹配的作用,它对于RG的思想是:我帮IP分组确定你的目的地址的一个范围,你去到那个范围之后,再找其它路由器寻求帮助
先看看如下RG的路由表
存在的问题是:表项数量多,查询效率较低
从该路由表看,156.26.1.0/24~156.26.4.0/24 和 156.26.59.0/24~ 156.26.59.0/24可以简化成两项。
对于156.26.1.0~156.26.4.0,观察第3个字节:
1:00000 001
2:00000 010
3:00000 011
4:00000 100
共同点是前5个bit是相同的,从上面所说的最长前缀来看,这4个子网的最长前缀是21位(16+5),因此这4个子网可以合并成156.26.0.0/21
相同的156.26.59.0/24~ 156.26.59.0/24,也可以简化成:156.26.56.0/22
此时的路由表简化为:
例如:RG接受到一个目的地址为156.26.63.31,根据最长前缀匹配,可以找出它和156.26.56.0/22的匹配最长,于是把IP分组从端口S1转发出去
3. 路由选择协议
在讨论路由表的建立和更新时,我们首先要明白两个问题:
1. 在结构如此复杂的Internet环境中,试图建立一个能适用于整个Internet环境的全局性的路由选择算法是不切实际的。在路由选择问题上也必须采用分层的思路,以分治法的办法来解决这个很复杂的问题
2. 路由选择算法的目标是生成路由表,为路由器转发IP分组找出适当的下一跳路由器;路由选择协议的目标是实现路由表中路由信息的动态更新
自治系统和路由选择协议的分类
对于自治系统的结构,路由选择协议可以分为内部网关协议(RIP)和外部网关协议(EGP)
内部网关协议(RIP):路由信息协议(RIP)和开放最短路径优先(OSPF)
外部网关协议(EGP):BGP-4
4. 路由表的刷新和路由信息协议RIP
路由信息协议RIP是基于“向量-距离”路由选择算法的内部路由协议,它要求路由器周期性地通知相邻路由器(通过定时器来完成):自己可以达到的网络和到达该网络的距离,这通过发送路由刷新报文(V,D)表实现刷新
工作原理
以一个自治系统为例:
1. 初始化的路由表只包含所有与之直接相连的路由器,距离为0
2. R1接受R2发送的(V,D)报文,如果R1中没有这项纪录,则增加该项,并把距离加1(因为要经过R2转发)
3. 如果R1中的一项比R2发送的同一项距离减1还要大,说明经过R2转发和直接转发R1距离要近,则修改R1中该项距离为R2距离加1
RIP定时器
RIP的思想就是路由器周期性地通知相邻路由器,这是通过RIP定时器来实现的
1. 周期更新定时器:每隔30s在相邻路由器之间交换一次信息
2. 延迟定时器:为每次更新路由器信息产生一个随机延迟时间,1-5s
3. 修改计时器:路由器一项开始修改之时,在180s内没有收到刷新信息,则路由器把该项记录设置为“无效”
4. 清除定时器:当路由表一项记录被设置为“无效”超过120s没有收到更新信息,直接删除该记录
当D = 16时,表示该主机不可达
RIP的优缺点
优点:
实现简单,只考虑距离,不考虑连接路由链路的带宽。适用于中小规模的网络
缺点:
1. 协议过于简单,以跳数为依据计算度量值,常得出非最优路由
2. 度量值以16为限(允许的最大跳数为15,16表示目的网络不可达),不适合大的网络
3. 安全性差,接受来自任何设备的路由更新
4. 带宽消耗大(路由是全量更新)
五、控制报文协议ICMP
ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
1. 为什么出现ICMP
ICMP是处于网络层的协议,和IP协议有什么区别?
IP和ICMP都是无连接不可靠的
IP缺少差错控制,查询机制,IP分组一旦发送出去,是否到达主机,传输是否出错,源主机都是不知道的
于是,我们需要去获知这种问题,然后进行处理,于是才有了ICMP
ICMP是网络层的一个协议,封装成IP分组,然后传输给数据链路层,也就是不能独立传输的,是IP协议的一个组成部分
ICMP的结构和特点
在上篇博文 OSI参考模型——网络层详解之IPv4协议详解中提到了IPv4结构中的协议字段,当它为1时,表示该IP分组是ICMP报文
- ICMP是TCP/IP协议族的一个子协议,但是它的报文不是直接传送给数据链路层,而是封装为IP分组,然后传送给数据链路
- 设计目的是用于IP协议执行过程中的出错报告,是由路由器来向源主机报告传输出错的原因
ICMP的类型
(1)差错报告报文(单向:路由器/主机到源主机)
- 目的主机不可达
1)网络不可达:路由器寻址出错
2)主机不可达:网络寻址没问题,但是目的主机未工作或不存在
3)协议不可达:如果目的主机接受到一个TCP包,但是目的主机的TCP并未运行,不能处理该包
4)端口不可达:端口要交付的应用程序没有运行
5)源路由选择不能完成:有路由器不能通过
6)目的网络不可知:不知道目的网络的信息
7)目的主机不可知:不知道目的主机的信息 - 源主机抑制
当路由器或者主机因拥塞而丢弃一个分组时,要发送源主机抑制报文给源主机 - 超时
TTL为0时,发送超时报文 - 重定向报文
改变路由的过程
- 参数问题报文
IP分组头中任何一个字段的参数丢失或出错,路由器或目的主机在丢弃该分组之后,向源主机发送参数问题报文
(2)查询报文(双向)
- 回应请求和应答
由主机使用,以检查另一个主机是否可达,例如Ping,Tracert - 时间戳请求和应答
用来确定IP分组在两个机器间往返所需时间,提供时钟同步协议 - 地址掩码请求和应答报文
查找与主机所连接的网络的子网掩码 - 路由器询问和通告
查找与主机所连接的本地路由器地址
ICMP的应用——Ping和Tracert
1. Ping原理
Ping用于测试目的主机是否能够到达,主机调用ping时,发送了回应请求ICMP报文(ICMP echo request),目的主机接受到后,返回应答ICMP报文(ICMP echo reply)
2. Tracert原理
Tracert可以获得从命令主机到达目的主机的完整路径(路由器的跳转),也叫做“路由跟踪命令”。命令主机每一次发送回应请求ICMP报文(ICMP echo request),路由器会返回ICMP超时报文(ICMP time exceeded)
工作流程:
1. 源主机给目的主机发送一个跳数限制为1的ICMP echo request,第1个接受到的路由器将跳步限制值1减1为0的分组丢弃,并向源主机发送一个超时报文,这样源主机就得到了第1个路由器的地址
2.然后发送跳数限制为2的报文,第1个接受到的路由器将跳步限制值2减1为1,转发到第2个路由器,第2个路由器将跳步值减1为0,并向源主机发送一个超时报文,这样源主机就得到了第2个路由器的地址
3. 然后发送跳数限制为3的报文………
4. 然后发送跳数限制为4的报文………
……..
直到目的主机接受到后,返回应答ICMP报文(ICMP echo reply),这样就能得到完整路径
更多协议
- IP多播协议(IGMP):解决IP群发/多播的问题
- 多协议标签交换(MPLS):VPN(虚拟专用网)的协议
六、地址解析协议ARP
地址解析协议ARP用于物理地址(MAC)与IP地址的映射解析
地址解析过程
正向地址解析(ARP):从IP地址映射出MAC地址
反向地址解析(RARP):从MAC地址映射出IP地址
例如:
主机A打算给主机B发送一个IP分组,它知道主机B 的IP地址,但不知道B的MAC地址,那么它首先要在本地ARP映射表(ARP缓存表)中查找。若找到就不需要进行地址解析。若找不到,则需进行地址解析
- 主机A产生”ARP请求分组“,源主机IP地址和源MAC地址填入A,目的主机IP地址填入主机B的IP,MAC地址填0
- 将”ARP请求分组“传递到数据链路层,组装成ARP请求分组的帧,帧的源MAC地址为主机A的MAC地址,目的MAC地址为广播地址”ff-ff-ff-ff-ff-ff“,以广播方式发送出去
- 接收到“ARP请求分组”主机,若它的映射表中没有主机A的IP地址与MAC地址,则存入A的IP地址和MAC地址
- 主机B接受到“ARP请求分组”后,向主机A发送一个封装了“ARP应答分组”的帧,用单播方式发送。“ARP应答分组”包含了主机B的IP地址和MAC地址。
- 主机A收到“ARP应答分组”后 ,将主机B的IP地址和MAC地址存入映射表
这样就得到了主机B的MAC地址,同理IP地址
ARP服务的四种情况
ARP欺骗(ARP攻击)
ARP协议的缺陷
ARP协议是建立在信任局域网内所有节点的基础上的,他的效率很高。但是不安全。它是无状态的协议。他不会检查自己是否发过请求包,也不知道自己是否发过请求包。他也不管是否合法的应答,只要收到目标mac地址是自己的ARP reply或者ARP广播包(包括ARP reply和ARP request),都会接受并缓存。
ARP欺骗
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP欺骗的过程:
当A发广播询问:我想知道IP是192.168.0.3的硬件地址是多少?
此时B当然会回话:我是IP192.168.0.3我的硬件地址是mac-b,
可是此时IP地址是192.168.0.4的C也非法回了:我是IP192.168.0.3,我的硬件地址是mac-c。而且是大量的。
所以A就会误信192.168.0.3的硬件地址是mac-c,而且动态更新缓存表
ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
攻击者向电脑A发送一个伪造的ARP响应,告诉电脑A:电脑B的IP地址192.168.0.2对应的MAC地址是00-aa-00-62-c6-03,电脑A信以为真,将这个对应关系写入自己的ARP缓存表中,以后发送数据时,将本应该发往电脑B的数据发送给了攻击者。同样的,攻击者向电脑B也发送一个伪造的ARP响应,告诉电脑B:电脑A的IP地址192.168.0.1对应的MAC地址是00-aa-00-62-c6-03,电脑B也会将数据发送给攻击者。
至此攻击者就控制了电脑A和电脑B之间的流量,他可以选择被动地监测流量,获取密码和其他涉密信息,也可以伪造数据,改变电脑A和电脑B之间的通信内容。
表现形式:
- 打开网页速度非常慢,甚至打不开
- 提示IP地址冲突
- 甚至导致校园网瘫痪断网
- 一般会绑定木马病毒,窃取用户账号密码