Monthly Archives: 五月 2017

ARP 浅析

这篇文章写的

ARP 浅析

ARP(Address Resolution Protocol)

网络层(IP 地址)将数据包发送出去时,需要确定链路层地址(MAC),ARP 正是提供这种转换的协议。

ARP 请求寻址

当主机 A(IP 地址为 IP—A)的主机需要和主机 B(IP 地址为 IP-B)通信时,A 会先查询本机的路由表,决定下一跳发往哪里。

如果 IP-B 和 IP-A 在同一个子网,A 会查本机的 ARP 缓存,得到 IP-B 对应的 mac 地址,并将数据包的目标 mac 改为 IP-B 对应的 mac 地址,从对应网卡发出。如果 A 的 ARP 缓存里没有 IP-B 对应的 mac 地址,A 会先发一个 ARP 广播包(broadcast),B 会发一个 单播包(unicast) 响应这个 ARP 包;A 收到这个单播包后,会更新本地的 ARP 缓存,并将数据包发出。

如果 IP-B 和 IP-A 不在同一个子网,A 会将数据包发到路由表里指向的下一跳地址。同样的,发往下一跳地址的过程中,也需要通过 ARP 缓存或 ARP 广播来确定下一跳的 mac 地址。

  1. ARP 只在同一个二层网中使用。
  2. ARP 寻址过程中,发出的请求是广播包,收到的请求是单播包。
  3. 广播包会发送给除本机外的所有其它主机。所以如果 arping 自己的 IP,没有人会回包。

常用命令

  • 主机上抓 ARP 数据包
tcpdump -i eth0 arp -v
  • 查看本机的 arp 缓存
ip neighbour

arp -an
  • 通知更新 ARP caches
arping -U # 发送 ARP REQUEST,更新 ARP caches.

arping -A # 发送 ARP REPLY

常见问题

Q1: 如何判断一个 LAN 中,IP 地址冲突了?
A: 通过 arping。

root@hostA:~# arping -I eth0 -c 1 172.31.20.64
ARPING 172.31.20.64 from 172.31.20.10 eth0
Unicast reply from 172.31.20.64 [03:54:12:D0:40:AF]  0.861ms
Unicast reply from 172.31.20.64 [03:54:12:D1:3B:AF]  0.792ms
Sent 1 probes (1 broadcast(s))
Received 2 response(s)
root@hostA:~#

如果出现如上结果,即有不同 MAC 的回包,说明 IP 地址冲突了。

参考

读《人性的枷锁》有感

这篇文章写的
近来阅读了一些非侦探、非悬疑类的小说,比如《追风筝的人》、《钓鱼的男孩》、《月亮和六便士》、《面纱》、《刀锋》、《人性的枷锁》等等,给了我不少启发。
特别是毛姆的作品,除去作品中精彩的故事情节、锋利的人物形象,故事中总会穿插着一些经典的语句。
尽管我现在已经完全忘记了都是些什么,但这些语句正如绿色植物吸收阳光一样,它们在我大脑中转换、提炼出了一些新的、有趣的想法。
这些想法让我能够跳出自己的世界,以第三者的视角审视自己既有的观念和思维,发现思维盲点。
我总是尝试用理性和逻辑去处理事情,身为一名IT从业人员,这取得了一些成绩,让我的工作更加具备逻辑性。
但如果总是带着理性,以缜密到吹毛求疵的逻辑来进行阅读,这可就失去太多乐趣了。
人们听到文学作品,通常会想到优美、畅快、大快朵颐等等词汇,而这些词汇显然没有绝对的评判标准。
《禅与摩托车维修艺术》里也有类似观点,对于一件作品,比如绘画、音乐、诗歌等等,具备正常鉴赏能力的读者或观众通常能不费力的区分出好作品和坏作品。但真要让他们说出评判标准,这可就太为难他们了。如果美没有统一的标准,那么人们如何能够针对两件作品做出几乎相同的判断呢?如果有,那么美的标准是什么?
这给了我一个反思的思路。文学作品亦如此,要让自己融入其中,忘乎所以,要如欣赏音乐一般,让音乐从自己的内心中流出,内心在不断地涌出那些或冲动、或细腻的情感。