物理层设备:中继器、集线器
数据链路层设备:网桥(交换机)
网络层中继系统:路由器
网络层以上的中继系统:网关
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括 寻址和路由选择、连接的建立、保持和终止 等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
传输层和网络层的区别:
IP(Internet Protocol,网际互连协议)是 TCP/IP 体系中的 网络层协议。对上可载送传输层各种协议的信息,例如 TCP、UDP 等;对下可将 IP 信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。IP 只为主机提供一种 无连接、不可靠的、尽可能交付 的数据报传输服务。
IP 协议的目的:
设计 IP 的目的是 提高网络的可扩展性:
IP 地址的 编码方法 有三种:1)分类的 IP 地址;2)子网的划分;3)CIDR
分类的 IP 地址:属于传统 IP 地址,分为 A~E 五类,都由 网络号 + 主机号 两部分组成。网络号代表主机所连接的网络,主机号代表该主机或路由器在网络中的地址。通过 子网掩码 可以获得 IP 地址的网络号。
网络地址转换(NAT):通过将专用网络地址转换为公用地址,从而对外隐藏了内部管理的 IP 地址。
子网划分:A、B、C 类地址默认子网掩码分别为 255.0.0.0
、255.255.0.0
、255.255.255.0
地址表示方法:128 位,使用冒号十六进制记法表示,每个 16 位的值用 4 位十六进制值表示,各值之间使用冒号分隔。
相比 IPv4,IPv6 有更大的地址空间,灵活的首部格式,允许协议继续扩充,支持即插即用,支持资源的预分配,增加了安全性。
ICMP(Internet Control Message Protocol)网际控制报文协议:使主机或路由器可以报告差错和异常情况,提高 IP 数据报成功交付的机会。
ping:用于检查网络是否通常或网络的连接速度。原理:利用网络上 IP 地址的唯一性,给目标 IP 地址发送一个数据报,要求对方也返回一个同样大小的数据报来确定两台机器网络是否连通、时延情况。
ping www.baidu.com
ping 命令工作在应用层,它直接使用网络层的 ICMP 协议,没有使用传输层的 TCP 或 UDP 协议。
tracert:路由跟踪应用程序,用于确定 IP 数据包访问目标所采取的路径。
tracert www.baidu.com // 打印从当前主机到目的主机所经过的路由地址
telnet:可以用于网络测试。
telnet www.baidu.com 80 // 测试80端口的Web服务器是否正常工作
GET / HTTP1.1
若 Web 服务器正常工作,就会返回服务器响应头,以便确认服务器情况。
netstat:监控 TCP/IP,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
ARP(Address Resolution Protocol)地址解析协议:完成从 IP 地址到 MAC 地址的转换。
RARP(Reverse Address Resolution Protocol)协议:完成从 MAC 地址到 IP 地址的转换。
地址解析协议,ARP(Address Resolution Protocol),是根据 IP 地址获取物理地址(MAC 地址)的一个 TCP/IP 协议。
【1】ARP 有什么用
在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的 MAC 地址(因为 MAC 才是真正的主机的唯一标识符)。比如局域网中实际传输的是 “帧”,帧里面是有目标主机的 MAC 地址的。由于数据传输依赖的是 MAC 地址而不是 IP 地址,所以将已知的 IP 地址转换为 MAC 地址就要由 ARP 协议来完成。“地址解析” 就是主机在发送帧前将目标 IP 地址转换成目标 MAC 地址的过程。ARP 协议的基本功能就是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。
【2】ARP 工作原理 - 请求 & 应答
ARP 请求:
关于 ARP 缓存表:其实就是一张 IP 和 MAC 进行映射的表,当 ARP 协议被询问一个已知 IP 地址节点的对应 MAC 地址时,会先在 ARP 缓存表中查询,若存在,就直接返回与之对应的 MAC 地址,若不存在,才发送 ARP 请求向局域网查询。
ARP响应:
局域网中的每一台主机都会接收来自主机 A 的 ARP 请求报文并对比自己的 IP 地址和请求报文中的目的主机 IP 地址是否匹配,若不匹配则直接丢弃该请求;否则,目的主机将发送方的 IP 和 MAC 地址写入本地 ARP 映射表中,再返回一个 ARP 响应报文,该响应报文包含目的主机的 IP 地址和 MAC 地址。由于此时目的主机知道发送方机的 MAC 地址,可以直接通过单播的方式将响应报文传回发送方。
最后,发送方接收到目的主机发来的 MAC 地址,将目的主机的 IP 和 MAC 地址写入本地 ARP 映射表中。
注意:目的主机会先完成 ARP 缓存,源主机后完成 ARP 缓存。
【图 1:局域网中只有两台主机,请求 & 响应】
【图 2:局域网中有多台主机,请求 & 响应】
图片来源:ARP原理和ARP攻击
【例】
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机 A 要与主机 B 通信时,ARP 协议可以将主机 B 的 IP 地址(192.168.1.2)解析成主机 B 的 MAC 地址(0A-11-22-33-44-02),以下为工作流程:
【3】ARP协议报文格式
ARP 报文的总长度为 64 字节。
ARP 报文信息 | 说明 |
---|---|
Hardware type | 硬件类型,标识链路层协议 |
Protocol type | 协议类型,标识网络层协议 |
Hardware size | 硬件地址大小,标识MAC地址长度 |
Protocol size | 协议地址大小,标识IP地址长度 |
Opcode | 操作代码,标识ARP数据包类型,1表示请求,2表示回应 |
Sender MAC address | 发送主机的 MAC 地址 |
Sender IP address | 发送主机的 IP 地址 |
Target MAC address | 目标主机 MAC 地址,此处全 0 表示在请求 |
Target IP address | 目标主机 IP 地址 |
【4】ARP 攻击
ARP 协议是建立在网络中各个主机互相信任的基础上的,ARP 请求以广播形式发送,网络上的主机可以自主发送 ARP 应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的 ARP 缓存表中,这样攻击者就可以向目标主机发送伪 ARP 应答报文,从而篡改主机的本地 ARP 缓存表。ARP 攻击会导致主机间通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
在 PC 间通信时,交换机会基于 PC 的 MAC 地址建立一个 CAM 缓存表,即 MAC 地址和 Port 的映射,之后交换机就可以根据目的 MAC 地址选择相应的 Port 进行转发。
PC1 对 PC2 正常通信过程:PC2、PC1 先后在本地 ARP 映射表中写入对方的 IP 和 MAC 地址映射,而非目的 PC 会把 PC1 的广播包丢弃。
非正常通信过程:如果 hacker 是 PC3,此时 PC3 接收 PC1 的广播包,同时回复一个虚假的响应包,告诉 PC1 我就是 PC2,即将 hacker 的 MAC 地址(MAC3)发送给 PC1。 而 PC1 会受到来自 PC2(正确的 PC2-MAC2)和 PC3(虚假的 PC2-MAC3)的响应包,但 PC1 不知道哪一个是正确的,只是简单地判断后到达的包为真,所以 PC3 只要连续不断地发送响应包,就总能把正确的响应包覆盖掉。
PC1 在本地 ARP 缓存中写入错误的 IP2-MAC3 映射,当 PC1 给 PC2 发送消息时,数据帧中目的 MAC 地址为 MAC3,送到交换机后,交换机查询 CAM 表,发现存在映射 MAC3-Port3,就将信息通过 Port3 转发、交付到了 PC3,从而截取到信息。
如果 ARP 攻击严重,会导致同一个局域网(也是同一个广播域)的所有主机的 ARP 缓存表中都存放着错误的 IP-MAC 映射,查询每台主机的 ARP 缓存表,不论什么 IP,都会映射到攻击者的 MAC 地址上,这样该局域网内的所有主机的消息都会发送到 Hacker 的主机上。
【5】ARP 攻击的防御
参考:ARP攻击,如何防御?
防御思路有二:
也就是说,ARP防御可以在网络设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。
1. 网络设备上的防御技术
DAI 技术(动态 ARP 检测,Dynamic ARP Inspection):
port<->mac<->ip
,生成 DAI 检测表;PC3 在交换机 DAI 表中的对应表项是
,而 PC3 发送的欺骗包内容是
,交换机便可以判断这个包是虚假的欺骗包,对其进行丢弃,并对接口做出惩罚(不同设备惩罚方式不同,可以直接将 port3 接口“软关闭”,直接对攻击者断网;也可以“静默处理”,即仅丢弃欺骗包,其他通信正常)。
关于如何生成 DAI 表,可以手工静态绑定,即用户接入网络后,管理员根据此用户主机的 MAC 和 IP 地址,在接口上绑死,缺点是比较麻烦。另一种方式是在交换机上开启 DHCP 侦听技术,当用户第一次通过 DHCP 获取地址时,交换机就把用户主机的 IP、MAC、Port 信息记录在 DHCP 侦听表,后面动态 ARP 检测时直接调用这张侦听表即可。
2. 用户端的防御技术
比较方便的是下载一些安全产品(但真不想用),其次可以通过 “ARP双向绑定” 技术实现。
双向绑定即通信双方都静态绑定对方的 IP 和 MAC 映射,即便收到 ARP 欺骗包,由于静态绑定的 ARP 映射条目优先级高于动态学习的,就可以保证不被欺骗。但缺点是比较麻烦,如果一个局域网内主机太多,工作量就很大了。
Windows ARP 绑定方法:运行 cmd
# 执行 arp -s ip地址 mac地址,比如:
arp -s 192.168.1.1 00-11-22-a1-c6-09
【6】其他补充
关于 ARP 的映射方式,为什么不直接维护一张静态的 ARP 映射表?
静态的 ARP 映射表把逻辑(IP)地址和物理(MAC)地址关联起来,它存储在网络中的每一台机器上。但静态映射有一定的局限性,因为 MAC 地址可能发生变化:
要避免这些问题出现,必须定期维护更新ARP表,比较麻烦而且会影响网络性能。
参考:
ARP原理和ARP攻击
ARP攻击,如何防御?