《TCP/IP详解 卷1:协议》之第四、五章:ARP RARP

news2025/4/25 0:54:22

目录

一、ARP && RARP 报文结构

1、ARP请求报文示例

2、ARP响应报文示例

3、RARP请求报文示例

4、RARP响应报文示例

5、关于 padding

6、免费ARP

二、tcpdump 的使用

1、基本语法

2、常用选项

3、常用过滤条件

三、arp 命令的使用

1、基本语法

2、常用选项

3、示例


一、ARP && RARP 报文结构

ARP 主要用于将 IP 地址解析为 MAC 地址,而 RARP 用于将 MAC 地址解析为 IP 地址。

RARP报文的格式与ARP报文非常相似,它们都使用相同的报文结构,主要区别在于帧类型的不同(ARP帧类型为0x0806,RARP帧类型为0x8035),以及操作码(Operation Code)字段值不同。报文结构如下:

字段长度(字节)说明
硬件类型2表示硬件地址类型,以太网为1
协议类型2表示协议地址类型,IPv4为0x0800
硬件地址长度1硬件地址(MAC地址)的长度,以太网为6字节
协议地址长度1协议地址(IP地址)的长度,IPv4为4字节
操作码2表示操作类型,1为ARP请求,2为ARP响应,3为RARP请求,4为RARP响应
发送方硬件地址6发送方的MAC地址
发送方协议地址4发送方的IP地址
目标硬件地址6目标设备的MAC地址
目标协议地址4目标设备的IP地址

1、ARP请求报文示例

以太网帧头

目的MAC地址源MAC地址类型
FF:FF:FF:FF:FF:FF00:11:22:33:44:550x0806(ARP协议)

ARP请求报文内容:

字段值(十六进制)说明
硬件类型0001以太网
协议类型0800IPv4
硬件地址长度06MAC地址长度
协议地址长度04IP地址长度
操作码0001ARP请求
发送方硬件地址00:11:22:33:44:55主机A的MAC地址
发送方协议地址C0:A8:01:64主机A的IP地址(192.168.1.100)
目标硬件地址00:00:00:00:00:00未知,用全0填充
目标协议地址C0:A8:01:C8主机B的IP地址(192.168.1.200)

2、ARP响应报文示例

以太网帧头

目的MAC地址源MAC地址类型
00:11:22:33:44:55AA:BB:CC:DD:EE:FF0x0806(ARP协议)

ARP响应报文内容

字段值(十六进制)说明
硬件类型0001以太网
协议类型0800IPv4
硬件地址长度06MAC地址长度
协议地址长度04IP地址长度
操作码0002ARP响应
发送方硬件地址AA:BB:CC:DD:EE:FF主机B的MAC地址
发送方协议地址C0:A8:01:C8主机B的IP地址(192.168.1.200)
目标硬件地址00:11:22:33:44:55主机A的MAC地址
目标协议地址C0:A8:01:64主机A的IP地址(192.168.1.100)

3、RARP请求报文示例

以太网帧头:

目的MAC地址源MAC地址类型
FF:FF:FF:FF:FF:FF00:11:22:33:44:550x8035(RARP协议)

RARP请求报文内容

字段值(十六进制)说明
硬件类型0001以太网
协议类型0800IPv4
硬件地址长度06MAC地址长度
协议地址长度04IP地址长度
操作码0003RARP请求
发送方硬件地址00:11:22:33:44:55无盘工作站的MAC地址
发送方协议地址00:00:00:00无盘工作站的IP地址(未知,用0.0.0.0填充)
目标硬件地址00:00:00:00:00:00未知,用全0填充
目标协议地址00:00:00:00未知,用0.0.0.0填充

注:无盘工作站没有本地存储设备,启动时需要从网络上的服务器获取操作系统映像。它们通过RARP请求一个IP地址,以便能够与服务器通信。

4、RARP响应报文示例

假设RARP服务器收到请求后,为无盘工作站分配了IP地址192.168.1.100,并发送一个RARP响应报文。

以太网帧头:

目的MAC地址源MAC地址类型
00:11:22:33:44:55服务器的MAC地址0x8035(RARP协议)

RARP响应报文内容

字段值(十六进制)说明
硬件类型0001以太网
协议类型0800IPv4
硬件地址长度06MAC地址长度
协议地址长度04IP地址长度
操作码0004RARP响应
发送方硬件地址服务器的MAC地址RARP服务器的MAC地址
发送方协议地址C0:A8:01:64RARP服务器的IP地址(192.168.1.1)
目标硬件地址00:11:22:33:44:55无盘工作站的MAC地址
目标协议地址00:00:00:00分配给无盘工作站的IP地址(192.168.1.100)

5、关于 padding

ARP数据为28字节,根据以太网帧最小负载长度为46字节的规定,需要 padding 18个字节。如下报文所示:

①、常见的几个字节长度解释:

46:以太网帧(Ethernet Frame)的最小数据负载长度。

60:46字节的基础上 +  14字节长度的以太网帧头。

64:60字节的基础上 +   4字节长度的以太网帧尾。

②、关于以下原文的解释:“其原因是我们在发送该以太网数据帧的系统(bsdi)上运行tcpdump命令。应用程序rarpd写42字节到BSD分组过滤设备上(其中14字节为以太网数据帧的报头,剩下的28字节是RARP应答),这就是tcpdump收到的副本。但是以太网设备驱动程序要把这一短帧填充空白字符以达到最小传输长度(60)。如果我们在另一个系统上运行tcpdump命令,其长度将会是60。” :

1、在本"主机A"上使用 tcpdump 捕获发包,捕获的是副本,没有经过以太网设备驱动程序的 padding 处理。

2、如果在另一台"主机B"上使用 tcpdump 捕获(接收)这个报文,是经过 padding 处理的,因为包在从“主机A”发出时,经过了以太网设备驱动程序的处理。

6、免费ARP

免费ARP报文结构:

免费ARP是一种特殊的ARP报文,报文的格式与普通ARP报文相同,但有一些特定的字段值。以下是报文的详细结构:

字段长度(字节)说明
硬件类型2硬件地址类型,以太网为1
协议类型2协议地址类型,IPv4为0x0800
硬件地址长度 1硬件地址长度,以太网为6字节
协议地址长度1协议地址长度,IPv4为4字节
操作码2操作类型,免费ARP通常使用2(ARP响应)
发送方硬件地址6发送方的MAC地址
发送方协议地址4发送方的IP地址
目标硬件地址6目标硬件地址,通常为发送方的MAC地址
目标协议地址4目标协议地址,通常为发送方的IP地址

假设设备A(IP地址为192.168.1.100,MAC地址为00:11:22:33:44:55)发送一个免费ARP报文,以下是报文的具体内容:

以太网帧头

字段值(十六进制)说明
目的MAC地址FF:FF:FF:FF:FF:FF广播地址
源MAC地址00:11:22:33:44:55设备A的MAC地址
类型0806表示这是一个ARP报文

ARP报文内容:

字段值(十六进制)说明
硬件类型0001以太网
协议类型0800IPv4
硬件地址长度06MAC地址长度
协议地址长度04IP地址长度
操作码0002ARP响应(免费ARP通常使用响应格式)
发送方硬件地址00:11:22:33:44:55设备A的MAC地址
发送方协议地址C0:A8:01:64设备A的IP地址(192.168.1.100)
目标硬件地址00:11:22:33:44:55设备A的MAC地址(免费ARP中通常与发送方MAC地址相同)
目标协议地址C0:A8:01:64设备A的IP地址(192.168.1.100)

目的MAC地址:免费ARP报文通常以广播形式发送,因此目的MAC地址为全1(FF:FF:FF:FF:FF:FF)。

操作码:免费ARP通常使用操作码2(ARP响应),而不是1(ARP请求)。这是因为免费ARP的目的是通告自己的IP和MAC信息,而不是请求其他设备的MAC地址。

目标硬件地址和目标协议地址:在免费ARP中,目标硬件地址和目标协议地址通常与发送方的硬件地址和协议地址相同。这是因为设备在通告自己的信息。

应用场景:

1、检测IP地址冲突:设备启动时发送免费ARP报文,如果收到响应,则表明网络中存在IP地址冲突。

2、更新ARP缓存表:当设备的MAC地址发生变化(如更换网卡)时,发送免费ARP报文以更新其他设备的ARP缓存表。

二、tcpdump 的使用

1、基本语法

tcpdump   [选项]   [过滤条件]

2、常用选项

  • -i <interface>:指定监听的网络接口。

    • 示例:tcpdump -i eth0(监听 eth0 接口的流量)。

  • -n:不解析主机名(显示 IP 地址而不是主机名)。

    • 示例:tcpdump -n(不解析主机名)。

  • -nn:不解析主机名和端口号(显示原始 IP 地址和端口号)。

    • 示例:tcpdump -nn(不解析主机名和端口号)。

  • -v:详细模式,显示更多报文信息。

    • 示例:tcpdump -v(显示详细信息)。

  • -vv:更详细模式,显示更多报文信息。

    • 示例:tcpdump -vv(显示更详细信息)。

  • -c <count>:捕获指定数量的报文后停止。

    • 示例:tcpdump -c 10(捕获 10 个报文后停止)。

  • -w <file>:将捕获的报文保存到指定文件中。

    • 示例:tcpdump -w capture.pcap(将捕获的报文保存到 capture.pcap 文件中)。

  • -r <file>:从指定文件中读取报文。

    • 示例:tcpdump -r capture.pcap(从 capture.pcap 文件中读取报文)。

  • -s <size>:设置捕获的报文大小(默认为 65535 字节)。

    • 示例:tcpdump -s 100(捕获每个报文的前 100 字节)。

  • -e:用于显示以太网帧的头部信息,包括源MAC地址、目的MAC地址以及以太网帧的类型等

    • 实例:tcpdump -e

3、常用过滤条件

  • host <IP>:捕获指定主机的报文。

    • 示例:tcpdump host 192.168.1.100(捕获来自或发往 192.168.1.100 的报文)。

  • net <网络>:捕获指定网络的报文。

    • 示例:tcpdump net 192.168.1.0/24(捕获来自或发往 192.168.1.0/24 网络的报文)。

  • port <端口>:捕获指定端口的报文。

    • 示例:tcpdump port 80(捕获端口 80 的报文)。

  • tcp:捕获 TCP 协议的报文。

    • 示例:tcpdump tcp(捕获所有 TCP 报文)。

  • udp:捕获 UDP 协议的报文。

    • 示例:tcpdump udp(捕获所有 UDP 报文)。

  • icmp:捕获 ICMP 协议的报文。

    • 示例:tcpdump icmp(捕获所有 ICMP 报文)。

  • arp:捕获 ARP 协议的报文。

    • 示例:tcpdump arp(捕获所有 ARP 报文)。

  • src <IP>:捕获来自指定 IP 的报文。

    • 示例:tcpdump src 192.168.1.100(捕获来自 192.168.1.100 的报文)。

  • dst <IP>:捕获发往指定 IP 的报文。

    • 示例:tcpdump dst 192.168.1.100(捕获发往 192.168.1.100 的报文)。

  • src port <端口>:捕获来自指定端口的报文。

    • 示例:tcpdump src port 80(捕获来自端口 80 的报文)。

  • dst port <端口>:捕获发往指定端口的报文。

    • 示例:tcpdump dst port 80(捕获发往端口 80 的报文)。

  • not <条件>:排除指定条件的报文。

    • 示例:tcpdump not host 192.168.1.100(排除来自或发往 192.168.1.100 的报文)。

三、arp 命令的使用

1、基本语法

arp   [选项]   [主机名或IP地址]

2、常用选项

  • -a:显示系统中的所有 ARP 表项。

    • 示例:arp -a(显示所有 ARP 表项)。

  • -n:不解析主机名,直接显示 IP 地址。

    • 示例:arp -n(显示所有 ARP 表项,不解析主机名)。

  • -d:删除指定的 ARP 表项。

    • 示例:arp -d 192.168.1.100(删除 IP 地址为 192.168.1.100 的 ARP 表项)。

  • -s:添加或修改一个静态 ARP 表项。

    • 示例:arp -s 192.168.1.100 00:11:22:33:44:55(添加或修改 IP 地址为 192.168.1.100 的静态 ARP 表项,MAC 地址为 00:11:22:33:44:55)。

  • -f:从文件中读取 ARP 表项。

    • 示例:arp -f /path/to/arpfile(从文件中读取 ARP 表项)。

3、示例

执行 arp -a:

? (192.168.1.1) at 00:11:22:33:44:55 [ether] on eth0
  • ? 表示主机名未知。

  • 192.168.1.1 是 IP 地址。

  • 00:11:22:33:44:55 是对应的 MAC 地址。

  • [ether] 表示这是一个以太网设备。

  • on eth0 表示这些条目属于 eth0 接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战华为1:1方式1 to 1 VLAN映射

本文摘自笔者于2024年出版&#xff0c;并得到广泛读者认可&#xff0c;已多次重印的《华为HCIP-Datacom路由交换学习指南》。 华为设备的1 to 1 VLAN映射有1:1和N :1两种方式。1:1方式是将指定的一个用户私网VLAN标签映射为一个公网VLAN标签&#xff0c;是一种一对一的映射关系…

NLP 梳理03 — 停用词删除和规范化

一、说明 前文我们介绍了标点符号删除、文本的大小写统一&#xff0c;本文介绍英文文章的另一些删除内容&#xff0c;停用词删除。还有规范化处理。 二、什么是停用词&#xff0c;为什么删除它们&#xff1f; 2.1 停用词的定义 停用词是语言中的常用词&#xff0c;通常语义…

使用若依二次开发商城系统-1:搭建若依运行环境

前言 若依框架有很多版本&#xff0c;这里使用的是springboot3vue3这样的一个前后端分离的版本。 一.操作步骤 1 下载springboot3版本的后端代码 后端springboot3的代码路径&#xff0c;https://gitee.com/y_project/RuoYi-Vue 需要注意我们要的是springboot3分支。 先用g…

HarmonyOS-ArkUI: 组件内转场(transition)

什么是组件内转场 组件内转场指的是组件在触发转场的时机所具备的动画效果。转场的时机指的是,组件元素发生变化的时候,具体为: 组件被添加组件被删除组件可见性发生变化-Visibility这些场景有时候单纯的让其消失,出现,平移有时候视觉效果会比较突兀。我们可以利用组件内…

MVVM框架详解:原理、实现与框架对比

文章目录 1. 引言2. MVVM的基本概念3. MVVM的原理与实现3.1 数据绑定原理3.2 命令模式实现 4. MVVM的优势与局限性4.1 优势4.2 局限性 5. 常见MVVM框架对比5.1 MVVM Light5.2 Prism5.3 Caliburn.Micro5.4 MvvmCross5.5 ReactiveUI 6. 实际应用示例7. 最佳实践与注意事项7.1 MVV…

opencv--图像处理

这里所说的图像处理并不是专业术语&#xff0c;而是值开发人员对图像的处理技术方法。 教程 菜鸟教程 书籍推介--<opencv4.5 计算机视觉开发实践 基于vc>.朱文伟 获取图像数据 三种方式&#xff1a; cv::VideoCapture&#xff1a; OpenCV 提供的视频捕获类&#xff0…

达梦官方管理工具 SQLark——全面支持达梦、Oracle、MySQL、PostgreSQL 数据库!

SQLark 是一款面向信创应用开发者的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;已支持达梦、Oracle、MySQL数据库&#xff1b;在最新的 V3.4 版本中&#xff0c;SQLark 新增了对 PostgreSQL 的支持&#xff0c;兼容 PostgreSQL…

解读大型语言模型:从Transformer架构到模型量化技术

一、生成式人工智能概述 生成式人工智能&#xff08;Generative Artificial Intelligence&#xff09;是一种先进的技术&#xff0c;能够生成多种类型的内容&#xff0c;包括文本、图像、音频以及合成数据等。其用户界面的便捷性极大地推动了其广泛应用&#xff0c;用户仅需在…

理解计算机系统_网络编程(1)

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 网络是计算机科学中非常重要的部分,笔者过去看过相关的内…

栈和队列学习记录

一、栈 1.栈的概念 操作受限的线性表-----栈&#xff1a;栈只允许在表的一端进行插入和删除操作&#xff0c;这一端被称为栈顶&#xff08;Top&#xff09;&#xff0c;另一端则是栈底&#xff08;Bottom&#xff09;。这种受限的操作方式使得栈遵循后进先出&#xff08;LIFO…

React SSR + Redux 导致的 Hydration 报错踩坑记录与修复方案

一条“Hydration failed”的错误&#xff0c;让我损失了半天时间 背景 我在用 Next.js App Router Redux 开发一个任务管理应用&#xff0c;一切顺利&#xff0c;直到打开了 SSR&#xff08;服务端渲染&#xff09;&#xff0c;突然看到这个令人头皮发麻的报错&#xff1a; …

轻量级景好鼠标录制器

景好鼠标录制器&#xff08;详情请戳 官网&#xff09;是一款免费无广的键鼠动作录制/循环回放工具&#xff0c;轻松自动化应对一些重复繁琐的操作任务&#xff0c;如来回切换窗口、文档同一相对位置的复制粘贴等场景&#xff0c;兼容Win XP - 11 。毕竟此款本身主打简约类型&a…

leetcode--两数之和 三数之和

1.两数之和 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 …

FFMPEG-视频解码-支持rtsp|rtmp|音视频文件(低延迟)

本人亲测解码显示对比延迟达到7到20毫秒之间浮动兼容播放音视频文件、拉流RTSP、RTMP等网络流 基于 Qt 和 FFmpeg 的视频解码播放器类,继承自 QThread,实现了视频流的解码、播放控制、帧同步和错误恢复等功能 工作流程初始化阶段: 用户设置URL和显示尺寸 调用play()启动线程解…

openEuler安装nvidia驱动【详细版】

注意&#xff1a;在 openEuler 24.03 LTS 系统中安装 NVIDIA 驱动&#xff08;RTX 3090&#xff09;需要禁用默认的 Nouveau 驱动并手动安装官方驱动。 一、准备工作 系统更新与依赖安装 更新系统并安装必要依赖包&#xff1a;sudo dnf update -y sudo dnf install gcc make k…

基于Python爬虫的豆瓣电影信息爬取(可以根据选择电影编号得到需要的电影信息)

# 豆瓣电影信息爬虫(展示效果如下图所示:) 这是一个功能强大的豆瓣电影信息爬虫程序,可以获取豆瓣电影 Top 250 的详细信息。 ## 功能特点 - 自动爬取豆瓣电影 Top 250 的所有电影信息 - 支持分页获取,每页 25 部电影,共 10 页 - 获取每部电影的详细信息,包括: - 标题…

基于PaddleOCR对图片中的excel进行识别并转换成word优化(二)

0、原图 一、优化地方 计算行的时候&#xff0c;采用概率分布去统计差值概率比较大的即为所要的值。 def find_common_difference(array):"""判断数组中每个元素的差值是否相等&#xff0c;并返回该差值:param array: 二维数组&#xff0c;其中每个元素是一个…

Nvidia显卡架构演进

1 简介 显示卡&#xff08;英语&#xff1a;Display Card&#xff09;简称显卡&#xff0c;也称图形卡&#xff08;Graphics Card&#xff09;&#xff0c;是个人电脑上以图形处理器&#xff08;GPU&#xff09;为核心的扩展卡&#xff0c;用途是提供中央处理器以外的微处理器帮…

STM32F407使用ESP8266实现阿里云OTA(上)

文章目录 前言一、阿里云OTA二、命令调试1.升级包上传2.OTA订阅和上报的主题3.命令调试4.具体效果三、所用到的工具和材料前言 在经过前面对ESP8266、SD卡、FLASH的了解之后,终于要进入我们的正题了,就是使用STM32和ESP8266实现阿里云的OTA。这一功能并不复杂,只是需要主要…

测试基础笔记第九天

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、数据类型和约束1.数据类型2.约束3.主键4.不为空5.唯一6.默认值 二、数据库操作1.创建数据库2.使用数据库3.修改数据库4.删除数据库和查看所有数据库5.重点&…