linux網絡問題闡明的大刀:tcpdump +wireshark
1.參考
2.熟悉tcpdump東西
3.以事情中dhcp處事為例,查找linux下的網絡問題。
本文主要來自網絡各家:
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
http://www.tuicool.com/articles/EVVBrq
http://www.cnblogs.com/AloneSword/p/4510189.html
http://www.doc88.com/p-5807317030896.html
http://www.daxueba.net/?p=328
http://www.cr173.com/html/20128_4.html
http://www.linuxfly.org/post/183/
2.關于tcpdump
在 Linux 里抓包,然后在Windows 里闡明包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的范例
(2)-i eth1 : 只抓顛末接口eth1的包
(3)-t : 不顯示時間戳
(4)-s 0 : 抓取數據包時默認抓取長度為68字節。加上-S 0 后可以抓到完整的數據包
(5)-c 100 : 只抓取100個數據包
(6)dst port ! 22 : 不抓取方針端口是22的數據包
(7)src net 192.168.1.0/24 : 數據包的源網絡地點為192.168.1.0/24
(8)-w ./target.cap : 生存成cap文件,利便用ethereal(即wireshark)闡明
DHCP的浸染:
在局域網中,用戶電腦都需要IP地點才利用網絡處事,可是客戶并不城市設置IP地點,這時,可以在網絡中陳設一個DHCP處事器,用來給這些客戶主靈活態的分派IP。所有DHCP的客戶端,在向DHCP處事器租用到地點后,會在DHCP處事器端留下租用信息,網絡打點員可以按照這些分派信息統一打點這些客戶。
DHCP的一些觀念:
DHCP是一個典范的Client/Server模子的協議,利用UDP傳輸
<1>.DHCP Server端,利用UDP端口:67 DHCP
<2>. Client端,利用UDP端口:68
DHCP的根基事情流程
DHCP的客戶端假如把網卡的IP地點設置為動態獲取IP的方法,就會發送DHCP請求,來尋找DHCP處事器申請地點;
DHCP的在客戶端申請、處事器下發地點的進程中,一共會發生四個數據包,如下:
按照這四個數據包來看,DHCP的事情流程如下圖:
DHCP具體事情流程理會
第一步:
DHCP客戶端主動提倡DHCP
Discover包,用來尋找DHCP處事器,個中:源MAC是本身的MAC地點,目標MAC是FFFF.FFFF.FFFF的廣播。源IP是0.0.0.0(此刻還沒有IP,就用全0地點),目標IP是255.255.255.255的三層廣播。因為DHCP處事器在那邊還不知道,所以利用廣播來尋找,廣播會泛洪到整個網段中;
譬喻:在 Windows 的預設景象下,Dhcpdiscover 的期待時間預設為 1 秒,也就是當客戶端將第一個
Dhcpdiscover 封包送出去之后,在 1 秒之內沒有獲得回應的話,就會舉辦第二次 Dhcpdiscover
廣播。若一直得不到回應的環境下,客戶端一共會有四次 Dhcpdiscover 廣播(包羅第一次在內),除了第一次會期待 1
秒之外,其余三次的期待時間別離是 9﹑13﹑16 秒。假如都沒有獲得 DHCP 伺服器的回應,客戶端則會顯示錯誤信息,宣告
Dhcpdiscover 的失敗。之后,基于利用者的選擇,系統會繼承在 5 分鐘之后再反復一次 Dhcpdiscover
的進程。
第二步:
DHCP處事器收到客戶端發的DHCP
Discover之后,會在本身的地點池中拿出一個沒有分派的地點以及配套的參數(如:掩碼、DNS、網關、域名、租期……),然后以一個DHCP
Offer包發送出去。這個DHCP
Offer數據包的地點如下:源MAC是DHCP處事器的MAC,目標MAC是FFFF.FFFF.FFFF的廣播。源IP是DHCP處事器的IP,目標IP是255.255.255.255的廣播。這時客戶端還沒有得到IP,DHCP處事器端此刻還無法定位客戶端,所以用廣播往返應。
第三步:
客戶端收到這個DHCP Offer后,會再發出一個DHCP
Request給處事器來申請這個Offer中包括的地點。這個時候,客戶端還沒有正式拿到地點,所以還需要向DHCP處事器申請,匯報所有
DHCP 伺服器它將指定接管哪一臺伺服器提供的 IP
位址。這時客戶端的源IP照舊0.0.0.0,目標IP照舊255.255.255.255。源MAC是客戶端的MAC,目標MAC是FFFF.FFFF.FFFF廣播包。
同時,客戶端還會向網路發送一個 ARP 封包,查詢網路上面有沒有其它呆板利用該 IP 位址;假如發明該 IP
已經被占用,客戶端則會送出一個
DHCPDECLINE 封包給 DHCP 伺服器,拒絕接管其 Dhcpoffer ,并從頭發送 Dhcpdiscover
信息。
事實上,并不是所有 DHCP 客戶端城市無條件接管 DHCP 伺服器的 offer ,尤其這些主機安裝有其它 TCP/IP
相關的客戶軟體。客戶端也可以用 Dhcprequest 向伺服器提出 DHCP 選擇,而這些選擇會以差異的號碼填寫在 DHCP
Option
Field 內里: