IRIS是個抓包工具,通過分析抓到的包分析TCP/IP協議,使學習不再枯燥。
1搭建網絡環境
192.168.1.61(服務器端,安裝FTP) 192.168.1.106(客戶端,安裝IRIS抓包工具) 通過從服務器端下載文件,分析網絡協議。
(1)安裝FTP
先下載iis v5 for xp,如果不是xp的,版本可能不一樣。
控制面板->添加或刪除程序->添加/刪除windows組件->選中Internet信息服務IIS(進入下一步之前,點擊詳細信息,勾上FTP服務)->點擊下一步,點擊確定,把剛下載的IIS解壓后路徑填入,就ok了。安裝完IIS,會在控制面板->管理工具中看到 Internet信息服務的圖標。
點開FTP站點,右擊屬性,改下IP地址為本地地址(服務器),在主目錄選項中可以修改本地路徑(到時候別人登錄可以看到的內容),其他兩項默認就可以了,也可以根據需要。
ok了,現在可以登錄訪問了。可以下載了啊,以后你沒有2個QQ,也可以在兩台計算機件共享文件了。是不是很好玩?
(2)客戶端上IRIS的安裝
這就是一個軟件,直接下載安裝就行了,CSDN上有資源的,沒毒哦,還有操作文檔啊。
(3)開始抓包
開始試了很久沒成功,問題是IRIS不支持無線網卡,至少我的不可以,現象就是在過濾器IP選項中設置了,卻抓不到包。所以最好還是使用有線的。
配置選項說一下:
- 菜單欄工具->設置->設配器(選擇有線網卡,如果你用無線就是無線網卡,前提是支持),其他默認設置就可以了
- 快捷鍵ctrl+b 彈出地址簿,里面有局域網內所有主機(沒有也沒有關系),至少有你自己的主機,把主機名去掉(方便查看,不是必須的)。
-
這邊都不是輸入的,靠點的哦,有人從地址簿中找服務器的IP,前提是地址簿中有。有的時候確實在一個局域網內,卻看不到,沒關系,直接輸入只能輸入2位數,所以先隨便點一個再改就行了。(如果你的IP最后三位數就愛莫能助了)
- 把日志里面的勾上。
- 下面打開開始按鈕,左上角那個,然后使用瀏覽器登錄FTP://192.168.1.61右擊文件下載。點擊停止,就可以在捕獲里面看到包了。
(4)分析包
這次下載文件分四個過程:查找服務器,建立連接,數據傳輸和終止連接。
1)FTP客戶端請求TCP用服務器的IP地址建立連接。 2)TCP發送一個連接請求分段到遠端的主機,即用上述IP地址發送一份IP數據報。
3) 如果目的主機在本地網絡上,那么IP數據報可以直接送到目的主機上。如果目的主機在一個遠程網絡上,那么就通過IP選路函數來確定位於本地網絡上的下一站路由器地址,並讓它轉發IP數據報。在這兩種情況下,IP數據報都是被送到位於本地網絡上的一台主機或路由器。 4) 本例是一個以太網,那么發送端主機必須把32位的IP地址變換成48位的以太網地址,該地址也稱為MAC地址,它是出廠時寫到網卡上的世界唯一的硬件地址。把IP地址翻譯到對應的MAC地址是由ARP協議完成的。 5) ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機,這個過程稱作廣播。(以太網內可以廣播,internet網怎么辦呢?)ARP請求數據幀中包含目的主機的IP地址,其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址。” 6) 目的主機的ARP層收到這份廣播后,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。這個ARP應答包含I P地址及對應的硬件地址。 7) 收到ARP應答后,使ARP進行請求—應答交換的IP數據包現在就可以傳送了。
8) 發送IP數據報到目的主機。
大概清楚了以后就開始看包吧:
1)查找服務器
在第一行中,客戶端的MAC地址是60:EB:69:F3:6D:A7,這個地址是網卡廠家給的,獨一無二的,(不過也是可以修改的,這個很是奇怪),目標MAC地址為全F,意思是這是個廣播地址,局域網內的每個主機都會接受到這次廣播信息,意思是問192.168.1.61是誰的IP,然后擁有這個IP的主機就會給個replay,回復的內容包括自己的IP和MAC地址。所以在第二行就可以看到服務器的MAC地址為00:24:81:C5:A1:FF.
第一行的包解碼
第二行的包解碼
紅色部分為MAC頭部,可以看到源MAC地址和目的MAC地址。最后的0806指的是接在后面的為ARP頭部。
黑色部分為ARP協議頭部:
硬件類型為00 01,就是以太網地址。協議類型為08 00就是IP類型。硬件地址長度是06就是6個字節.協議地址長度是04就是4個字節. 操作字段(op)指出四種操作類型:ARP請求(值為1)、ARP應答(2)、RARP請求(3)和RARP應答(4)。你可以看到第一個是請求,就是01,第二個是應答就是02.接着就是MAC地址和IP。又傳了一次,可以這樣理解,前面的是識別用的,后面的是作為數據給別人看的。
2)建立連接
這三行的核心意思就是TCP三次握手。
1))請求端106號機發送一個初始序號(SEQ)1812738015給61號機。
2))服務器61號機收到這個序號后,將此序號加1值1812738016作為應答信號(ACK),同時隨機產生一個初始序號(SEQ)2490991104,這兩個信號同時發回到請求端106號機,意思為:“消息已收到,讓我們的數據流以2490991104這個數開始。”
3))請求端106號機收到后將確認序號設置為服務器的初始序號(SEQ)2490991104加1為2490991105作為應答信號。
三次握手后,就可以開始傳輸了。
第三行包解碼
第四行包解碼
第五行包解碼
紅色的為IP頭部,前面是MAC頭部,后面是TCP頭部。
4位版本號值為4,就是IPV4.4位首部長度是5,就是說IP頭部占20個字節(這個不知道怎么算的額)。8位服務類型(TOS)00,00,這個8位字段由3位的優先權子字段,現在已經被忽略,4位的TOS子字段以及1 位的未用字段(現在為0)構成。4位的TOS子字段包含:最小延時、最大吞吐量、最高可靠性以及最小費用構成,這四個1位最多只能有一個為1,本例中都為0,表示是一般服務。16位總長度是00 34,就是52個字節,減去20個字節的IP頭部,剩下32個就是TCP頭部長度。16位標識,14 70,每發送一個數據報文值就加1,看一下第五行是14 71.(不過初始值怎么定的就不好說了)8位生存時間,為40,。8位協議,06,表示傳輸層是TCP協議。16位首部校驗和用於驗證。后面的源和目的地址就不說了。標志位字段:占3比特,標志一份數據報是否要求分段這里是1,就是只有一段。段偏移字段:占13比特。如果一份數據報要求分段的話,此字段指明該段偏移距原始數據報開始的位置。
分析第3行的TCP頭部,16位源端口號是0C CB,就是3275,這是臨時分配的端口號,這個跟應用有關,一般的應用都是隨機分配的,小於65536就行了。目的端口號是00 15,就是21,指FTP服務,這個是固定的。32位序號是6C 0C 2F DF,就是上面的1812738015,服務器返回的時候要加1的。32位確認序號就是ACK的值。4位首部長度,8,就是32個字節(單位是4個字節,8*4),這個與上面IP那邊算出來是一樣的。
- URG 緊急指針,告訴接收TCP模塊緊要指針域指着緊要數據
- ACK 置1時表示確認號(為合法,為0的時候表示數據段不包含確認信息,確認號被忽略。
- PSH 置1時請求的數據段在接收方得到后就可直接送到應用程序,而不必等到緩沖區滿時才傳送RST 置1時重建連接。如果接收到RST位時候,通常發生了某些錯誤。
- SYN 置1時用來發起一個連接。
- FIN 置1時表示發端完成發送任務。用來釋放連接,表明發送方已經沒有數據發送了。
在第三行,02,就是說SYN=1,16位窗口大小,FF FF,就是32768,單位字節,為最大限制的字節數。選項占32位,窗口擴大因子,時間戳等。
3)傳輸數據
只取了傳輸數據時候的4個包,首先是服務器發了一個包,然后客戶端回復收到,如此循環,直到文件發完。不過服務器怎么知道用戶要下載的是哪個文件呢?這個信息怎么確定的呢?是不是在操作瀏覽器的時候確定的?我覺得有這個可能。
第6個數據包解碼
第7個數據包解碼
第8個數據包解碼
第9個數據包解碼
紅色的部分都是TCP頭部,大家可以自己依據字段信息慢慢對照,也可以直接看封包解碼器的信息:
這邊對於各個頭部的信息給的很全啊,很直觀,不要自己慢慢數了。這個是第6行的包頭部信息,可以看到IP頭部占20個字節,TCP頭部占20個字節,總共是67個字節,所以還有27個數據字節,數一下正好是27個數據字節,就沒錯了。不過這邊也不是你下載文件的數據,我看了下,真正的數據要在第32個包才傳的。
查看到第32個包字節數是1510,,第33個包字節數是916個字節。各自減去20個IP頭部和20個TCP頭部,得到2336,就是這個文件的大小,事實上查看一下是相等的。現在的問題是,為什么過了幾十包才開始傳真正的數據的呢?我也是初學,不清楚。
4)終止連接
建立一個連接需要三次握手,而終止一個連接要4次握手。這是因為TCP連接是全雙工的(數據子啊兩個方向上能同時傳遞),每個方向必須單獨的進行關閉。4次握手協議就是這樣一個過程。
首先是由服務器發出信息說文件發完了,咱們就斷了吧。客戶端先禮貌的說好。回頭又說了一句斷就斷,哥才不稀罕。服務器表示很無奈。
第35個包解碼
第36個包解碼
第37個包解碼
第38個包解碼
可以看到第35和37包中,FIN標志位置1,就是表示請求終止連接。你的終止包或許不是這兩個,不過查看FIN位就可以找個這4個包了。ok了,先分析這么多。