TCP/IP协议中UDP与ARP的交互作用详解
在《软件无线电原理与应用》第二版中,11.9节探讨了使用UDP时UDP和ARP之间的有趣(但常被忽视)交互行为。通过编写一个sock程序来发送包含8192字节数据的UDP数据报,预计该操作将在以太网上产生6个数据报片(参考习题11.3)。同时确保在运行程序前清空ARP缓存以避免A R P请求与应答的干扰。
使用命令`bsdi % arp -a`验证ARP高速缓存是否为空。
预期的流程是在发送第一个数据报片前交换一个ARP请求和响应,接着IP将产生5个额外的数据报片。这引发了两个需要解决的问题:在接收到ARP应答之前,其余数据报片是否已经准备好发送?如果是这样,当A R P等待应答时,它会如何处理同时到达的多个报文?
图11-17展示了使用tcp dump捕获的输出结果。其中一些发现可能会让人感到惊讶。首先,在第一个ARP响应返回前,总共发出了6个ARP请求。这可能是由于IP迅速产生了6个数据报片,每个都触发了一个ARP请求。其次,当接收到第一个ARP应答时(第7行),只发送了最后一个数据报片(第9行)!看起来前5个数据报片都被丢弃了。实际上这是ARP的正常操作:在大多数实现中,等待一个ARP响应时,只会将最后一个报文发送到特定目的主机。
Host Requirements RFC要求实现必须防止这种类型的ARP洪水攻击(118使用TCP/IP详解,卷1:协议下载)。
使用命令`bsdi % arp -a`验证ARP高速缓存是否为空。
预期的流程是在发送第一个数据报片前交换一个ARP请求和响应,接着IP将产生5个额外的数据报片。这引发了两个需要解决的问题:在接收到ARP应答之前,其余数据报片是否已经准备好发送?如果是这样,当A R P等待应答时,它会如何处理同时到达的多个报文?
图11-17展示了使用tcp dump捕获的输出结果。其中一些发现可能会让人感到惊讶。首先,在第一个ARP响应返回前,总共发出了6个ARP请求。这可能是由于IP迅速产生了6个数据报片,每个都触发了一个ARP请求。其次,当接收到第一个ARP应答时(第7行),只发送了最后一个数据报片(第9行)!看起来前5个数据报片都被丢弃了。实际上这是ARP的正常操作:在大多数实现中,等待一个ARP响应时,只会将最后一个报文发送到特定目的主机。
Host Requirements RFC要求实现必须防止这种类型的ARP洪水攻击(118使用TCP/IP详解,卷1:协议下载)。
用户评论