为什么要有arp以及arp原理

news/2024/9/20 2:47:20

今天给大家说说arp吧!在学网络的时候,我们知道的是自顶向下交付数据包。但是我们在交付给数据链路层的时候,我们已经有了ip的报头,但是要注意的是,ip层可不会给我们传输数据包,他还要向下交付。我们学过ip协议就会知道的是,ip数据包在向下交付的时候,我们已经对查过路由表了,也就是说我知道这个数据包要去哪,但是我们数据包在网络上务必要经过路由器等节点,我们经过节点的时候会用到mac地址,但是对方的mac地址我们应该如何得知?此时我们就要用到的是arp协议。如下:

其实我们可以理解为arp协议是在以太网数据帧之上的。我们知道以太网数据帧的协议中有一个帧类型,如果是0800,那么此时就是要把这个数据包交付给网络层的ip协议的,如果是0806的话,那么就代表这个是交付给arp协议的,也就是说明这个数据包是arp请求或是应答。说完怎么交付那么就说说有什么用吧。

我们得知的是我们下一跳不知道在一个主机的mac地址,所以要用arp协议,下面先来看看arp协议的报头吧。

硬件类型代表的是次子网是什么网络,1代表是以太网。

协议类型就是0800,代表转换的地址,这里就是ip。

硬件长度是6。

协议地址长度是4。

op代表是应答还是请求,1是请求,2是应答

剩下就很简单了,就是源mac,ip,目的mac,ip地址。

看完此协议报,我们要知道该怎么填。我们知道,我们是不知道下一跳的主机的mac地址的,所以我们在发送请求的时候,我们要把目的mac地址写成广播地址。也就是全是F。目的ip地址我们是知道的。所以在局域网中,源主机想要知道下一跳的mac地址,所以我们要发送请求,这个局域网中的所有的主机都会处理这个请求,根据目的ip地址来对比这个请求是否是自己。不是就丢弃,是的话就构建arp应答,这样就知道了。

然后返回给源主机以后,我们就知道了下一跳的主机mac地址。

那么,此时问题来了,这样的话,局域网中是否是有大量的arp请求,其实不这样的,因为arp层会有一个缓存,它对应的是以前所应答的ip地址所对应的mac地址,可以理解为他是具有记忆的,但是这个记忆是有时间限制的。如果没有时间限制的话,就会出现问题。

还有就是,我们可以用ping命令在自己所在的局域网来获取自己这个局域网中其他主机的mac地址。

以上就是本篇文章的内容,大家如果感觉有所收获希望点一下赞!!谢谢。


http://lihuaxi.xjx100.cn/news/1892373.html

相关文章

Java集合--Map

1、Map集合概述 在Java的集合框架中&#xff0c;Map为双列集合&#xff0c;在Map中的元素是成对以<K,V>键值对的形式存在的&#xff0c;通过键可以找对所对应的值。Map接口有许多的实现类&#xff0c;各自都具有不同的性能和用途。常用的Map接口实现类有HashMap、Hashtab…

网络镜像 -- 本地端口镜像

网络镜像 网络镜像技术允许复制和记录在计算机网络上传输的数据流量&#xff0c;可以将交换机中一个端口的流量复制到另一个端口。 网络镜像广泛用于抓包监控。 用一个场景来举例&#xff1a; 如图&#xff0c;PC1、2、3分别是三台主机&#xff0c;与Switch交换机对应端口…

云原生架构总结-读书笔记

云原生架构进阶实战-读书笔记 云原生概念 云原生&#xff08;Cloud Native&#xff09;概念是由Pivotal的Matt Stine在2013年首次提出的。这个概念得到了社区的不断完善&#xff0c;内容越来越丰富&#xff0c;目前已经**包括了DevOps&#xff08;Development和Operations的组…

数据结构学习 12字母迷宫

dfs 回溯 剪枝 这个题和dfs有关&#xff0c;但是我之前没有接触过&#xff0c;我看了这一篇很好的文章&#xff0c;看完之后写的答案。 我觉得很好的总结&#xff1a; dfs模板 int check(参数) {if(满足条件)return 1;return 0; }void dfs(int step) {判断边界{相应操作}尝试…

springboot(ssm幼儿园管理系统 儿童托管平台Java系统

springboot(ssm幼儿园管理系统 儿童托管平台Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数据…

CSS第二天导读

1&#xff0c;Emmet语法 Emmet语法的前身是Zen coding&#xff0c;它使用缩写&#xff0c;来提高html / css 的编写速度&#xff0c;Vscode内部已经集成该语法 1.1&#xff0c;快速生成HTML结构语法 1.想要快速生成多个相同标签&#xff0c;加上*就可以了&#xff0c;比如 d…

linux异步通知与异步I/O

异步通知机制&#xff1a;一旦设备就绪&#xff0c;则主动通知应用程序&#xff0c;这样应用程序根本就不需要查询设备状态&#xff0c;是一种“信号驱动的异步I/O”。 信号是在软件层次上对中断机制的一种模拟&#xff0c;在原理上&#xff0c;一个进程收到一个信号与处理器收…

Python爬虫之Cookie 与 Session 的区别

文章目录 一、 含义二、有效时长&#xff1a;三、面试中可能会遇到的问题点四、在反爬技术中的应用关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源…