技能目标: 1.理解IP数据包格式 2.理解ICMP协议介绍 3.理解ARP协议 4.掌握ARP攻击与欺骗的原理及应用
首先来看一下IP数据包头的格式
1.版本: 该字段用于表示IP的版本号,4bit。版本为4,即IPv4
2.首部长度: 该字段用于表示IP数据包头长度,4bit。IP数据包头最短为20字节,其长度可变,取决于可选项字段长度
3.优先级与服务类型: 该字段用于表示数据包的优先级和服务类型,8bit。用于在数据包中划分一定的优先级,这里可以理解为公路上的应急车道或者百度云的会员VIP加速
4.总长度: 该字段用于表示整个IP数据包的长度,16bit。包括包头和数据
5.标识符: 该字段用于表示IP数据包,16bit。当IP对上层数据分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片时不会被错误重组
6.标志: 该字段用于表示标志字段,3bit。标志和分片一起来传递信息,例如表示对当前的包不能进行分片(当数据包从一个以太网发送到另一个以太网的时候),或在一系列的分片中最后一个分片是否已发出
7.段偏移量: 该字段用于表示段偏移量,13bit。其中包含的信息是在一个序列中如何将各分片重新连接起来。例如序列之中有1、2、3三个分片,按照正序排列,重新连接时也得是1、2、3来排序而不能打乱了
8.TTL: 该字段用于表示IP数据包的生命周期,8bit。该字段包含的信息可以防止一个数据包在网络中无线循环地转发下去。可以理解为处理冗余数据,储存就这么多,不能无限制的储存下去,会被“撑爆”。每经过一个路由器时都会检查该字段中的数值并且减去1,为0时该数据包被丢弃
9.协议号: 该字段用于协议字段,8bit。该字段用以指示在IP数据包中封装的是哪一个协议,TCP(6)还是UDP(17)
10.首部校验号: 该字段用于表示校验和,16bit。是错误校验字段,目的主机和网络中的每一个网关都要重新计算包头的校验和,检测数据有没有被改动
11.源IP地址: 该字段用于表示数据包的源地址,32bit。指发送该数据包的设备的网络地址
12.目标IP地址: 该字段用于表示数据包的目的地址,32bit。指接收节点的网络地址
13.可选项: 可选字段根据实际情况可変长,可以和IP一起使用的选项有多个。
可选项之后就是上层数据ICMP的全称是“Internet控制消息协议”,主要用于在IP网络中发送控制信息,提供在通信环境中可能发生的各种问题的反馈。通过这些反馈,我们就可以做出判断并维护
ICMP采用“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。 其目的是为了让管理员能掌握网络的连通情况,数据要有去又回才能证明网络是正常的 例:路由器收到一个不能被送达目的的数据包时,就会向源主机发送一个目的不可达的ICMP消息;或者是超时,因为数据传过去了但没能回来
ICMP属于网络层协议,传输ICMP信息时,需先封装网络层的IP头部,再交给数据链路层,即ICMP报文对应IP层的数据,如图所示
在网络中,ICMP协议的使用时靠各种命令来实现的。下面以ping命令为例,介绍ping命令的使用及返回的信息 注:下图中软件为命令提示符(CMD)
[ ]中参数为可选参数
windows系统中ping命令常用选项: -t 参数会一直不停的执行ping -a 参数可以显示主机名称 -l 参数可以设定ping包的大小(-s) -n 指定发送包的个数(-c) -s 指定源IP去ping(-i) 括号内为在Linux系统下命令选项
注:在检查网络连通性时,ping命令是用的最多的。当我们ping一台主机时,本地计算机发出的就是一个典型的ICMP数据包,用来测试两台主机是否能够顺利连通。ping命令能够检测两台设备之间的双向连接性,即数据包能够到达对端,并能够返回。 如果目标计算机启用了防火墙的相关设置,及时网络正常也可能会返回“请求超时”信息,即很久连不上没反应。
小结:ICMP可以用来检查设备之间的连接及运行情况,如果没有ICMP协议,那我们看到的只是一些单纯的设备的堆叠,至于它们的工作情况则一无所知,毫无帮助。 所以ICMP协议对于管理网络设备、监控网络状态等都有着非常重要的作用
在局域网中,交换机通过MAC地址进行通信。但是要获得目的主机的MAC地址,就需要使用ARP协议将目的IP地址解析成MAC地址。即ARP(地址解析协议)的基本功能就是负责将一个已知的IP地址解析成MAC地址,以便在交换机上通过MAC地址进行通信
假设有主机PC1要和主机PC2进行第一次通信,这时需要知道PC2的MAC地址,访问之前要询问PC2的IP地址对应的MAC地址是什么,这时就需要通过ARP广播实现 (1)首先PC1想要发送信息给PC2,它会首先检查自己的ARP缓存表(ARP缓存表是主机存储在内存中的一个IP地址和MAC地址对应表),如果目标MAC地址不在表中,发送一个广播,目的地址为MAC广播地址(FF-FF-FF-FF-FF-FF)的MAC地址广播帧,在ARP请求信息中包括PC1的IP地址和MAC地址以及PC2的IP地址 (2)交换机收到广播地址后,发现是MAC地址广播,就将数据帧转发出去,这时也学习记录了PC1的MAC地址 别的主机接收到数据帧后,会进行IP地址的比较,如果不同就丢包,只有PC2会接收,并在自己的APR表中存储PC1的IP地址和MAC地址的对应关系,并同时应答,来告诉自己的MAC地址。转发到交换机,交换机又是一轮学习和记录PC2的MAC地址并转回给PC1(这时开始就是单播了,因为PC2知道了PC1的IP地址,可以先单向传播) (3)PC1接收到回复的数据帧后,就在自己的APR表中记录PC2的MAC地址 在这个过程中,交换机学习到了PC1和PC2的MAC地址,所以之后传播时PC1和PC2之间就是单播通信
注释:(广播与广播域) 广播:将广播地址作为目的地址的数据帧 广播域:网络中能接收到同一个广播的所有节点的集合 广播地址为FF-FF-FF-FF-FF-FF、
举个生动的例子:
在教室里,我有事需要找张三这个人。但是刚开学,大家都不认识,也都不知道都坐在哪里。这个时候我就去找新来的老师(交换机)帮我找,告诉了他张三的名字和我的名字(IP)及座位号(MAC),但是他也不知道张三坐在哪,于是只能吼一嗓子问张三在哪里,xx座位的xxx找你。 在座的同学们都听到了,但是都选择无视,这时只有张三有反应,就跟老师说我是张三,然后老师就知道了张三坐在哪里,之后就回复给了我 这个过程完了之后老师记住了我俩的姓名和座位号,我两也互相知道了。以后再有事有找,就是单播了 例子只是例子,肯定有不严谨的地方,但这很有助于理解
一些补充: 如提示ARP项添加失败,解决方案如下: a、用管理员模式:电脑左下方“开始”按钮右键,点击“Windows PowerShell(管理员)(A)”或者进入C盘Windows/system32文件夹找到cmd.exe,右键“以管理员身份运行”再执行arp -s命令
维护网络需要处理各种各样的故障,其中出现最多的就是网络通信问题。除物理问题外,这种问题一般是由ARP攻击或者ARP欺骗导致 无论是ARP攻击还是ARP欺骗,它们都是通过伪造ARP应答来实现
一般来说,ARP攻击的主要目的就是使网络无法正常通信 可以理解为向网关或者被攻击主机发送虚假的ARP应答,从而导致被攻击主机通信故障,发送信息一直不成功,为信息不可达状态
一般情况下,ARP欺骗并不会使网络无法正常通信,而是通过冒充网关或其他主机,使到达网关或主机的流量通过攻击主机进行转发。通过转发流量可以对流量进行控制和查看,从而可以控制流量或者得到机密信息 在这里我的理解就攻击主机首先发送给被攻击主机欺骗ARP(冒充网关),并向交换机发送欺骗ARP(冒充被攻击主机),从而实现其中的双向欺骗
