写给非网工的CCNA教程(2)第一个协议--ARP协议
在上文中,我们提到了IP地址和MAC地址都是用来唯一标识网络中的设备的。在以太网中,通信的每台设备都得有一个IP地址和一个MAC地址。IP地址属于OSI七层模型中的第3层网络层的概念,MAC地址则是第2层数据链路层的概念。
MAC地址是设备出厂时候就自带,而IP地址是需要我们手动去配置的。当然也可以是从服务器动态获取,这涉及到DHCP的知识,本系列中所有的IP地址都是手动配置的。
如下图所示,是Windows下一块网卡的配置信息。
1 TCP/IP协议族与OSI模型
本文是讲述TCP/IP协议族中的第一个协议--ARP协议,那么什么是TCP/IP协议族呢?其实TCP/IP协议族,可不止是TCP协议和IP协议这两种,而是一组协议。
并且这些协议是分层的,如下图:物理层、网络层、传输层、应用层。每层完成不同的功能,且与其他层是独立的。
通常我们会把TCP/IP协议族与OSI七层模型作比较,如下图所示。可以看到TCP/IP协议族分为四层,而OSI模型为七层,两者之间的映射关系如下图。
在下图中,我们还举例不同层级的一些常用协议,可以看到本文讨论的ARP协议位于网络层,OSI模型的第三层。
2 初识ARP
在网络(没有特殊说明,我们都以以太网代表网络)通信中,我们往往只知道对方的IP地址,并不知道对方的MAC地址。这样在通过真正的底层网络(以太网)发送数据时,根本没法封装二层的报头。
而我们的底层网络(以太网)它可不认识IP地址,在它眼里只有二层报头,只认MAC地址,IP地址什么的,对它而言都是透明的。
为了解决这个问题,就引入了ARP协议,该协议的设计初衷,就是通过它,可以找到以太网中某台设备IP地址对应的MAC地址。当然了,如果不是以太网,也有类似的协议,去解决这个问题,比如ATM网络对应的协议就是ATM-ARP。
3 ARP数据包
(1)ARP与OSI模型
ARP的数据包是被直接封装在以太网帧头上的,以太网用0x0806来表示ARP协议,如下图所示。
如上图,Frame 1: 这是wireshark抓包软件自己加上去的,在网络传输中没有这个,传输的是【Ethernet II + ARP】这部分。
(2)关于Ethernet II
任何底层的传输技术都会有自己的数据格式,比如USB、比如Wi-Fi、比如本文的Ethernet(以太网)。对于以太网而言,它的数据格式就是上图所看到的Ethernet II。
Ethernet II分为两部分:Ethernet II Header + Payload,上图中的Payload就是我们的ARP协议。
Header是由三个部分组成,Destination(目的MAC地址)+ Source(源MAC地址)+ Type(载荷的类型,本文载荷类型为ARP,用0x0806表示)。
(3)ARP数据包
ARP的数据包主要是两种类型:Request和Reply,如下图所示。
4 ARP如何解决IP地址到MAC地址的映射关系
举个例子,我有台电脑A【IP:10.74.97.116/24,MAC:54:ee:75:ce:dd:6e】,需要去访问另一台电脑B【IP:10.74.97.125/24】,但是我并不知道它的MAC地址,只知道它与我在同一个网段(不同网段的情形,后面有文章会写道)。
(1)ARP请求
因此A会发送ARP请求到整个网络内所有设备,即广播,封包如下图所示。
Ethernet II中,源MAC为A的MAC【54:ee:75:ce:dd:6e】,目的MAC为广播地址【FF:FF:FF:FF:FF:FF】。
ARP中,Sender IP为A的IP【10.74.97.116】,Target IP为B的IP【10.74.97.125】,Sender MAC为A的MAC【54:ee:75:ce:dd:6e】;Target MAC是本次请求目的,目前不知,用【00:00:00:00:00:00】代替。
(2)ARP响应
在网络中的所有设备都会收到,但是只有B的IP是10.4.97.126,因此只有B才会回复才广播ARP请求,封包如下图所示。
Ethernet II中,源MAC为B的MAC【00:50:56:89:0a:1b】,目的MAC为A的MAC【54:ee:75:ce:dd:6e】。
ARP中,Sender IP为B的IP【10.74.97.125】,Target IP为A的IP【10.74.97.116】,Sender MAC为为B的MAC【00:50:56:89:0a:1b】;Target MAC为A的MAC【54:ee:75:ce:dd:6e】。
(3)ARP表
当A收到B的回复后,就把B的IP地址和MAC地址映射关系写到一个表中记录下来,这个表就是ARP表,在Windwos下可以通过命令arp -a查看(Linux下通过arp -n查看),如下图所示。
[C:\~]$ arp -aInterface: 10.74.97.116 --- 0x5Internet Address Physical Address Type10.74.97.125 00-50-56-89-0a-1b dynamic 10.74.97.127 ff-ff-ff-ff-ff-ff static 224.0.0.2 01-00-5e-00-00-02 static 224.0.0.22 01-00-5e-00-00-16 static 224.0.0.251 01-00-5e-00-00-fb static 239.255.255.250 01-00-5e-7f-ff-fa static
当后续A还要与B通信时,我们就不用再发ARP请求包了,直接查找ARP表。不过这些记录不是永远存在ARP表中的,都有一个时间,默认时5分钟,时间到了以后,该条ARP表项就会被删除。下次再访问,由于ARP表里没有,因此又得从ARP广播请求开始。
(4)ARP各个字段解释
字段 | 解释 | 举例 |
Hardware Type | 表示底层网络的类型 | 例如以太网 |
Protocol Type | 表示网络层协议 | 可以是IPv4或IPv6 |
Hardware size | 表示底层网络地址的长度 | 比如以太网MAC地址长度为6个字节 |
Protocol | 表示网络层协议地址的长度 | 比如IPv4协议地址长度为4个字节 |
Opcode | 表示ARP包的类型 | 比如Request、Reply |
Sender MAC Address | 发送方的MAC地址 | |
Sender IP address | 发送方IP地址 | |
Target MAC address | 要查询的MAC地址 | |
Target IP address | 目标方的IP地址 |
5 gratuitousARP
免费ARP是一张特殊的ARP Reply报文,作用是用来做地址重复检测(DAD)的,数据包格式如下图所示。
从上图,可知gratutious ARP包的Sender MAC和Target MAC相同、Sender IP和Target IP相同。其中相同IP就是我们需要作DAD的IP。
做DAD检测的一方,会把需要DAD检测的IP放到Sender IP和Target IP字段里面,然后广播出去,如果网络中此IP被人使用,那么它会响应此gratutious ARP包,并且是广播回复的。从下图可以看到回复的报文格式。
如果在指定的时间内,DAD检测方没有收到任何回复,那么就认为此IP没有被人使用,自己就可以用了。
写给非网工的CCNA教程(2)第一个协议--ARP协议相关推荐
- Linux的内网渗透入门教程:第一节 通过arp欺骗进行网关劫持,截获别人手机的图片(VMware环境)
免责声明:本人提供的任何工具.文章和知识,只可研究学习,本人对使用这些工具.文章和知识而导致的一切后果,不承担任何法律责任.请大家文明上网,远离网络非法行为! 一.引言 这是本人第一次写博客,据我一位 ...
- 网工学习 第十一章 网络管理 网络管理基础 网络管理协议五大标准 SNMP协议 RMON
目录 第十一章 网络管理 网络管理基础 网络管理协议五大标准 SNMP协议 SNMP协议的操作 SNMPv1 SNMPv2 SNMPv3 管理数据库MIB-2 被管理 对象标识符OID RMON 第十 ...
- 对路径的访问被拒绝怎么办_学习了解ACL—扩展访问控制列表,就在网工知识角...
学网络,就在IE-LAB 国内高端网络工程师培养基地 基于ACL过滤telnet和特定的网段信息 什么是访问控制列表(ACL)? 应用于路由器接口的指令列表,用于指定哪些数据包可以接收转发,哪些数据包 ...
- ipsec协议_网工知识角轻松学网络|三分钟了解PPPOE协议
学网络,就在IE-LAB 国内高端网络工程师培养基地 PPPOE( Point-to-PointProtocol Over Ethernet)以太网上的点对点协议,是将点对点协议(PPP)封装在以太网 ...
- esxi管理端口_网工知识角|一分钟轻松了解华为端口安全机制
学网络,就在IE-LAB 国内高端网络工程师培养基地 为防止MAC地址洪泛攻击,防止未经允许的设备访问网络,并增强安全性.通过端口安全机制,录连接到交换机端口的以太网MAC地址,只允许某个或者某些合法 ...
- 只会用ping测试网络通不通?高级网工还会这么用
今天咱们来聊聊PING命令.作为网工应该都是耳熟能详,PING作为ICMP协议工具之一,算是一个使用率很高的命令. 它的作用: 用来检测网络的连通情况和分析网络速度 根据域名得到服务器IP 根据pin ...
- 交换机虚拟化和堆叠的区别_网工知识角|一分钟记熟NFV网络功能虚拟化技术介绍...
点上方蓝字关注,每天都有新收获! 学网络,就在IE-LAB 国内高端网络工程师培养基地 NFV网络功能虚拟化(Network Functions Virtualization),是一种网络架构的概念, ...
- vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定
学网络,就在IE-LAB 国内高端网络工程师培养基地 MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制.通过MUX VLAN提供的二层流量隔离的机制可以实 ...
- python实现局域网攻击软件_使用python的scapy库进行局域网内的断网攻击(基于ARP协议)...
(使用python scapy库进行网络攻击) ARP协议 ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行. ARP攻击的局限性: ARP攻击仅能在以太网( ...
- 计算机网络的super super easy 教程 | IP协议 及 arp协议
网络层:这两个协议只是打包方式及使用材料不相同 ip协议 arp协议(路由器 电脑查看):只看四个地址 源mac 目的mac(不知道的情况下用00:00:00:00:00:00填充 表示我 ...
最新文章
- linux下i2c设备驱动程序,Linux I2C 设备驱动
- openfiler 工具栏和快捷方式
- Retrofit 上传文件显示进度及踩坑记录
- MySQLdb的安装
- 光电转换器有什么作用?光纤收发器如何保养?
- shell 判断文件是否存在,没有则创建
- void 型指针的高阶用法,你掌握了吗?
- 3 SAP STMS跨服务器传请求号
- 红橙Darren视频笔记 代理模式 动态代理和静态代理
- 不修改代码就能优化ASP.NET网站性能的一些方法
- Redhat 设置cntlm代理步骤
- 模糊控制完全理解系列(二)—— 模糊集合论基础之模糊集基础概念
- 静态路由 直连路由 拓扑
- Java 开发微信公众号(订阅号)
- 关于网络渗透的过程以及感想记录
- Qt编写安防视频监控系统13-视频存储
- MyEclipse中怎么修改项目访问路径
- 第六章:项目管理的三要素
- 服务器阵列状态显示verify,[转载]转载:关于RAID--Build/VerifyClearQuick Init众说
- 【Python】如何通过官网下载和安装PythonPyCharm(Windows系统)