IP包头分析
可选项可达到10行,40个字节,一般不用
IP包头:最长可达到60个字节,20-60个字节
版本:占了4个比特(电脉冲) 表示该IP数据包使用的IP协议版本 ,目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议 v4/v6
首部长度:此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据,看是否有可选项。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。
优先级与 服务类型(TOS):前三个代表优先级,中间四个代表服务类型,最后一个没有启用,
用于规定本数据报的处理方式。服务类型字段的8位分成了5个子域:
(1)—优先权(0-7)数越大,表示该数据报优先权越高。网络中路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。
(2)—短延迟位D(Delay):该位置1时,数据报请求以短延迟信道传输,0表示正常延时。
(3)—高吞吐量位T(Throughput):该位置1时,数据报请求以高吞吐量信道传输,0表示普通。
(4)—高可靠位R(Reliability):该位置1时,数据报请求以高可靠性信道传输,0表示普通。
(5)—保留位。
总长度:IP报文的长度即3,4,5层长度,超过1500就开始分片 4040字节
只有第一个有原IP和目标IP,所以这种切法不正确
正确切法
IP分片
段偏移量决定IP分片的先后顺序
断片值是1480的倍数,断片量只有两个值0和1480
带1480的为第二个分片,再带的为第三个,
3个IP包头克隆出来后开始分片,之后按照断片量填入--接收端通过读取三个IP包头断片量的值来判断先后顺序--开始重组
标识符(ID):发送端随机生成的,分片的标识符相同,说明分片来自同一个IP包,
标志:三个比特中第一个比特永远为0,没有被启用,
第二个比特只有两个值:0和1,
如果为0,代表这个IP包进行了分片
如果为1,代表这个IP包没有进行分片,只有一个帧
第三个比特表明是不是最后一个分片
为1代表还有后续分片
为0则为最后一个分片
若标志为010,则段偏移量为0
IP分片在网络层完成,只有是010才能通过防火墙,分片由应用层完成
TTL(生存时间):防止一个数据包在网络上永久循环下去
发送端PC上,给别人发包,每一个IP报文的地方有一个值叫TTL初始值,通过这个可以判断对方是什么主机,是windows主机还是linux主机,100以上windows主机,100以下linux主机,网关(路由器)会先把这个初始值减一,发给下一个路由器,再减一,每经过一个路由器减一,当减为0时就消失
ping百度
pingQQ
ping网关
协议号:识别上次协议
6--往TCP那走
17--往UDP那走
1--往同层ICMP协议那走
首部校验和:校验三层的IP包头,20-60个字节校验和,
MAC地址48位,6个字节,IP地址32位,4个字节
源地址:占用32位二进制数,表示发送端IP地址
目的地址:占用32位二进制数,表述目的端IP地址
路由原理
路由即路由器为IP包选择路径的过程,根据路由表决定怎么转发数据
交换机转换数据的依据是MAC表
路由表
1,“C”:直连, “S”:静态2,第二列是目的网络地址和掩码
3,第三列是目的端口或下一跳路由器地址
如果是直连,则这个字段为给出的目的端口
如果有下一跳路由器,则为下一跳路由器的IP地址
4,缺省路由的路由表项网络地址全是0
默认路由:s*,目标网段和目标子网掩码都是0
子网掩码
边缘路由器 f0/0
管理距离值:每一种路由类型都有自己固定的默认的管理距离值,c的是0,s的是1;s*为无穷大
路由条目的优先级与这个管理距离值成反比,值越大,优先级越小,路由顺序:C -- S -- S*
优先级低的会被隐藏起来,
交换和路由对比
斜体代表自定义参数
ARP协议分析与保护
广播域越小越好,
交换机隔离不了广播域,交换机控制不了广播,路由器可以控制广播,
用路由器隔离广播---物理隔离
ARP作用: 在已知对方IP地址的情况下,来解析对方的IP
ARP广播请求报文,ARP单播应答,
arp工作原理
1. Arp协议有两种报文,分别是arprequest(请求)报文和arp reply(回应)报文。c1和c2是在同一个网段,并且都是24位掩码,所以它们是可以通信的,c1、c2之间详细的通信过程是这样的:数据包在封包时,原ip地址是192.168.1.10,目标地址封装为192.168.1.20,网络层封包完成交给下一层数据链路层,在装帧时,帧头的原mac地址字段是c1的网卡的mac地址,在目标Mac地址字段不是c2的mac地址,管理员在c1上pingc2可以让c1知道c2的ip地址,但不知道它的mac地址。所以二层装帧是完不成的。
2. 这种情况就需要通过arp request报文获得目标mac地址,request报文是通过广播的方式发送出去的。 //所谓广播就是连在c1上的所有设备都能收到报文。但是只有c2会发送回应报文,把自己的mac地址告诉c1,即arp reply报文,是以单播的形式回应c1的。
3.每台pc都会有arp缓存表,把动态学习到的mac地址和iP地址对应关系放到arp缓存表里。
4.用arp -a查看arp缓存表,当c1没有和c2通信过,它的缓存表里是没有c2的mac地址的,我用c1来ping c2,然后再查看arp缓存表,它就会学到c2的mac地址。
5.通过抓包可以抓到发送的报文。在c1处抓,右击“开始抓包”,单击ok,然后右击打开WIRESHARK(抓包工具)之后会出来很多报文,我们在Filter(过滤器)里输入arp单击Apply //只抓arp报文。很明显这里抓到两个报文,一个是广播,一个是单播。
6.先看广播request(请求)报文,打开之后先看二层信息,我可以用ipconfig查看c1的mac地址,再看三层信息
7.再看单播reply(回应)报文,通过c2的回应报文,c1学到了c2的mac地址,下次c1要和c2通信就不会发送arp请求报文了,因为c1记在了自己的arp缓存表里。那么此时再用c1 ping c2并抓包,如果发现还发送arp报文,说明它忘记了,或者arp缓存表过期。
8.当arp缓存表里有对方的mac地址并且没有忘记或过期,通信时就不会发送arp报文。
操作---查看ARP缓存表
ARP协议是内网协议,属于内网攻击,不能攻击外网,工作是通过局域网完成,碰见路由器就被控制
你发现目标IP与自己的IP在同一网段上时,我会发送ARP广播报文去请求他的MAC地址,当你发现目标IP与自己的IP不在同一网段上时,我会发送ARP广播报文,直接询问目标IP,
ARP攻击---终止通信,断网,伪造虚假的ARP应答报文,和虚假的MAC地址,去欺骗,使他断网,也可以通过广播报文来攻击,
ARP攻击---目的就是断网
简洁版:ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
arp在设计的时候是有缺陷的。c1再和c2通信,数据就不会发向所有端口了。那么这时如果sw1下面连个c3,它也是不能监听到c1和c2的通信的。所以我们认为在以太网如果是交换式环境是安全的。第三方想要监听到c1和c2的通信,只有不停的向sw的mac地址表里写东西,让mac地址表溢出,它就记不住新学到的了。 //mac地址表是有大小空间的。还有一些问题比如说c1没有向c2发送请求,而c2主动向c1发送回应,并欺骗它,由于arp没有验证机制,导致c1与其它通信被拦截,甚至局域网里的所有成员都上不了网。这就叫arp攻击
你发现目标IP与自己的IP在同一网段上时,我会发送ARP广播报文去请求他的MAC地址,当你发现目标IP与自己的IP不在同一网段上时,我会发送ARP广播报文,直接询问目标IP
ARP欺骗---目的不是为了断网,是为了截获数据
同时对局域网内的一台主机和网关进行ARP欺骗,更改这台主机和网关的ARP缓存表。
广播风暴问题:如果一个二层网络非常大的时候,会导致大量带宽被各种报文占据,那么正常的流量就无法传输了。我们把这种大的二层网络称为平面网络 //所谓平面网络就是没经过分层设计。能够收到某一设备发送的报文的所有设备的集合叫做广播域,广播域越多越好。扁平化的设计是不合理的,不能优化广播域的数量,会导致广播风暴产生,网络性能大大下降。所以在设计网络时应采用分层设计来提高网络性能。如果用路由器隔离广播当然是一种选择,但是路由器的端口是有限的。三层转发没有二层效率快,所以尽量在二层转发。通过在交换机上来把大的广播域隔离成多个小的广播域的技术叫vlan技术 //虚拟局域网技术。这个以后会讲解。通过在交换机上划分多个vlan,把e0/0/1和e0/0/2划在不同的vlan。这样就从一个广播域变成两个广播域了。用这种技术来优化网络性能,减少广播风暴的范围。
总结
凡是可以pingIP的就有MAC地址
路由器工作原理图解如下
路由器只能从ARP报文里提取信息,但没法路由,一个帧到达路由器,首先判断,帧头目标MAC地址是不是自己的,如果不是则舍弃,是给我的,则把数据解封装,将IP包输送给路由器内部,路由器开始检查目标IP,并匹配路由表,若没有,则丢弃数据,并向源端回馈一个错误信息,若有,则路由转发到出接口,准备封装帧头,封装帧头里有原MAC地址以出接口的MAC地址作为原MAC地址,目标MAC地址检查自己的ARP缓冲表,有没有下一跳的MAC地址,若有,直接封装,若没有,发送ARP广播请求,得到应答后,将下一跳的MAC地址作为目标MAC地址,记录缓存,发送出去。
操作----ARP实验演示
把xp叫受害人1号,2003-1叫坏蛋,2003-2叫受害人2号
首先将三台虚拟机放在同一局域网VMnet2中,网上邻居--属性--本地连接--属性--TCP/TP属性--
在受害人1那ping小坏蛋
在三台虚拟机上ipconfig /all看到各自的MAC地址,
使用“网络执法官”
1
打开网络执法师--开始扫描--对准2003-1的进行操作--右键--手工管理--选择IP冲突,管理频率为3--再看受害人1号的右下角--windows系统一直报错--(说明坏蛋一直向其他电脑发送MAC地址说他是10.1,受害人自己是1,感觉很怀疑,就是受害人被骗了)---在受害人1号那打开cmd,ping 10.3还是可以通信,没有断网---在小坏蛋那点击结束--右键手工管理---选择禁止与关键主机组进行TCP/IP连接(除敏感主机外)---点击开始---可以看见左下角管理次数正在发包---在受害人1号那打开cmd,ping 10.3,发现断网了---在受害人1号那打开cmd,输入arp -a---发现2003-2的IP地址变化,也就是说这是一个伪造的IP地址---再输入arp -d去除记录后再输入arp -a可以发现可进行短暂的通信(小坏蛋一直在向受害人1号发假包)---在小坏蛋那点击结束---在受害人那再次清空---ping 10.3还是可以通信---打开cmd,输入arp -a---发现2003-2的IP地址正确
2
打开cain这个软件---
----
---
----点这个网卡标识--- 选择10.2这个网卡---点确定---开启抓包机制---
抓包---
点右键---
---选择range 范围是1-254---![](https://i-blog.csdnimg.cn/blog_migrate/e4628e0936a2a4c7ca10a9db1a57af33.png)
---
----添加列表--- 选中10.1和10.3(横排的)---![](https://i-blog.csdnimg.cn/blog_migrate/6b63d6f8578a3038b761e6ced815d022.png)
选中这个---
------ ![](https://i-blog.csdnimg.cn/blog_migrate/8de40a560d5e0d795ece01c033b002e4.png)
---毒药中毒即开始投毒---使受害人1以为小坏蛋是受害人2,受害人2以为小坏蛋是受害人1---在受害人1那ping 10.3一切正常---但输入arp -a---发现受害人2号和小坏蛋的地址一样,所以若以这个地址使用的话,相当于把数据给了小坏蛋---打开受害人2号---主页---管理---服务和应用程序---服务---
talent----启动类型为自动---应用---启动---确定---受害人12号可以远程连接控制---在受害人1号cmd输入telnet 10.1.1.3---一直回车---输入账号密码成功连接---输入exit退出---小坏蛋抓包了---
-------
---![](https://i-blog.csdnimg.cn/blog_migrate/17174f90f335034356307faffa2a14b8.png)
--- 右键view---可以看到账号密码---
3
在受害人2号点击我的电脑---
---![](https://i-blog.csdnimg.cn/blog_migrate/8a26a43fd576268c6595c5c26359e4bb.png)
---应用程序服务器--- 信息服务---![](https://i-blog.csdnimg.cn/blog_migrate/5aec30044daa0adbd67db70ca3c8eaeb.png)
文件复制来源改为e---在cmd中输入net user haha heihei---net user haha heihei /ad---输入exit---开始---管理工具---
----
---右键---属性---
安全账户---
---在受害人1号那我的电脑---
---10.3---输入账号密码---小坏蛋那---FTP---看到账号密码
ARP防御
1.静态ARP绑定
手工绑定/双向绑定 -> 缺点,效率低,工作量大
windows客户机上:
arp -s 10.1.1.254 00-01-2c-a0-e1-09
arp -a 查看ARP缓存表
2.ARP防火墙
自动绑定静态ARP
主动防御
3.硬件级ARP防御
交换机支持端口做动态ARP绑定(配合DHCP服务器)
或做静态ARP绑定