首先我们需要先大致了解一下MAC地址,MAC(Media Access Control, 介质访问控制)地址是烧录在Network Interface Card(网卡,NIC)里的,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique ,是识别LAN(局域网)节点的标识.24-47位是由厂家自己分配。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

  如何才能知道自己PC的IP地址?一个很简单的方法是使用ipconfig/all命令,如下图:

如果你的PC中安装有多个网卡,那么相对于每块网卡Ethernet  adapter项所显示的内容都会有所不同,相信大多数PC上显示的都是“本地连接”,这是中文版WIDNOWS XP系统中以太网卡的默认命名。此处Physical Address项目所显示的就是“本地连接”的MAC地址。

  在以太网中,如果主机A需要向主机B发送数据,在发送前必须先解决一个问题——我怎么才能知道主机B“位置”呢?可能有人会说我知道主机B的IP地址啊……,但实际上,在以太网环境中数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。

  ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

  在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,我们可以使用arp –a命令查看当前缓存表,如下图:

  我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

  下面我们通过一个实例来简单说明一下ARP协议是如何工作的:如下图,小编首先使用arp –d命令将ARP缓存表清空,第二步Ping一个IP地址192.168.99.252,第三步使用arp –a命令查看ARP缓存表,这时表中出现了一条  192.168.99.252  00-19-21-0a-95-9d  dynamic  记录,该条记录的类型为Dynamic,意思是说,这条记录是动态产生的。ARP记录也会出现静态的记录条目,相应的类型为static。正如前面所说的,ARP缓存表具有老化机制,几分钟后小编再次使用arp –a命令查看缓存表,刚才的那条记录已经不存在了。

  下图是小编使用wireshark(一个抓包工具)抓到的刚才ARP数据包的信息,由于在本机ARP缓存表中没有IP地址192.168.99.252相对应的MAC地址记录,所以在通讯之前系统会向网络中首先发送一个广播包——所有字符都为”f”的MAC地址,用来询问192.168.99.252的MAC地址是什么?局域网中所有的PC都将收到这个广播包,但只有IP地址为192.168.99.252的PC才会对此请求作出回应——告之192.168.99.204我的MAC地址是00:19:21:0a:95:9d,其它PC则将数据包直接丢弃,在发送方知到了目的主机的MAC地址后便可以进行通讯了。

TCP/IP协议--ARP协议(有了IP地址为什么还需要ARP协议)相关推荐

  1. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  2. TCP/IP详解--学习笔记(3)-IP协议,ARP协议,RARP协议

    ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的 ...

  3. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  4. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  5. 网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)

    IP协议 IP协议头格式 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4 4位头部长度(header length): IP头部的长度是多少个.32bit, 也就是 ...

  6. 物理层(网线)、数据链路层(交换机)、网络层(IP协议、ARP协议、ICMP协议、路由器)、VLAN(虚拟局域网)、HSRP协议、ACL、NAT

    文章目录 物理层(Physic Layer) 数据链路层(2层 Data Link Layer) 1.帧结构: 2.帧格式: 3.工作在数据链路层的设备: 交换机/网卡 4.交换机基本的工作原理:MA ...

  7. 前端学习(1856)vue之电商管理系统电商系统之安装mysql出现mysql报错:Can’t start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址

    2020-07-26T11:44:29.778919Z 0 [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: ...

  8. arp协议属于哪一层_TCP/IP协议栈-之-ARP协议分析

    ARP协议 一.广播 1.1 MAC广播地址 FF-FF-FF-FF-FF-FF 1.2 IP广播地址 本网段得广播IP地址:192.168.1.255/255.255.255.0 全局广播地址:25 ...

  9. TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题

    TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题 1. 结论 2. 原因: 3. 例子 4. 参考: 1. 结论 mac变,ip不变. mac地址在同一个广播域传输过程中是不变 ...

最新文章

  1. java初学者必看——J2SE小结
  2. java wcf 未提供用户名_WCF的用户名密码认证
  3. java jigsaw_Java 9,Jigsaw,JPMS和模块:个人探索
  4. 解决使用elementUI框架el-upload上传组件时session丢失问题
  5. Java中HashMap和TreeMap的区别深入理解
  6. php查询对象是否有某个属性可用,JavaScript 判断对象中是否有某属性的常用方法...
  7. python在线学习pdf_扣丁学堂Python在线学习之将pdf转成图片的方法
  8. 时间序列分析导论书摘:自相关图意义分析
  9. C++读写ini配置文件
  10. 我的职业规划500字计算机范文,职业生涯规划自我分析(职业生涯规划500字)
  11. 如何从网页上下载页面嵌入的PDF文件
  12. 记录自己装Ubuntu18.04+Win10 1803双系统,采用UEFI启动模式
  13. 悉尼大学高级计算机专业世界排名,悉尼大学专业排名一览及最强专业推荐(QS世界大学排名)...
  14. SEO优化基础知识大全 SEO新手入门必备知识
  15. 结构建模设计——Solidworks软件之草图绘制中借助新建基准面实现在曲面表面绘制特征的实现步骤总结
  16. 小米Q1业绩:总营收769亿元,手机稳居全球前三
  17. 用PS将GIF中的每一帧都输出为PNG
  18. 直击|支付宝还信用卡下月开始收费 每月2000免费额度
  19. 第2章:几何方面:六边形面积
  20. 龙芯2k开发板Debian系统安装教程

热门文章

  1. php 动态添加表格行,jQuery给html表格动态添加行方法总结
  2. python中有数组吗_python有数组吗
  3. VS2019 配色_这个双11,凯里-欧文陪你过!欧文6正式发布,城市版配色真的香
  4. mysql 字段排重_MySQL 根据单个、多个字段排重
  5. 太阳能板如何串联_太阳能光伏系统单晶和多晶模组的差异?农村家庭自用如何科学选择...
  6. python prettytable表格列数太多_excel列数太多了怎么办
  7. cups共享linux打印机_linux入门-映射网络驱动器
  8. python工业自动化仿真_ABAQUS 中基于 Python 脚本语言开发实现仿真自动化操作
  9. github gis 路径规划_Apollo问答丨车辆定位和轨迹规划用的是语义,还是3D Position?...
  10. list转字符串_剑指offer 38——字符串的排列