Linux 使用tcpdump观察arp通信过程
ARP协议简介:
ARP协议能实现任意网络层地址到任意物理地址的转换,此次讨论从IP地址到以太网地址(MAC地址)的转换。其工作原理是:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。
1.搭建网络环境,见下图
用了两个虚拟机系统来充当两个结点主机进行通信,搭建完环境之后测试一下网络的连通性。
在主机192.168.0.141下面输入:ping 192.168.0.125进行测试
2.分别用ifconfig命令输出两个主机的IP和MAC地址信息,见下图
3.两个主机都打开echo服务
打开echo服务的具体步骤见博客:http://blog.csdn.net/linux_ever/article/details/50515632
4.用arp命令查看arp缓存,并用arp -d 192.168.0.125删除缓存
在主机192.168.0.141用arp -d 192.168.0.125删除缓存
5.在主机192.168.0.141登陆主机192.168.0.125的echo服务并监听帧
首先:在主机192.168.0.141下监听收到的帧
root@linux_ever:~# tcpdump -i eth0 -ent '(dst 192.168.0.125 and src 192.168.0.141) or (dst 192.168.0.141 and src 192.168.0.125)'
其次:在主机192.168.0.141下另外一个终端中输入telnet 192.168.0.125 echo, 登陆主机192.168.0.125的echo服务,登陆成功之后输入quit退出。此时我们可以看到tcpdump监听到的帧。
监听命令:
由tcpdump抓取的数据包本质上是以太网帧,我们通过该命令的众多选项来控制帧的过滤(比如用dst和src指定通信的目的端IP地址和源端IP地址)和显示(比如用-e选项开启以太网帧头部信息的显示)。
登陆命令:
6.分析arp数据包
第一个数据包中,ARP通信的源端的物理地址是08:00:27:23:9c:b4(主机1:192.168.0.141),目的端的物理地址是ff:ff:ff:ff:ff:ff,这是以太网的广播地址帧。数值0x806是以太网帧头部的类型字段的值,它表示分用的目标是ARP模块。
“Request”表示这是一个ARP请求,“who-has 192.168.1.125 tell 192.168.1.141”则表示是主机1:192.168.0.141要查询主机2:192.168.0.125的MAC地址。
该以太网帧的长度为42字节(实际上是46字节,tcpdump未统计以太网帧尾部4字节的CRC字段),其中数据部分长度为28字节。
第二个数据包中,ARP通信的源端的物理地址是08:00:27:5e:44:7e(主机2:192.168.0.125),目的端的物理地址是08:00:27:23:9c:b4(主机1:192.168.0.141)。
“Reply表示这是一个应答,“192.168.0.125 is-at 08:00:27:5e:44:7e”则表示目标机器主机2:192.168.0.125报告其物理地址。
该以太网帧的长度为60字节(实际上是64字节,tcpdump未统计以太网帧尾部4字节的CRC字段),可见它使用了填充字节来满足最小帧长度。
7.以太网ARP请求/应答报文详解
1、硬件类型字段定义物理地址的类型,它的值为1表示MAC地址。
2、协议类型字段表示要映射的协议地址类型,它的值为0x800,表示IP地址。
3、硬件地址长度字段和协议地址长度字段,顾名思义,其单位是字节。对MAC地址来说,其长度为6;对IP(v4)地址来说,其长度为4。
4、操作字段指出4种操作类型:ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。
5、最后4个字段指定通信双方的以太网地址和IP地址。发送端填充除目的端以太网地址外的其他3个字段,以构建ARP请求并发送之。接收端发现该请求的目的端IP地址是自己,就把自己的以太网地址填进去,然后交换两个目的端地址和两个发送端地址,以构建ARP应答并返回之(当然,如前所述,操作字段需要设置为2)。
6、ARP请求/应答报文的长度为28字节。如果再加上以太网帧头部和尾部的18字节,则一个携带ARP请求/应答报文的以太网帧长度为46字节。不过有的实现要求以太网帧数据部分长度至少为46字节,此时ARP请求/应答报文将增加一些填充字节,以满足这个要求。在这种情况下,一个携带ARP请求/应答报文的以太网帧长度为64字节。
Linux 使用tcpdump观察arp通信过程的更多相关文章
- Wireshark - 观察 ARP 地址解析过程
下面使用 Wireshark 分析 ARP 的工作过程.试验的机器:发送者机器(IP 地址:10.21.28.47,MAC 地址:68:f7:28:0f:32:2e)下文称为 HOSTA:目标机器(I ...
- ARP通信
ARP:地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议 简单介绍ARP通信过程: 1.发送端在与接收端进行数据通信转发时的过程: 发送端与接收端进行数据通信之前,需要先知道对端的MAC ...
- tcp/ip 卷一 读书笔记(5)arp和rarp 同网段和不同网段之间的通信过程
arp和rarp 同网段和不同网段之间的通信过程 IPv6中已经没有arp rarp协议,所以这里都是IPv4. 链路层使用以太网地址来确定目的地址,应用则常使用ip地址通信 arp协议是指从ip地址 ...
- linux下tcpdump命令详解
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- 从wireshake分析http和https的通信过程
参考文章: Wireshark基本介绍和学习TCP三次握手 [技术流]Wireshark对HTTPS数据的解密 Wireshark/HTTPS Journey to HTTP/2 以TCP/IP协议为 ...
- 网络中两台主机的通信过程(TCP)
两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
- ZLL本地局域网通信过程
Interface_srpcserver -----以灯的状态操作位例 网关与客户端通过Socket API通信,Socket API在socket_server.c中实现,socket_server ...
- 通过gdb跟踪Linux内核装载和启动可执行程序过程
作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的:通过对一个简单的可执 ...
随机推荐
- Turn the corner
Turn the corner Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- CS231n 2017 学习笔记01——KNN(K-Nearest Neighbors)
本博客内容来自 Stanford University CS231N 2017 Lecture 2 - Image Classification 课程官网:http://cs231n.stanford ...
- font-size:100% 原因
The browser default which is something like 16pt for Firefox, You can check by going into Firefox op ...
- Jenkins TFS配置
1. 在Jenkins中安装TFS插件 2. 在Build Server上安装tfs客户端程序,用来访问代码服务器获取代码, 这一部是由TFS Anywhere完成的 下载TFS Anywhere h ...
- KVM管理平台openebula安装
1.1opennebula控制台的安装 (如果要添加映像需要给200G以上给/var/lib/one,本文是共享/var/lib/one实现监控,用映像出创建虚拟机原理是从opennebula控制平台 ...
- 【持续更新】JavaScript常见面试题整理
[重点提前说]这篇博客里的问题涉及到了了JS中常见的的基础知识点,也是面试中常见的一些问题,建议初入职场的园友Mark收藏,本文会持续更新~ 1. 引入JS的三种方式 1.在HTML标签中直接使用,直 ...
- [转载] PHP工作模型与运行机制
转载自http://www.nowamagic.net/librarys/veda/detail/350 PHP的工作模型非常特殊.从某种程度上说,PHP和ASP.ASP.NET.JSP/Servle ...
- FPGA跨时钟域处理方法
文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使 ...
- SICK激光雷达LMS511测量数据说明
帧结构说明 LMS511的官方手册存在几个版本,在<Laser Measurement Systems of the LMS500 Product Family>的英文手册中,对单次(连续 ...
- Eclipse中代码整体左移,右移快捷键
1.向右:将要移动的代码选中,然后按TAB键2.向左:将要移动的代码选中,然后按SHIFT+TAB键