2013-08-24 14:22:46


  • 4.5 ARP举例

首先要介绍一些tcpdump这个强大的Linux命令,它不但可以分析封包的流向,连封包的内容也可以监听,如果数据段没有加过密我们就可以做一些很好玩的事情了。具体的使用方法请大家man tcpdump。

  sudo tcpdump -i wlan0 -nn

这个命令的使用要拥有root权限,上边的命令可以监听wlan0接口。

  • 4.5.1 一般的例子
 telnet svr4 discard

作者在ARP告诉缓存为空的前提下,使用了telnet命令与一个无效的服务器链接,下图为经过简单修改后的tcpdump输出(为了方便大家阅读,把时间间隔等做了优化)

第一行 源端主机(bsdi)的硬件地址是0:0:c0:6f:2d:40。目的端主机的硬件地址是ff:ff:ff:ff:ff:ff,这是一个以太网广播地址。电缆上的每个以太网接口都要接受这个数据帧并对它进行处理。上半行有源主机和目的主机的硬件地址,arp是帧类型字段0x0806翻译的结果,说明此数据帧是一个ARP请求或应答。arp后面的60表示以太网数据帧长度。由于ARP请求的数据帧长都是42字节(28字节的ARP数据,14字节的以太网帧头),因此,每一帧都必须加入填充字符以达到以太网的最小长度要求:60字节。(回顾图1-7下面给出来了)一般4字节的以太网尾部不包含在60字节之中。下半行arp who-has表示作为ARP请求的这个数据帧中,目的IP地址是svr4的地址,发送端的IP地址是bsdi的地址。tcpdump打印出主机名对应的默认IP地址。这句话很好翻译——“谁是svr4就告诉bsdi”
第二行 我们经过0.0022s之后成功的收到了ARP应答。我们发现ARP应答的目的地址是bsdi,证明他比较机智,不用再广播一次问“谁是发给我ARP请的人呀,把你物理地址告诉我呗”。下半句也很好理解——“svr4在0:0:c0:c2:9b:26”
第三行 这一行是第一个请求建立链接的TCP段。它的目的硬件地址是目的主机(svr4)。我们将在第18章讨论这个段的细节内容

在tcpdump命令输出中,我们没有看到svr4在发出第一段TCP报文(第4行)之前发出的ARP请求。这是因为可能在svr4的ARP高速缓冲中已经有bsdi的表项。一般情况下,当系统收到ARP请求或发送ARP应答时,都要把请求端的硬件地址和IP地址存入ARP高速缓存。

  • 4.5.2 对不存在主机的ARP请求

我们用telnet命令连接一个主机不存在的IP地址140.252.13.36,用tcpdump抓包后显示如下:

令人感兴趣的是看到多次进行ARP请求:第一次请求发生后5.5秒进行第2次请求,在24秒之后又进行第3次请求(在21章我们将看到TCP的超时和重发算法的细节)。事实上,大多数的BSD实现把完成TCP连接请求的时间限制设置为75秒。我们没有看到任何TCP报文段,因为只有ARP应答返回时,硬件地址到这时才可能知道,TCP报文才可以被发送。

  • 4.5.3 ARP高速缓存超时设置

超时设置的意思是,ARP高速缓存中的地址保存时间(每次在访问表项时重设超时值)。对于完整表项超时值为20分钟,不完整表项为3分钟(上个例子中的不可链接的地址),一旦不完整表项被成功连接,则刷新超时值为20分钟。我们可以通过ARP命令来设置这些超时值。

最新文章

  1. UnderScore源代码阅读1
  2. iOS $299刀企业证书申请的过程以及细节补充(二)
  3. Boyer-Moore algorithm
  4. 重新理解JS的6种继承方式
  5. struts2的两个核心配置文件
  6. 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)
  7. [SAP ABAP开发技术总结]列表屏幕
  8. ShopEX 4.8.5.81822 前台Getshell
  9. AsyncTask详解
  10. c/c++ double的数字 转成字符串后 可以有效的避免精度要求不高的数
  11. Qt中使用的编码QTextCodec::
  12. 【实验室笔记】C#上位机学习笔记
  13. jQuery children等筛选用法
  14. 锋利的jQuery中的事件与动画
  15. JDBC链接mysql数据库
  16. 测试思想-流程规范 SVN代码管理与版本控制
  17. (5) 电商场景下的常见业务SQL处理
  18. c# 图像呈现控件PictureBox
  19. AngularJS $watch 性能杀手
  20. win7 64位mysql安装及navicat 解压版

热门文章

  1. Java file read & write
  2. C. Shaass and Lights 组合数学
  3. java file类的常用方法和属性
  4. windows7内核驱动开发试验环境配置
  5. aspx页面,中文乱码解决方案
  6. C# Using 用法
  7. python 整齐输出与编码读写
  8. transition与visibility之间的小tips
  9. python学习之——调用adb命令完成移动端界面测试
  10. VS2016 发布项目提示 CS0006 C# Metadata file 'xxxxxxx.dll' could not be found