先看看arp的定义吧

现在linux运行这条命令

tcpdump -i eth0:1 -ent '(dst 192.168.5.190 and src 192.168.5.109)or( dst 192.168.5.109 and src 192.168.5.190)' -x

bc:ee:7b:9d:ee:02 > Broadcast, ethertype ARP (0x0806), length 60: Request who-has 192.168.5.190 tell 192.168.5.109, length 46
    0x0000:  0001 0800 0604 0001 bcee 7b9d ee02 c0a8
    0x0010:  056d 0000 0000 0000 c0a8 05be 0000 0000
    0x0020:  0000 0000 0000 0000 0000 0000 0000
40:16:7e:79:c7:36 > bc:ee:7b:9d:ee:02, ethertype ARP (0x0806), length 42: Reply 192.168.5.190 is-at 40:16:7e:79:c7:36, length 28
    0x0000:  0001 0800 0604 0002 4016 7e79 c736 c0a8
    0x0010:  05be bcee 7b9d ee02 c0a8 056d

我们同时把 数据16进制打印出来了

先 分析 请求arp的包

0001 ---表示硬件类型为mac地址

0800 ---表示要映射的协议类型,这里为ip地址

06    ---表示mac地址长度

04    ---表示ip地址长度

0001 ---表示 arp请求

bcee 7b9d ee02  ---发送方mac地址啦 也就是本机啦

c0a8 056d ---发送方ip 192.168.5.109

0000 0000 0000 --- 目标mac,这里是全网啦,未知

c0a8 05be --- 目标端ip地址,也就是 192.168.5.190

再分析 arp响应的包

0001 ---表示硬件类型为mac地址

0800 ---表示要映射的协议类型,这里为ip地址

06    ---表示mac地址长度

04    ---表示ip地址长度

0002 ---表示 arp响应

4016 7e79 c736 --- 发送方mac地址

c0a8 05be ---发送方ip地址

bcee 7b9d ee02 ---接收mac地址

c0a8 056d ---接收方ip地址

arp的数据长度不足46,所以要补0啦 啦,这是一个规定

为什么能看到回应是42字节而请求是60字节。因为回应这层数据还没通过太网设备驱动程序,如果是2台PC通讯的话,再另外一台上看,一定是60字节的哦!刚开始我也很迷惘
谢谢这位大哥 http://blog.163.com/cailing_07@126/blog/static/339150872011112693647977/ 解惑
 

arp学习笔记(linux高性能服务编程)的更多相关文章

  1. 【Todo】【读书笔记】Linux高性能服务器编程

    在读 /Users/baidu/Documents/Data/Interview/服务器-检索端/<Linux高性能服务器编程.pdf> 其实之前读过,要面试了,需要温习. P260 So ...

  2. linux高性能服务器编程 (一) --Tcp/Ip协议族

    前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉. ...

  3. Linux 高性能服务器编程——TCP协议详解

    问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一 ...

  4. Linux 高性能服务器编程——TCP/IP协议族

    1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络驱动程序,一处理数据在物理媒介(如以太网.令牌环等)上的传输.     常用协议:ARP协议(地址解析协议),RARP协议 ...

  5. 转 网络编程学习笔记一:Socket编程

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  6. Linux 高性能服务器编程——I/O复用

    问题聚焦:     前篇提到了I/O处理单元的四种I/O模型.     本篇详细介绍实现这些I/O模型所用到的相关技术.     核心思想:I/O复用 使用情景: 客户端程序要同时处理多个socket ...

  7. Linux 高性能服务器编程——高性能服务器程序框架

    问题聚焦:     核心章节.     服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模 ...

  8. Linux 高性能服务器编程——Linux网络编程基础API

    问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字(so ...

  9. Linux 高性能服务器编程——IP协议详解

    1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的.     ...

随机推荐

  1. cogs——2084. Asm.Def的基本算法

    2084. Asm.Def的基本算法 ★☆   输入文件:asm_algo.in   输出文件:asm_algo.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “有句 ...

  2. Windows Socket IO 模型

    http://www.cppblog.com/huangwei1024/archive/2010/11/22/134205.html

  3. JAVA程序—HelloWorld 的编译运行

    在我们写好我们的"HelloWorld.java",并且搭建好JAVA的开发环境过后,便可以运行这个JAVA程序了. 具体如何实现,让我们来看看: 打开DOS 通过DOS命令转到& ...

  4. MTK Camera驱动移植

    对于MTK Camera驱动移植一般分为四部分: 1.硬件IO口配置: 2.Camera驱动移植: 3.上电时序. 4.改动i2c控制器: 硬件电路: 1.GPIO配置 打开 mediatek\dct ...

  5. 神马都是浮云,unity中自己写Coroutine协程源代码

    孙广东   2014.7.19 无意之间看到了,Unity维基上的一篇文章,  是关于自己写协程的介绍. 认为非常好,这样能更好的了解到协程的执行机制等特性.还是不错的. 原文链接地址例如以下: ht ...

  6. web面试集合

    在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能.导致这一问题的原因是多方面的.首先,每个函数都是对象,都会占用内存:内存中的对象越多,性能就越差.其次,必须事先 ...

  7. 2016/1/25 多线程 作业 方法一 继承Thread 方法二 实现Runnable 多线程笔记

    /* * 1,尝试定义一个继承Thread类的类,并覆盖run()方法, * 在run()方法中每隔100毫秒打印一句话.*/ package Stream; //方法一 继承Thread 实现多线程 ...

  8. 【LIS】Luogu P1020 导弹拦截

    昨天晚上看蓝书,看到了LIS问题的优化解法. 是比O(n方)更快的解法,实际上是一个常数优化. 先讲一下朴素的解法: 一个集合a,a[i]是第i个元素.设dp[i]为以编号为i的元素结尾的最长不上升子 ...

  9. struts2 下载

    struts  官网 : https://struts.apache.org/

  10. java操作linux,调用shell命令

    import org.junit.jupiter.api.Test; import java.io.BufferedReader; import java.io.IOException; import ...