计算机网络读书笔记——网络层(1)
网络层
负责在不同网络之间尽力转发数据包,基于数据包的IP地址转发,如果丢包不负责丢失重传,也不负责传输顺序。
网络设备及数据转发过程
路由器是三层设备,因为它能看到网络层的地址,根据网络层地址去选择路由;交换机是二层设备,也就是说它能够将比特流存储,然后看懂数据链路层上数据帧的控制信息中的MAC地址,根据数据帧上的MAC地址从而进行数据转发;集线器是工作在物理层的一层设备,只能进行比特流的转发,作用是能够延长比特流的传输距离,能够对信号进行放大。数据的发送通过应用层,交付给传输层,传输层将上层交付的数据划分为数据段并进行编号之后交付给网络层,网络层为其所谓的数据包增加源IP地址和目的IP地址之后再交付给下层数据链路层,数据链路层拿到了上层的数据包,为其增加源MAC地址和目的MAC地址后封装成数据帧再交付给下层,最后物理层将数据帧转换成比特流在物理线路上传输。数据的接收则是数据发送的逆过程,是一个拆包的过程。
注意:数据链路层的数据帧的控制信息中,源IP地址和目的IP地址确定了数据的起点和终点,而物理MAC地址则是确定数据发送的起始设备和下一个设备的地址。
网络层协议
可以看出上图中网络层协议,分别是ARP协议、IP协议、ICMP协议、IGMP协议等,其中ARP协议为IP协议提供服务,IP协议为ICMP/IGMP协议提供服务,虽然都属于网络层协议,但是它们之间也存在上下层的关系,也有谁为谁服务的问题。
ARP协议
IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。
我们由上图可知我们的ip地址inet为192.168.220.132,而本机子网掩码Mask是255.255.255.0,所以当ping不同网段比如上图的202.200.112.200时我们可以ping通,但是当我们使用arp -a命令发现无法解析不同网段的地址;当我们ping 192.168.220.2(同一网段)后,再使用arp -a命令,可以发现arp地址解析协议帮助我们完成解析了同一网段的192.168.220.2这个IP地址的MAC地址。所以这一点也证实了ARP协议是通过发送广播包实现解析目标IP地址的MAC地址的,并且广播包是不能跨路由的,所以仅适用于同一网段而不能跨网段。
注意:
绑定(修改)一个arp缓存可以使用命令arp -s [ip address] [mac address]
ARP欺骗
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网络地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接。
ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网络上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关(被动式数据包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果,例如netcut软件。
例如某一的IP地址是192.168.0.254,其MAC地址为00-11-22-33-44-55,网络上的电脑内ARP表会有这一笔ARP记录。攻击者发动攻击时,会大量发出已将192.168.0.254的MAC地址篡改为00-55-44-33-22-11的ARP数据包。那么网络上的电脑若将此伪造的ARP写入自身的ARP表后,电脑若要通过网络网关连到其他电脑时,数据包将被导到00-55-44-33-22-11这个MAC地址,因此攻击者可从此MAC地址截收到数据包,可篡改后再送回真正的网关,或是什么也不做,让网络无法连接。
简单案例分析:这里用一个最简单的案例来说明ARP欺骗的核心步骤。假设在一个LAN里,只有三台主机A、B、C,且C是攻击者。
- 攻击者聆听局域网上的MAC地址。它只要收到两台主机洪泛的ARP Request,就可以进行欺骗活动。
- 主机A、B都洪泛了ARP Request.攻击者现在有了两台主机的IP、MAC地址,开始攻击。
- 攻击者发送一个ARP Reply给主机B,把此包protocol header里的sender IP设为A的IP地址,sender mac设为攻击者自己的MAC地址。
- 主机B收到ARP Reply后,更新它的ARP表,把主机A的MAC地址(IP_A, MAC_A)改为(IP_A, MAC_C)。
- 当主机B要发送数据包给主机A时,它根据ARP表来封装数据包的Link报头,把目的MAC地址设为MAC_C,而非MAC_A。
- 当交换机收到B发送给A的数据包时,根据此包的目的MAC地址(MAC_C)而把数据包转发给攻击者C。
- 攻击者收到数据包后,可以把它存起来后再发送给A,达到偷听效果。攻击者也可以篡改数据后才发送数据包给A,造成伤害。
防治方法:
最理想的防制方法是网络内的每台电脑的ARP一律改用静态的方式,不过这在大型的网络是不可行的,因为需要经常更新每台电脑的ARP表。
正当用途:
ARP欺骗亦有正当用途。其一是在一个需要登录的网络中,让未登录的电脑将其浏览网页强制转向到登录页面,以便登录后才可使用网络。另外有些设有备援机制的网络设备或服务器,亦需要利用ARP欺骗以在设备出现故障时将讯务导到备用的设备上。
arp参考文章:
https://www.ibm.com/developerworks/cn/linux/l-arp/index.html(ARP协议揭密)
https://www.bbsmax.com/A/gAJGnRkbzZ/(Kali实现局域网ARP欺骗和ARP攻击)
http://netsecurity.51cto.com/art/201303/386031.htm(中间人攻击——ARP欺骗的原理、实战及防御)
https://www.bbsmax.com/A/D8547Le3JE/(记录利用ettercap进行简单的arp欺骗和mitm攻击过程)
http://www.btfw.org/linux/127.html(ubuntu安装arpspoof)
http://blog.****.net/nomad2/article/details/6254819( Linux 查看网关)