為了看清楚DNS通信的過程,下面我們将從主機1:192.168.0.141上運作host指令以查詢主機www.jd.com對應的IP位址,并使用tcpdump抓取這一過程中LAN上傳輸的以太網幀。
具體的操作過程如下:
# tcpdump -i eth0 -nt -s 500 port domain
然後在另外一個終端中輸入下面的指令:
#host-t A www.jd.com
下圖是host-t A www.jd.com輸出的資料:

下圖是tcpdump監聽到的資料:
其中IP位址192.168.0.1是預設網關的位址。
root@linux_ever:~# route
核心 IP 路由表
目标 網關 子網路遮罩 标志 躍點 引用 使用 接口
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 1 0 0 eth0
這一次執行tcpdump抓包時,我們使用“port domain”來過濾資料包,表示隻抓取使用domain(域名)服務的資料包,即DNS查詢和應答封包。tcpdump的輸出如下:
IP 192.168.0.141.53511 > 192.168.0.1.53: 65362+ A? www.jd.com. (28)
IP 192.168.0.1.53 > 192.168.0.141.53511: 65362 2/0/0 CNAME www.jdcdn.com., A 14.152.71.1 (68)
這兩個資料包開始的“IP”指出,它們後面的内容描述的是IP資料報。tcpdump以“IP位址.端口号”的形式來描述通信的某一端;以“>”表示資料傳輸的方向,“>”前面是源端,後面是目的端。可見,第一個資料包是測試主機1(IP位址是192.168.0.141)向其首選DNS伺服器(IP位址是192.168.0.1.53)發送的DNS查詢封包(目标端口53是DNS服務使用的端口),第二個資料包是伺服器回報的DNS應答封包。
本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/bonelee/p/7966914.html,如需轉載請自行聯系原作者