先看看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. C# 图片识别(支持21种语言)转

    来自:http://www.cnblogs.com/stone_w/archive/2011/10/08/2202397.html 图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇 ...

  2. [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse

    ---------------------------------------------------------------------------------------------------- ...

  3. Servlet学习笔记(八)—— 文件下载

    一.文件下载概述 比如图片或者HTML这类静态资源,仅仅要在浏览器中打开正确的网址就行下载.仅仅要资源放在应用程序文件夹或者其下的子文件夹中,但不在WEB-INF下.Servlet/JSP容器就会将资 ...

  4. cocos2d-x 3.6版连连看版本号控制

    为了以后的开发和管理.源代码开发必须要使用版本号控制.我们当然选择git来做版本号控制了. 假设你在终端输入git,提示不是一个命令的话.那就说明你的机器没有安装git工具.那就安装一个,百度之有非常 ...

  5. 打开google 新地址

    还在为谷歌打不开而发愁吗? 那就试试这个吧 91.213.30.151

  6. 在Linux上安装zsh

    简单介绍: 相对于绝大多数linux发行版默认的shell--bash,zsh绝对是一个优秀的替代品.zsh是交互型shell,同一时候它也是一个强大的编程语言,很多bash,ksh,tcsh优秀的地 ...

  7. png图片解码

    PNG.可移植网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的"PNG's Not GIF",是一种位图文件(bitmap ...

  8. js全局替换空格,制表符,换行符

    this.value = this.value.replace(/\s+/g,'') "/ "这个是固定写法, "\s"匹配任何不可见字符,包括空格.制表符.换 ...

  9. socket listen backlog

    http://stackoverflow.com/questions/4253454/question-about-listening-and-backlog-for-sockets The list ...

  10. android 反编译 for mac

    android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...