第一篇:實(shí)驗(yàn)4-4的實(shí)驗(yàn)報(bào)告
電 子 科 技 大 學(xué)
實(shí)
驗(yàn)
報(bào)
告
學(xué)生姓名:
學(xué) 號(hào):
指導(dǎo)教師:實(shí)驗(yàn)地點(diǎn):主樓A2-413-1
實(shí)驗(yàn)時(shí)間:
一、實(shí)驗(yàn)室名稱(chēng):主樓A2-413-1
二、實(shí)驗(yàn)項(xiàng)目名稱(chēng):跨站攻擊實(shí)驗(yàn)
三、實(shí)驗(yàn)學(xué)時(shí): 1 學(xué)時(shí)
四、實(shí)驗(yàn)原理:
1.什么是跨站攻擊?
定義一:即Cross Site Script Execution(通常簡(jiǎn)寫(xiě)為XSS)是指攻擊者利用網(wǎng)站程序?qū)τ脩?hù)輸入過(guò)濾不足,輸入可以顯示在頁(yè)面上對(duì)其他用戶(hù)造成影響的HTML代碼,從而盜取用 戶(hù)資料、利用用戶(hù)身份進(jìn)行某種動(dòng)作或者對(duì)訪問(wèn)者進(jìn)行病毒侵害的一種攻擊方式。
定義二:指入侵者在遠(yuǎn)程WEB頁(yè)面的HTML代碼中插入具有惡意目的的數(shù)據(jù),用戶(hù)認(rèn)為該頁(yè)面是可信賴(lài)的,但是當(dāng)瀏覽器下載該頁(yè)面,嵌入其中的腳本將被解釋執(zhí)行。
由于HTML語(yǔ)言允許使用腳本進(jìn)行簡(jiǎn)單交互,入侵者便通過(guò)技術(shù)手段在某個(gè)頁(yè)面里插入一個(gè)惡意HTML代碼,例如記錄論壇保存的用戶(hù)信息(Cookie),由于Cookie保存了完整的用戶(hù)名和密碼資料,用戶(hù)就會(huì)遭受安全損失。如這句簡(jiǎn)單的Javascript腳本就能輕易獲取用戶(hù)信息:alert(document.cookie),它會(huì)彈出一個(gè)包含用戶(hù)信息的消息框。入侵者運(yùn)用腳本就能把用戶(hù)信息發(fā)送到他們自己的記錄頁(yè)面中,稍做分析便獲取了用戶(hù)的敏感信息。2.跨站漏洞成因 成因很簡(jiǎn)單,就是因?yàn)槌绦驔](méi)有對(duì)用戶(hù)提交的變量中的HTML代碼進(jìn)行過(guò)濾或轉(zhuǎn)換。3.防范跨站攻擊
對(duì)于普通用戶(hù)而言:
在你的WEB瀏覽器上禁用java腳本,具體方法,先打開(kāi)你的IE的Internet選項(xiàng),切換到“安全”頁(yè),有個(gè)“自定義”級(jí)別,點(diǎn)擊出現(xiàn)如圖8-1所示窗口,禁用就可以了。
圖8-1
但是好象不太可能,因?yàn)橐坏┙?,很多功能就喪失了,這個(gè)方法是下策。
還有不要訪問(wèn)包含〈〉字符的連接,當(dāng)然一些官方的URL不會(huì)包括任何腳本元素。
對(duì)于開(kāi)發(fā)人員而言:
如果你的站點(diǎn)程序含論壇,留言板,以及其他程序中含提交數(shù)據(jù)格式的。需要對(duì)提交數(shù)據(jù)進(jìn)行過(guò)濾,如:轉(zhuǎn)換掉“<”和“>”,使用戶(hù)不能構(gòu)造Html標(biāo)記;過(guò)濾掉 “:”和“&”,使用戶(hù)不能將標(biāo)記的屬性設(shè)為Script;過(guò)濾掉空格,使用戶(hù)不能引發(fā)事件機(jī)制等。
五、實(shí)驗(yàn)?zāi)康模?1.了解跨站攻擊產(chǎn)生原因 2.了解跨站攻擊所能產(chǎn)生的效果 3.了解防范跨站攻擊的方法
六、實(shí)驗(yàn)內(nèi)容:
1.編寫(xiě)簡(jiǎn)單的跨站攻擊程序。2.編寫(xiě)程序?qū)崿F(xiàn)盜取用戶(hù)cookie。
七、實(shí)驗(yàn)器材(設(shè)備、元器件):
PC微機(jī)一臺(tái)、SimpleNAD網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)系統(tǒng)
八、實(shí)驗(yàn)步驟:
本實(shí)驗(yàn)在windowsXP下使用自行編寫(xiě)的例子完成,例子本身比較簡(jiǎn)單,僅供原理說(shuō)明及效果演示。讀者如有興趣,可以自行尋找具有xss漏洞的網(wǎng)站進(jìn)行相應(yīng)實(shí)驗(yàn)。
1.跨站攻擊原理及效果展示
下面將通過(guò)一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明跨站攻擊的原理及效果
首先打開(kāi)瀏覽器,在地址欄中輸入“http://127.0.0.1:8080/xss1/input.htm”在打開(kāi)的頁(yè)面中的文本框中輸入任意字符串,比如:“hello world!”,如圖8-2:
圖8-2
點(diǎn)擊“提交”按鈕后,打開(kāi)的新頁(yè)面將剛才輸入的內(nèi)容顯示了出來(lái)。如圖8-3:
圖8-3
可見(jiàn)本頁(yè)面的功能是將用戶(hù)填寫(xiě)的內(nèi)容原封不動(dòng)顯示出來(lái)。
在瀏覽器中重新打開(kāi)“http://127.0.0.1:8080/xss1/input.htm”,在文本框中輸入如下內(nèi)容:“”,并點(diǎn)擊輸入。如圖8-4:
圖8-4
這時(shí),可以發(fā)現(xiàn)并沒(méi)有按照預(yù)想結(jié)果,將剛才輸入的字符串如實(shí)顯示出來(lái),而是把其當(dāng)一段腳本加以執(zhí)行,彈出了一個(gè)彈出框,如圖8-5:
圖8-5
如果我們將輸入的內(nèi)容改為:“”,點(diǎn)擊“提交”按鈕后,將會(huì)跳轉(zhuǎn)到百度的首頁(yè),如果我們將鏈接地址改為預(yù)先構(gòu)造好的惡意頁(yè)面將會(huì)對(duì)查看該頁(yè)面內(nèi)容的用戶(hù)造成很大的威脅。2.跨站盜取用戶(hù)cookie 下面同樣通過(guò)一個(gè)簡(jiǎn)單例子對(duì)利用跨站漏洞進(jìn)行cookie內(nèi)容的盜取。首先,打開(kāi)瀏覽器在地址欄中輸入:“http://127.0.0.1:8080/xss2/logtc.asp”;在打開(kāi)的頁(yè)面中,“用戶(hù)名”和“留言”欄分別輸入任意的字符串,比如:“匿名”和“你好”,如圖8-6:
圖8-6 點(diǎn)擊“提交”按鈕后,剛才所輸入的內(nèi)容將被顯示出來(lái)。如圖8-7:
圖8-7
可見(jiàn)用戶(hù)填寫(xiě)的內(nèi)容在提交后,將在同一頁(yè)面顯示出來(lái)。
在瀏覽器中重新打開(kāi)“http://127.0.0.1:8080/xss2/logtc.asp”,在文本框中輸入如下內(nèi)容:“”,并點(diǎn)擊輸入。如圖8-8:
圖8-8
隨后,可以發(fā)現(xiàn)用戶(hù)cookie的內(nèi)容在彈出框中被顯示出來(lái)了,如圖8-9
圖8-9
對(duì)留言欄輸入的內(nèi)容稍加修改,就可以將用戶(hù)cookie的內(nèi)容記錄下來(lái),比如在留言欄中輸入“http://localhost/xss2/tc.asp? msg=’ + document.cookie)”(其中tc.asp實(shí)現(xiàn)了cookie文件的寫(xiě)入,在實(shí)踐中也可以自行編寫(xiě)相應(yīng)代碼),就可以將相應(yīng)內(nèi)容記錄到文件中,如圖8-10:
圖8-10
九、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:
十、實(shí)驗(yàn)結(jié)論:
如果對(duì)用戶(hù)輸入內(nèi)容未加過(guò)濾,然后又將其原封不動(dòng)在某個(gè)某個(gè)頁(yè)面顯示出來(lái),就會(huì)產(chǎn)生夸張漏洞。利用跨站漏洞攻擊者可以實(shí)現(xiàn)盜取用戶(hù)信息,將用戶(hù)引導(dǎo)有惡意代碼的頁(yè)面等攻擊。
十一、總結(jié)及心得體會(huì):
通過(guò)本次實(shí)驗(yàn),基本了解跨站攻擊產(chǎn)生原理,也經(jīng)過(guò)具體的實(shí)驗(yàn)操作,看到了跨站攻擊所能產(chǎn)生的效果,同時(shí)也了解了防范跨站攻擊的方法。
十二、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議:無(wú)
報(bào)告評(píng)分:
指導(dǎo)教師簽字:
第二篇:交換機(jī)實(shí)驗(yàn) 實(shí)驗(yàn)報(bào)告
交換機(jī)實(shí)驗(yàn)II 實(shí)驗(yàn)?zāi)康?/p>
1.理解掌握環(huán)路對(duì)網(wǎng)絡(luò)造成的影響,掌握環(huán)路的自檢測(cè)的配置; 2.理解路由的原理,掌握三層交換設(shè)備路由的配置方法 3.掌握DHCP的原理以及其配置方法
實(shí)驗(yàn)步驟
配置交換機(jī)的IP地址,及基本的線路連接等; 實(shí)驗(yàn)1:
①.用獨(dú)立網(wǎng)線連接同一臺(tái)交換機(jī)的任意兩個(gè)端口時(shí)期形成自環(huán)
②.對(duì)交換機(jī)的兩個(gè)端口進(jìn)行配置,開(kāi)啟所有端口的環(huán)路檢測(cè)功能、設(shè)置檢測(cè)周期等屬性 實(shí)驗(yàn)2:
①.按圖1方式對(duì)三層交換機(jī)的VLAN、端口進(jìn)行配置
②.在交換機(jī)中分別對(duì)VLAN的IP地址進(jìn)行配置
③.啟動(dòng)三層交換機(jī)的IP路由
④.設(shè)置PC-A、PC-B的IP地址,分別將它們的網(wǎng)關(guān)設(shè)置為所屬三層交換機(jī)VLAN的IP地址
⑤.通過(guò)Ping驗(yàn)證主機(jī)A、B之間的互通狀況 實(shí)驗(yàn)3:
三層交換機(jī)作為DHCP服務(wù)器,兩臺(tái)PC-A和PC-B,分別從交換機(jī)上獲取IP地址。PC-C手動(dòng)配置IP地址。
①.按圖2方式建立主機(jī)A、B、C與三層交換機(jī)間的連接,配置交換機(jī)的IP地址
②.配置三層交換機(jī)的DHCP地址池屬性
③.啟動(dòng)DHCP服務(wù)
④.(1)查看主機(jī)A、B能否正確的獲取到給定范圍內(nèi)IP地址,通過(guò)Ping查看網(wǎng)關(guān)、交換機(jī)之間的互通情況;(2)拔掉主機(jī)B的網(wǎng)線,將主機(jī)C的IP地址設(shè)置為主機(jī)B所獲取的到的IP地址,然后再插上B機(jī)網(wǎng)線,查看其是否能獲取到不同的IP地址;(3)分別重啟主機(jī)A、B及交換機(jī),查看A、B獲取到的IP地址是否和前一次相同。
圖1.三層路由連接圖
圖2.DHCP連接圖
實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)1:環(huán)路測(cè)試
交換機(jī)出現(xiàn)環(huán)路的自檢測(cè)結(jié)果:
實(shí)驗(yàn)2:路由配置:
主機(jī)A連接交換機(jī)端口2,劃分為vlan10,端口IP地址為192.168.1.1。主機(jī)IP地址192.168.1.23;
主機(jī)B連接交換機(jī)端口10,劃分為vlan20,端口IP地址為192.168.2.1。主機(jī)IP地址192.168.2.27;
在未設(shè)置IP routing之前主機(jī)A、B分屬于不同網(wǎng)段,因此它們不能互通,設(shè)置后通過(guò)路由則可相互聯(lián)通:
實(shí)驗(yàn)三:DHCP配置和驗(yàn)證:
主機(jī)A、B、C分別連接到交換機(jī)的端口2,端口18和端口10上。其中主機(jī)A、B的IP地址自動(dòng)獲取,主機(jī)C的IP地址則手動(dòng)配置。
主機(jī)A通過(guò)DHCP獲取的IP地址(192.168.1.211)
主機(jī)B通過(guò)DHCO獲取到的IP地址(192.168.1.210)
測(cè)試主機(jī)A與主機(jī)C的互通性(可連通)
測(cè)試主機(jī)B與主機(jī)A、C之間的互通性(可連通)
當(dāng)主機(jī)C配置為主機(jī)B獲取到的IP地址是會(huì)產(chǎn)生IP地址沖突的錯(cuò)誤提示:
配置的主機(jī)C的IP地址與主機(jī)B的IP地址相沖突
主機(jī)B網(wǎng)線重新連接后獲取到的新的IP地址
交換機(jī)重新啟動(dòng)后A、B主機(jī)自動(dòng)獲取到的IP地址信息:
主機(jī)A自動(dòng)獲取的IP地址
主機(jī)B自動(dòng)獲取的IP地址
DHCP可分配IP地址池內(nèi)IP數(shù)目小于申請(qǐng)的主機(jī)數(shù)目時(shí)實(shí)驗(yàn)驗(yàn)證情況:(可分配的IP地址為192.168.1.210 — 192.168.1.212),此時(shí)連接主機(jī)A、B、C、D。
主機(jī)D自動(dòng)獲取IP地址的結(jié)果
實(shí)驗(yàn)與結(jié)果分析
環(huán)路問(wèn)題:
分為第二層環(huán)路和第三層環(huán)路,所有環(huán)路的形成都是由于目的路徑不明確導(dǎo)致混亂而造成的。例如第二層,一個(gè)廣播信息經(jīng)過(guò)兩個(gè)交換機(jī)的時(shí)候會(huì)不斷惡性循環(huán)的產(chǎn)生廣播造成環(huán)路,而第三層環(huán)路則是原路由意外不能工作,造成路由通告錯(cuò)誤,形成一個(gè)惡性循環(huán)。傳統(tǒng)的二層預(yù)防技術(shù)主要有STP(Spanning tree)來(lái)預(yù)防,STP在不斷的修改和更新中,產(chǎn)生了諸如STP/RSTP/MSTP等多個(gè)版本,大家可根據(jù)各自的組網(wǎng)規(guī)劃來(lái)選擇應(yīng)用,但是STP的配置復(fù)雜度,以及協(xié)議本身的開(kāi)銷(xiāo)通常都是網(wǎng)絡(luò)管理人員比較頭痛的事情。
解決因環(huán)路(自環(huán)或外環(huán))對(duì)網(wǎng)絡(luò)造成的影響,能夠提高網(wǎng)絡(luò)的自檢錯(cuò)性、容錯(cuò)性和健壯性。環(huán)路檢測(cè)的過(guò)稱(chēng)為:對(duì)交換機(jī)的每個(gè)端口周期性的發(fā)送回路檢測(cè)(Loopback-detection)數(shù)據(jù)包;交換機(jī)查看端口收到包的CPUMAC字段,如果其中存的是本交換機(jī)的MAC,則本交換機(jī)的某些端口形成環(huán)路,否則將其丟棄,出現(xiàn)環(huán)路后,交換機(jī)會(huì)關(guān)閉端口號(hào)較大的端口以消除環(huán)路。圖1中反映了在交換機(jī)開(kāi)啟所有端口的環(huán)路檢測(cè)功能后每隔30秒檢測(cè)到的信息以及對(duì)端口的關(guān)閉等操作信息。
三層路由意義和工作過(guò)程: 實(shí)現(xiàn)不同VLAN間主機(jī)的通信,通過(guò)配置VLAN能夠有效地控制廣播域的大小。在同一VLAN內(nèi)的主機(jī)間的通信不需要經(jīng)過(guò)交換機(jī)的路由處理可直接到達(dá)目的主機(jī),當(dāng)不同VLAN間通訊時(shí),數(shù)據(jù)包先轉(zhuǎn)發(fā)至路由器,由路由器查詢(xún)其路由轉(zhuǎn)發(fā)表選擇正確的端口間數(shù)據(jù)包轉(zhuǎn)發(fā)到目的VLAN的交換機(jī),再由目的VLAN內(nèi)交換機(jī)將數(shù)據(jù)包轉(zhuǎn)發(fā)至目的主機(jī)。其中扮演主要角色的即為交換機(jī)的路由功能,如果沒(méi)有設(shè)置相關(guān)屬性則不同VLAN間不能通訊。
因此在圖3的驗(yàn)證實(shí)驗(yàn)中,通過(guò)路由器的轉(zhuǎn)發(fā)功能實(shí)現(xiàn)了分別位于VLAN10和VLAN20中主機(jī)A、B之間的通信,在未配置IP Routing之前VLAN10和VLAN20分屬不同網(wǎng)段(A、B也屬于不同網(wǎng)段),因此不能實(shí)現(xiàn)通信,配置之后路由器(三層交換設(shè)備)可通過(guò)內(nèi)部路由轉(zhuǎn)發(fā)表實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)和通信。
DHCP工作過(guò)程與實(shí)驗(yàn)分析:
即動(dòng)態(tài)主機(jī)配置協(xié)議(Dynamic Host Configuration Protocol),是一個(gè)局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,主要有兩個(gè)用途:給內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動(dòng)分配IP地址,是使內(nèi)部網(wǎng)絡(luò)管理員能夠集中管理(從中心結(jié)點(diǎn)監(jiān)控)和自動(dòng)分配IP 網(wǎng)絡(luò)地址的通信協(xié)議。當(dāng)某臺(tái)計(jì)算機(jī)移到網(wǎng)絡(luò)中的其它位置時(shí),能自動(dòng)收到新的IP 地址。DHCP 服務(wù)器從地址池中為客戶(hù)端選擇并分配IP 地址及其他相關(guān)參數(shù)當(dāng)作為DHCP服務(wù)器的設(shè)備收到客戶(hù)端發(fā)來(lái)的DHCP 請(qǐng)求時(shí),將從地址池中挑選一個(gè)空閑的IP 地址。
DHCP工作過(guò)程:
當(dāng) DHCP客戶(hù)端第一次登錄網(wǎng)絡(luò)的時(shí)候,也就是客戶(hù)發(fā)現(xiàn)本機(jī)上沒(méi)有任何 IP 數(shù)據(jù)設(shè)定,它會(huì)向網(wǎng)絡(luò)發(fā)出一個(gè) DHCP DISCOVER封包(廣播包)。因?yàn)榭蛻?hù)端還不知道自己屬于哪一個(gè)網(wǎng)絡(luò),所以封包的來(lái)源地址會(huì)為 0.0.0.0,而目的地址則為 255.255.255.255,然后再附上 DHCP discover 的信息,向網(wǎng)絡(luò)進(jìn)行廣播。如果都沒(méi)有得到DHCP服務(wù)器的響應(yīng),客戶(hù)端則會(huì)顯示錯(cuò)誤信息,宣告 DHCP discover 的失敗。之后,基于使用者的選擇,系統(tǒng)會(huì)繼續(xù)在 5 分鐘之后再重復(fù)一次 DHCP discover 的過(guò)程。
當(dāng) DHCP服務(wù)器監(jiān)聽(tīng)到客戶(hù)端發(fā)出的 DHCP discover 廣播后,它會(huì)從那些還沒(méi)有租出的地址范圍內(nèi),選擇最前面的空置 IP,連同其它 TCP/IP 設(shè)定,響應(yīng)給客戶(hù)端一個(gè) DHCP OFFER封包。由于客戶(hù)端在開(kāi)始的時(shí)候還沒(méi)有 IP 地址,所以在其 DHCP discover封包內(nèi)會(huì)帶有其 MAC 地址信息,并且有一個(gè) XID 編號(hào)來(lái)辨別該封包,DHCP服務(wù)器響應(yīng)的 DHCP offer 封包則會(huì)根據(jù)這些資料傳遞給要求租約的客戶(hù)。根據(jù)服務(wù)器端的設(shè)定,DHCP offer封包會(huì)包含一個(gè)租約期限的信息。
如果客戶(hù)端收到網(wǎng)絡(luò)上多臺(tái) DHCP 服務(wù)器的響應(yīng),只會(huì)挑選其中一個(gè) DHCP offer 而已(通常是最先抵達(dá)的那個(gè)),并且會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè)DHCP request廣播封包,告訴所有 DHCP 服務(wù)器它將指定接受哪一臺(tái)服務(wù)器提供的 IP 地址。同時(shí),客戶(hù)端還會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè) ARP封包,查詢(xún)網(wǎng)絡(luò)上面有沒(méi)有其它機(jī)器使用該 IP 地址;如果發(fā)現(xiàn)該 IP 已經(jīng)被占用,客戶(hù)端則會(huì)送出一個(gè) DHCPDECLINE 封包給 DHCP服務(wù)器,拒絕接受其 DHCP offer,并重新發(fā)送 DHCP discover 信息。事實(shí)上,并不是所有 DHCP客戶(hù)端都會(huì)無(wú)條件接受 DHCP服務(wù)器的 offer,尤其這些主機(jī)安裝有其它 TCP/IP 相關(guān)的客戶(hù)軟件。客戶(hù)端也可以用 DHCP request 向服務(wù)器提出 DHCP 選擇,而這些選擇會(huì)以不同的號(hào)碼填寫(xiě)在 DHCP Option Field 里面。
當(dāng) DHCP服務(wù)器接收到客戶(hù)端的 DHCP request 之后,會(huì)向客戶(hù)端發(fā)出一個(gè)DHCPACK 響應(yīng),以確認(rèn) IP 租約的正式生效,標(biāo)志著一次DHCP的工作過(guò)程完成。
圖4—6反映了主機(jī)A、B通過(guò)自動(dòng)獲取IP地址方式由三層交換機(jī)動(dòng)態(tài)分配IP后,各自得到的IP地址,由于A、B、C連接與同一臺(tái)交換設(shè)備上,由沒(méi)有VLAN劃分等因素,所以它們之間不論是自動(dòng)獲取IP地址還是手動(dòng)配置IP地址(不沖突的前提下)都能相互連通。當(dāng)為主機(jī)C配置成已得到自動(dòng)分配IP地址的主機(jī)B的IP地址時(shí),自然會(huì)出現(xiàn)IP地址沖突的出錯(cuò)信息提示。當(dāng)B網(wǎng)線重新鏈接時(shí),相當(dāng)于重新加入的客戶(hù)端,交換機(jī)會(huì)從地址池中順序選擇下一個(gè)未分配的IP地址給新的請(qǐng)求用戶(hù)。因此主機(jī)B會(huì)獲得新新的IP地址,并且其值是主機(jī)C的IP地址的下一個(gè)鄰接IP地址(在未超出可分配的IP地址范圍條件下)。圖7 —10中反映了上述描述的結(jié)果。
圖11中顯示了一種造成IP地址動(dòng)態(tài)分配失敗的情形:可分配的IP地址數(shù)僅有3個(gè),而由4臺(tái)主機(jī)請(qǐng)求分配IP地址,當(dāng)可分配地址全部分配給主機(jī)A、B、C后,主機(jī)D的請(qǐng)求不能得到滿(mǎn)足,因此未得到給定范圍內(nèi)的合理IP地址。
第三篇:實(shí)驗(yàn)一 實(shí)驗(yàn)報(bào)告
網(wǎng) 絡(luò) 程 序 設(shè) 實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)名稱(chēng):Winsock編程接口實(shí)驗(yàn) 實(shí)驗(yàn)類(lèi)型: 驗(yàn) 證 型
計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
? 掌握Winsock的啟動(dòng)和初始化;
? 掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查詢(xún)函數(shù)的使用。
二、實(shí)驗(yàn)設(shè)計(jì)
實(shí)驗(yàn)內(nèi)容:
1、編寫(xiě)程序能同時(shí)實(shí)現(xiàn)對(duì)多個(gè)域名的解析。比如在控制臺(tái)輸入:getip 004km.cn對(duì)應(yīng)的IP地址列表。
2、編寫(xiě)程序獲取并輸出本地主機(jī)的所有適配器的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),MAC地址。
根據(jù)實(shí)驗(yàn)內(nèi)容編寫(xiě)程序:
1、對(duì)相關(guān)域名進(jìn)行解析,利用gethostbyname()完成解析,用到的結(jié)構(gòu)體為:
struct hostent{ char FAR*
h_name;char FAR* FAR* h_aliases;short
h_addrtype;short
h_length;char FAR* FAR* h_addr_list;}
得到的IP地址列表由h_addr_list存儲(chǔ);
2、利用GetAdaptersInfo()函數(shù)獲得本地主機(jī)的相關(guān)信息,通過(guò)IP_ADAPTER_INFO結(jié)構(gòu)體返回所需信息。
IP_ADAPTER_INFO的定義如下: typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
三、實(shí)驗(yàn)過(guò)程(包含實(shí)驗(yàn)結(jié)果)
1、分析題目,編寫(xiě)程序;
2、將編寫(xiě)的程序進(jìn)行編譯、運(yùn)行,輸入題目給定的內(nèi)容,完成題目要求; 結(jié)果如下:
第1題:
第2題:
四、討論與分析
思考題:
1、Winsock初始化的作用:只有調(diào)用了WSAStartup()進(jìn)行初始化之后,應(yīng)用程 序才能調(diào)用其他Windows Sockets API函數(shù),實(shí)現(xiàn)網(wǎng)絡(luò)通信;
2、函數(shù)原型為:
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,//接受數(shù)據(jù)的緩沖區(qū)
PULONG pOutBufLen
// 數(shù)據(jù)的長(zhǎng)度大小);
3、域名解析時(shí)出現(xiàn)域名對(duì)應(yīng)多個(gè)IP,原因:該域名存在于多個(gè)服務(wù)器。
五、實(shí)驗(yàn)者自評(píng)
通過(guò)本次實(shí)驗(yàn),我掌握了Winsock的啟動(dòng)和初始化以及gethostname(),gethostbyname(),GetAdaptersInfo()等函數(shù)查詢(xún)的使用,加深了以前對(duì)課本知識(shí)的認(rèn)識(shí)程度。
六、附錄:關(guān)鍵代碼(給出適當(dāng)注釋?zhuān)勺x性高)
第1題代碼:
////////////////////////////////////////////////// // GetAllIps.cpp文件
//#include “../common/InitSock.h” #include
using namespace std;
#pragma comment(lib, “WS2_32”)// 鏈接到WS2_32.lib //CInitSock initSock;// 初始化Winsock庫(kù)
void main(){
char szMessage[256];// 取得本地主機(jī)名稱(chēng)
// 初始化
WSADATA wsaData;if(WSAStartup(MAKEWORD(2,2), &wsaData)!= 0){
exit(0);}
// 通過(guò)主機(jī)名得到地址信息
printf(“ Get IP::”);gets(szMessage);
// 獲取主機(jī)信息
hostent *pHost = ::gethostbyname(szMessage);
// 打印出所有IP地址
in_addr addr;for(int i = 0;;i++){
char *p = pHost->h_addr_list[i];
if(p == NULL)
break;
memcpy(&addr.S_un.S_addr, p, pHost->h_length);
char *szIp = ::inet_ntoa(addr);
printf(“ 服務(wù)器 %s IP地址:%s n ”,szMessage, szIp);
printf(“服務(wù)器名字: %s n”,pHost->h_name);}
/////////////////////////// ::WSACleanup();
}
第2題代碼:
// 獲取并輸出本地主機(jī)的所有適配器的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),MAC地址
#include
void main(){ // 定義變量
IP_ADAPTER_INFO *pAdapterInfo;ULONG ulOutBufLen;DWORD dwRetVal;PIP_ADAPTER_INFO pAdapter;
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));ulOutBufLen = sizeof(IP_ADAPTER_INFO);// 第一次獲取適配器信息,得到ulOutBufLen的實(shí)際大小
if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
free(pAdapterInfo);
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(ulOutBufLen);} // 第二次獲取適配器信息,獲得了pAdapterInfo信息
if(dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
cout<<“GetAdapterInfo Error!”< // 打印MAC地址信息、子網(wǎng)掩碼以及網(wǎng)關(guān) pAdapter = pAdapterInfo;while(pAdapter){ cout<<“MAC Address: ”; for(int i=0;i AddressLength;i++) { if(i ==(pAdapter->AddressLength-1)) { cout< } else { cout< } } cout< cout<<“IP 地址:”< IpAddressList.IpAddress.String< cout<<“子網(wǎng)掩碼 :”< IpAddressList.IpMask.String< cout<<“網(wǎng)關(guān) :”< IpAddressList.IpAddress.String< cout<<“****************************************”< pAdapter = pAdapter->Next;} // 釋放資源 if(pAdapterInfo){ free(pAdapterInfo);} cout< } 實(shí)驗(yàn)報(bào)告一、二、三、四、五、六、七、實(shí)驗(yàn)名稱(chēng):分析PL0詞法分析程序 試驗(yàn)?zāi)康?? 學(xué)習(xí)PL0程序的詞法分析程序GenSym的實(shí)現(xiàn)過(guò)程 ? 結(jié)合具體的程序了解詞法分析過(guò)程 實(shí)驗(yàn)設(shè)備 ? PC兼容機(jī) ? DOS操作系統(tǒng)或Windows操作系統(tǒng) ? TurboPascal軟件等 實(shí)驗(yàn)要求 ? 獨(dú)立完程序的分析過(guò)程 ? 自己跟蹤程序的執(zhí)行過(guò)程 ? 記錄程序的執(zhí)行過(guò)程 ? 記錄程序的運(yùn)行結(jié)果 實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)過(guò)程記錄 源程序 實(shí)驗(yàn)動(dòng)物學(xué)實(shí)驗(yàn)報(bào)告 一、實(shí)驗(yàn)動(dòng)物:小鼠 二、操作流程:抓取,固定,編號(hào),給藥,取血,麻醉,絕育,解剖。 三、具體操作 1、抓?。鹤ト⌒∈髸r(shí),右手抓住小鼠尾巴,不要過(guò)于用力,以免驚嚇小鼠。左手從小鼠身體后部向前抓(以免小鼠向后縮咬傷自己),抓住小鼠頸部。固定住小鼠后,將小鼠皮膚往上抓,盡量將小鼠背部皮膚抓住。左手將小鼠腹部朝向自己,把小鼠尾巴用左手無(wú)名指和小指夾住,這時(shí)小鼠腹部皮膚緊繃,不能動(dòng)彈。 2、固定: 通常使用固定器進(jìn)行固定。將固定器擰開(kāi)后,抓住小鼠尾巴,使其鉆入固定器中,再將擰下的固定器部分裝好,使小鼠尾部露出,再將可旋轉(zhuǎn)的鐵片固定住即可進(jìn)行后續(xù)實(shí)驗(yàn)。 3、編號(hào):編號(hào)方式有兩種:①剪腳趾編號(hào):把小鼠腹面朝上,在下的腳趾從左至右依次編為1~10號(hào),剪10號(hào)腳趾加1~9號(hào)腳趾依次編為11~19號(hào),在上的腳趾依次編為20,30,40,50,60,70,80,90號(hào),其余編號(hào)與11~19號(hào)類(lèi)似。②打耳釘編號(hào):耳釘上均有唯一編號(hào),通過(guò)使用耳釘鉗將耳釘打在小鼠耳朵上即可。實(shí)驗(yàn)時(shí)通常使用的是第一種方式進(jìn)行編號(hào),第二種編號(hào)通常用于需要長(zhǎng)距離運(yùn)輸?shù)膭?dòng)物。 4、給藥:常用的給藥方式有: ①口服給藥:即灌胃。將注射器裝入藥物溶液,裝上灌胃針(灌胃針有直頭和彎頭兩種,區(qū)別不大)。如上所述,抓取小鼠后,使其頭部朝上,盡量呈一直線,取灌胃針,從小鼠嘴角一側(cè)緩緩插入(保持刻度在自己能看到的位置),順著小鼠口腔食道的弧度讓小鼠將針咽入,灌胃過(guò)程中如果遇到阻礙一定要及時(shí)拔出灌胃針,不可強(qiáng)行灌胃以免傷及小鼠食道以及肺部。灌胃針順利進(jìn)入后基本與小鼠身體呈一條直線,注入適量體積后再順著食道緩緩取出灌胃針。 ②靜脈注射:小鼠尾部有3條靜脈和1條動(dòng)脈,3條靜脈非別位于背部,及兩側(cè)。靜脈注射時(shí)一般選取兩側(cè)靜脈,因?yàn)槠湎鄬?duì)于背部靜脈更為清晰飽滿(mǎn)。將小鼠固定后,用酒精擦拭其尾部靜脈,使其充血,以便注射。之后使注射器針孔處朝上,針與尾部呈約30°扎入尾部后向上輕挑,再向內(nèi)扎入部分,此過(guò)程應(yīng)該比較順暢,沒(méi)有阻礙,若阻礙較大則有可能扎入到了皮膚中。扎入后將活塞向后回抽一點(diǎn)可見(jiàn)到有血回流,則說(shuō)明成功扎入靜脈當(dāng)中,注射適當(dāng)體積后迅速拔針,用酒精進(jìn)行消毒。 5、取血:有斷尾取血法和眼眶取血法兩種。本次實(shí)驗(yàn)使用的是眼眶取血法。抓取小鼠,固定其頭部用手指將其上下眼瞼分開(kāi),露出其眼球并且不能閉上。用玻璃毛細(xì)管從其上眼角處扎入眼球后方毛細(xì)血管從,使血液順著毛細(xì)管留下,取血完成后快速將毛細(xì)管取下。 6、麻醉:抓取老鼠,使其頭部朝下,使其腹部臟器向胸腔靠攏,露出腹部空腔,以免刺傷臟器。將注射器豎直扎入靠近后腿部腹腔,刺入之后稍微向前傾斜但不要向前刺入,一般注入0.5mL麻醉劑即可。隨后拔出針,方向小鼠,等待幾分鐘后即可麻醉。 7、絕育:絕育手術(shù)是通過(guò)剪除雌鼠卵巢或雄鼠輸精管來(lái)實(shí)現(xiàn)的。將麻醉的雌鼠背面朝上,從其胸腔和尾部之間向下三分之一處剪開(kāi)一個(gè)小口,用鑷子將其卵巢取出,上面呈現(xiàn)紅色斑點(diǎn)的部分即為卵巢,用剪刀將這一部分剪除,然后用縫合針線將其縫合,縫合方法為將針穿過(guò)后,將線纏繞鑷子兩圈再逆時(shí)針纏繞兩圈,再重復(fù)纏繞一遍,將鑷子夾住線頭把纏繞的線移至線頭系緊即可(縫合過(guò)程全程用鑷子和剪刀操作),里面肌肉層以及外面皮層均需縫合。雄鼠則從外生殖器向上1-2cm處剪開(kāi)小口,用鑷子在其中找出輸精管(較細(xì)長(zhǎng)的乳白色小管),盡量多減掉一些,以免其長(zhǎng)長(zhǎng)愈合,以上述方法縫合傷口即可。 9、解剖:以頸椎脫臼法處死小鼠,使其腹面朝上。用鑷子將其腹部皮膚夾起,然后用剪刀剪開(kāi),觀察各個(gè)器官所在位置和形態(tài),解剖完的小鼠放入尸體袋中。第四篇:實(shí)驗(yàn)報(bào)告格式--實(shí)驗(yàn)2
第五篇:實(shí)驗(yàn)動(dòng)物學(xué)實(shí)驗(yàn)報(bào)告