OSI模型 |
协议 |
数据包叫法 |
常见设备 |
五层模型 |
应用层 |
HTTP,DHCP,FTP |
报文 |
常见PC机,工作站,终端等 |
应用层 |
表示层 |
|
|||
会话层 |
|
|||
传输层 |
TCP/UDP |
传输协议分组,分组 |
网关 |
传输层 |
网络层 |
IP协议,ICMP协议,IGMP协议 |
IP包,IP数据报 |
路由器,三层交换机 |
网络层 |
数据链路层 |
以太网协议,ARP协议 |
帧,数据帧 |
交换机,网桥 |
数据链路层 |
物理层 |
802.3 |
比特流 |
网口,网线,集线器 |
物理层 |
阅读思路:本篇文章主要介绍数据链路层中的ARP协议。首先接收ARP的概念和作用,然后介绍ARP的协议字段和工作过程,最后用一个实例来验证说明该ARP协议的工作过程,结尾再给出通过命令操作主机ARP表项的实例和操作命令。
概念:ARP中文叫“地址解析协议”。是根据IP地址获取MAC地址的一个TCP/IP协议族中的网络协议。
作用:主机在发送数据的时候,仅知道目的IP地址和端口号,但是不知道对应的MAC地址。数据在发送的时候有一个封装过程(见《MY网络基础知识》----网络知识的整体架构),必须要指定MAC地址才能将数据封装发送出去。ARP的作用就是为了上层的协议在仅知道IP地址和端口号的情况下,能发送数据包。
基础知识:每台主机维护一个APR缓存表,可用arp -a命令查看本主机的arp表。arp表中标识为动态的arp表项,存在时间一般为20分钟,当超过20分组没有收到对方的数据帧,那么该arp表项将会失效,当往此IP地址发送数据的时候,会先发送arp请求。
ARP工作过程:发送数据时,先查看arp表中有无ip地址对应的arp表项,如果没有,就发送一个arp请求,然后等待接收arp回应,待收到arp回应后,根据arp回应的信息就将其ip地址添加到arp表中。
协议字段:
几个协议字段:
硬件类型:长度为2字节,通常值为1表示以太网
协议类型:要转换的协议类型,一般是ip协议,所以这里一般是0x0800
硬件地址长度:也就是mac地址的长度,mac地址为6字节,所有这里是0x06
协议地址长度:也就是ip地址长度,ip地址为4字节,所以这里是0x04
Op:表示该arp数据包是请求还是应答,1表示请求,2表示应答,
步骤:
1.dos下用arp -a 查看自己的网卡和arp表,可以知道自己的网卡ip是192.168.98.28
2.先用arp -d * 192.168.98.28 删除该网卡的所有arp表
3.启动Wireshark,开始抓包
4.ping 一个192.168.98.120(这是和我主机在同一个局域网的另一台主机)
5.筛选arp包
请求报文:
应答报文:
arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
InetAddr 和 IfaceAddr都是ip地址,不同的是,InetAddr 是指某个ip,而IfaceAddr是指某个网卡接口的ip。
-a 显示所有接口的arp缓存表
-a InetAddr 显示指定ip的arp缓存记录
-a -N IfaceAddr 显示指定网卡的arp缓存记录
-g 参数的用法同 -a
-d -d InetAddr [IfaceAddr] 删除由InetAddr 指示的arp缓存记录,或由IfaceAddr指示的网卡接口的arp缓存记录,要删除所有arp缓存记录可用通配符 * 代替InetAddr参数
-s InetAddr EtherAddr [IfaceAddr] 添加一个静态的arp记录,把InetAddr ip地址解析为EtherAddr 物理地址,IfaceAddr指定了网卡接口的ip。
InetAddr 和 IfaceAddr 都是点分十进制表示,例如:192.168.0.10
EtherAddr 是以 - 连接的十六进制表示,例如:00-11-22-33-44-55
静态的arp记录不会因为超时而被删除,但如果重启电脑或tcp/ip协议停止运行,会删除所有静态动态的arp记录。