讀《Wireshark網絡分析就這么簡單》讀書筆記


晚上花了兩個多小時看完這本書,記錄下一些看書過程中的筆記。

一、問題:A和B 是否能正常通信?

兩台服務器A和服務器B的網絡配置 

A                                                      B

192.168.26.129                        192.168.26.3

255.255.255.0                           255.255.255.224

192.168.26.2                              192.168.26.2

 

1.服務器B通過ARP廣播查詢默認網關192.168.26.2的mac地址,B 根據自己的子網掩碼和ip地址與操作,計算出A與B屬於不同子網,跨子網通信需要 默認網關的轉發,要和默認網關通信要獲得其MAC地址    所以第一個ARP包  who has 192.168.26.2?tell 192.168.26.3

2.默認網關192.168.26.2向B回復了自己的MAC地址  MAC地址是00開頭的都是Vmware公司

3.B的源地址是 192.168.26.3 目的地址是 A的 IP地址,請求默認網關把包轉發給A

4.網關把B發出的ping請求轉發給A,B收到了A的ARP廣播,A看來B與自己同網段,同網段子網通信無需網關參與,通過ARP獲取對方的MAC就可以

5.B回復了A的arp請求 把mac地址告訴A,源地址是192.168.26.3 目的地址 192.168.26.129  ICMP Echo (ping)request 

6.B收到了A的ping回復,從mac地址知道這個包直接丟過來的不是通過默認網關轉發的

 

B----ping請求---網關-----ping請求----A-----回復B

*ip地址和子網掩碼計算出是不同的網段通信,通信需要ARP廣播獲得對方的mac地址,ARP不能跨越子網,需要默認網關轉發,之后通過mac地址直接互相通信

*ip地址和子網掩碼同網段,則可以直接通過mac地址通信,直接丟包給對方

 

二、抓包技巧

1、只抓包頭,在wireshark上的 Capture---->Options ,limit each packet to  80字節 這樣每個包只抓 前80個字節,TCP層、網絡層、數據里娜魯曾的信息都可以包括應用層則差不多200字節,同理

tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap

 

2.只抓必要的包

在wireshark上的 Capture---->Options,capture filter 輸入host 10.32.200.131,同理

tcpdump -i eth0 host 10.32.200.131  -w /tmp/tcpdump.cap

3.過濾

ip.addr eq<IP地址> && tcp.port eq<端口號>

 

三、TCP

三次握手 交換信息  四次斷開

由於連接是雙向的  建立連接時  雙方都要發一個SYN,關閉連接時,雙方都要發一個FIN

RST 用於重置混亂的連接,或者拒絕一個無效的請求

 客戶端   SYN  Seq=X  服務器

               SYN  Seq=Y,Ack=X+1

               Seq=X+1,ACK=Y+1

 

四、kerberos

1、原理分析

  Kerberos簡單來說就是一個用於安全認證第三方協議,它采用了傳統的共享密鑰的方式,實現了在網絡環境不一定保證安全的環境下,client和server之間的通信,適用於client/server模型,由MIT開發和實現。

  Kerberos的神秘之處在於,它並不要求通信雙方所在的網絡環境是安全的,即使通信過程中數據被截取或者篡改依然不會影響它的正常工作,它提供的認證是雙向的,不僅能保證Server不被錯誤的Client使用,同時也能保證Client不使用錯誤的Server。同時Kerberos又嚴重依賴於時間,時間戳也是Kerberos用來保證通信安全的重要手段,這個一般通過通信雙方同時訪問同一個時間服務器來實現。Kerberos也能達到單點登錄的效果,即當Client通過了Kerberos server的認證后,便可以訪問多個Real Server。

2、Kerberos原理淺析

  在實際的應有場景中通常有三個角色,即需要訪問服務的Client,提供服務的Application Server,以及提供安全認證的第三方Kerberos服務器KDC(Key Distribution Center)。它們彼此之間的認證、通信的數據流如下圖所示。

      

  仔細研究過上圖之后,你可能會發現你能看明白的東西實在有限,而想要把Kerberos原理弄明白實在不是一件容易的事,不過可以慶幸的是Kerberos是用傳統的共享密鑰的方式實現的,這個概念對大家來說並不陌生,同時Kerberos認證還加了時間戳,有效時間,信息對比等伎倆,所以花時間細細讀下來你依然能看明白,如果此時你就迫不及待的想研究的話你可以戳這里這里或者這里。現在,我們來討論下Kerberos的認證的一個部分,我認為只要這個部分理解了,其他的都可以遞推出來。如下圖:

       

Client master key: KDC中存儲的Client的密鑰

Server master key: KDC中存儲的Server的密鑰

Sclient-Server:Client與Server之間的會話密鑰

Client Info:記錄了Client本身的Ip等基本信息

首先 Client詢問KDC,我想訪問某個Server,然后KDC會將會話密鑰Sclient-Server用Client master key加密后傳送給Client;與此同時,KDC也會將會話密鑰Sclient-Server連同Client的基本信息打包用Server master key加密也發給Client,並經Client轉發給Server,至此Client與KDC的交互完成。

然后,Client用自己的master key解密KDC傳過來的第一個包,解密后獲得會話密鑰Sclient-Server,並用這個密鑰加密自己的的信息和時間戳打包后傳送給Server,此時Client開始和Server交互,如下圖:                                    

      

Server會收到兩個數據包,一個用會話密鑰加密,一個用自己的master key加密,Server先用自己的master key解密獲取會話密鑰和一份關於Client的信息,然后Server拿到解密后獲取到的會話密鑰再解開另外一個數據包,獲得另一份關於Client的信息和時間戳,至此Client和Server的交互完成。

下面我們解釋下這樣傳輸數據的原因,為什么傳遞這些數據

1,上面有個數據包是KDC經Client轉發給Server的,為什么不直接發給Server?

因為Server可能給多個Client提供服務,這樣Server需要維護一個Client和會話密鑰的對應表,這對Server是一個負擔。

此外,因為網絡傳輸的不確定性可能Client和Server並不能都及時獲取到會話密鑰,假如有一方獲取失敗,那么Client就不能訪問Server

2,為什么要發兩份關於Client的信息給Server?

通過這兩份數據的對比,Server就能判斷出是不是對的Client在訪問服務。

3,Client是如何判斷自己在訪問對的Server呢?

因為Client給Server的一個數據包是用Server的master key來加密的所以只有對的Server才能解密。

4,為什么要用會話密鑰

通信方的master key是長期有效的,如果在網絡上傳輸,一旦被截取,理論上來說只要有足夠的時間是可以破解的,所以我們才用臨時的會話密鑰來通信,一段時間后會話密鑰會過期,同時時間戳也防止了,惡意用戶重復使用同一個數據包。

5,為什么要用時間戳?

如果Client向Server傳送的數據包被其他的Client截取,然后自己拿來向Server請求服務這,這樣就會出問題,那么引入時間戳后,Server收到請求后將從解密后的數據包中獲得的時間戳和當前時間對比,一旦超過一定范圍將直接拒絕請求;所以,正如前面所說,Kerberos高度依賴時間同步服務。

事實上這個並不是Kerberos認證的整個過程,KDC實際上由AS和TGS兩部分組成,你可以將TGS視作一個Server,然后還沿用上面所說的步驟來分析,這樣就可以基本上梳理出Client訪問Server的一個完整的過程了。

這些東西可能依然難於理解,你可以借助Kerberos經典會話中的場景來理解,請戳這里或者這里

 

五、一些其他

一般存儲設備都是讀比寫快

網絡讀文件 大帶寬到小帶寬 很容易出現擁塞

寫則相反,因此擁塞率較低

卡頓可能是TCP亂序導致的重傳

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM