
摘要:簡(jiǎn)述計(jì)算機(jī)網(wǎng)絡(luò)課程及實(shí)驗(yàn)體系的發(fā)展?fàn)顩r,指出原有實(shí)驗(yàn)?zāi)J降牟蛔?,改革?shí)驗(yàn)體系并新增了部分原始套接字實(shí)驗(yàn)?zāi)K,以網(wǎng)絡(luò)嗅探程序設(shè)計(jì)為例給出原始套接字程序設(shè)計(jì)實(shí)驗(yàn)的目的、要求和實(shí)現(xiàn)方法,分析總結(jié)了原始套接字實(shí)驗(yàn)的特色和優(yōu)勢(shì)。
關(guān)鍵詞:網(wǎng)絡(luò)實(shí)驗(yàn);原始套接字;協(xié)議分析;綜合設(shè)計(jì)
作為計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等專(zhuān)業(yè)重要的學(xué)位課和考研課,計(jì)算機(jī)網(wǎng)絡(luò)課程在我校開(kāi)設(shè)已整整20年,先后歷經(jīng)多次課程和實(shí)驗(yàn)體系改革,在IT人才培養(yǎng)和專(zhuān)業(yè)建設(shè)方面發(fā)揮著重要作用。1990年,計(jì)算機(jī)網(wǎng)絡(luò)課程在我校計(jì)算機(jī)應(yīng)用87級(jí)本科班正式開(kāi)設(shè);1996年,計(jì)算機(jī)網(wǎng)絡(luò)課程從OSI開(kāi)放式系統(tǒng)互連模型轉(zhuǎn)向到TCP/IP協(xié)議體系;2001年,計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)施雙語(yǔ)教學(xué)并成為我校首批雙語(yǔ)示范課程;2003年,Cisco網(wǎng)絡(luò)技術(shù)引入網(wǎng)絡(luò)課程教學(xué);2004年,計(jì)算機(jī)網(wǎng)絡(luò)課程被評(píng)為校優(yōu)質(zhì)課和首批校級(jí)精品課。2004年以后,計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)課程主要采用Java套接字編程和思科網(wǎng)絡(luò)配置管理相結(jié)合,在學(xué)生動(dòng)手能力培養(yǎng)方面取得了積極效果。然而,Java套接字技術(shù)只能進(jìn)行應(yīng)用層編程,路由配置管理則只關(guān)注網(wǎng)絡(luò)互連設(shè)備的操作管理,這對(duì)于理解底層網(wǎng)絡(luò)協(xié)議是不夠的。
在此背景下,課程組對(duì)網(wǎng)絡(luò)實(shí)驗(yàn)課程進(jìn)行了改革,在原有實(shí)驗(yàn)環(huán)節(jié)中增加了原始套接字實(shí)驗(yàn),將操作、驗(yàn)證、分析和設(shè)計(jì)結(jié)合起來(lái),在提高動(dòng)手能力的同時(shí),加深了學(xué)生對(duì)于網(wǎng)絡(luò)協(xié)議的理解和運(yùn)用。
1計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)體系
目前,我院網(wǎng)絡(luò)課程體系包括了計(jì)算機(jī)網(wǎng)絡(luò)原
理、TCP/IP協(xié)議分析、網(wǎng)絡(luò)安全、路由與交換、無(wú)線網(wǎng)絡(luò)技術(shù)、網(wǎng)絡(luò)編程以及網(wǎng)絡(luò)管理等7門(mén)專(zhuān)業(yè)課程。其中,計(jì)算機(jī)網(wǎng)絡(luò)原理為必修課和研究生入學(xué)統(tǒng)考課,面向計(jì)算機(jī)科學(xué)與技術(shù)、通信工程、軟件工程等專(zhuān)業(yè)開(kāi)設(shè),而不同專(zhuān)業(yè)的后續(xù)網(wǎng)絡(luò)課程安排有所差異。
從有利于學(xué)生綜合素質(zhì)和創(chuàng)新能力的培養(yǎng)角度出發(fā),課程組對(duì)計(jì)算機(jī)網(wǎng)絡(luò)原理實(shí)驗(yàn)課程進(jìn)行了調(diào)整,增加了兩個(gè)原始套接字編程設(shè)計(jì)實(shí)驗(yàn),將網(wǎng)絡(luò)編程深入到底層協(xié)議,旨在強(qiáng)化學(xué)生深入理解網(wǎng)絡(luò)協(xié)議和報(bào)文格式。調(diào)整后的計(jì)算機(jī)網(wǎng)絡(luò)原理實(shí)驗(yàn)課程設(shè)置了8個(gè)實(shí)驗(yàn)?zāi)K,每模塊分配2個(gè)學(xué)時(shí),總計(jì)16個(gè)實(shí)驗(yàn)學(xué)時(shí),具體如下。
實(shí)驗(yàn)一:網(wǎng)線制作與連接測(cè)試實(shí)驗(yàn)。物理層操作實(shí)驗(yàn),掌握非屏蔽五類(lèi)雙絞線制作和測(cè)試,理解T568A/568B標(biāo)準(zhǔn),完成直通雙絞線、交叉雙絞線的制作和連接測(cè)試。
實(shí)驗(yàn)二:客戶(hù)機(jī)/服務(wù)器通信實(shí)驗(yàn)。標(biāo)準(zhǔn)套接字編程實(shí)驗(yàn),學(xué)習(xí)套接字編程調(diào)試,理解服務(wù)器與客戶(hù)端程序的工作原理,設(shè)計(jì)實(shí)現(xiàn)簡(jiǎn)單的服務(wù)器和客戶(hù)端程序,進(jìn)行網(wǎng)絡(luò)請(qǐng)求和響應(yīng)測(cè)試。
實(shí)驗(yàn)三:網(wǎng)絡(luò)服務(wù)配置實(shí)驗(yàn)。操作性實(shí)驗(yàn),熟練掌握FTP文件下載服務(wù)、POP3郵局服務(wù)、SMTP簡(jiǎn)
單郵件發(fā)送服務(wù)、WWW服務(wù)等常見(jiàn)網(wǎng)絡(luò)服務(wù)的安裝配置。
實(shí)驗(yàn)四:網(wǎng)絡(luò)命令字實(shí)驗(yàn)。驗(yàn)證性實(shí)驗(yàn),熟練掌握FTP、POP3、SMTP服務(wù)命令字,掌握Ping、Netstat、Tracert、Nslookup、Route等常見(jiàn)網(wǎng)絡(luò)命令。
實(shí)驗(yàn)五:郵件收發(fā)程序設(shè)計(jì)。編程設(shè)計(jì)性實(shí)驗(yàn),掌握標(biāo)準(zhǔn)套接字編程方法,設(shè)計(jì)實(shí)現(xiàn)簡(jiǎn)單的電子郵件發(fā)送和接收程序。
實(shí)驗(yàn)六:網(wǎng)絡(luò)嗅探分析實(shí)驗(yàn)。驗(yàn)證性實(shí)驗(yàn),學(xué)習(xí)使用Sniffer、Wireshark、Iris等專(zhuān)業(yè)網(wǎng)絡(luò)分析工具,捕獲局域網(wǎng)數(shù)據(jù)并進(jìn)行協(xié)議分析。
實(shí)驗(yàn)七:網(wǎng)絡(luò)嗅探程序設(shè)計(jì)。編程設(shè)計(jì)性實(shí)驗(yàn),掌握原始套接字編程基本方法,深入理解網(wǎng)絡(luò)嗅探原理,設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲程序,按照以太網(wǎng)數(shù)據(jù)幀—IP報(bào)文—TCP/UDP報(bào)文封裝順序,對(duì)所捕獲數(shù)據(jù)進(jìn)行分析。
實(shí)驗(yàn)八:TCP洪泛攻擊程序設(shè)計(jì)。編程設(shè)計(jì)性實(shí)驗(yàn),掌握原始套接字編程基本方法,學(xué)習(xí)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的構(gòu)造,理解TCP三次握手協(xié)議,設(shè)計(jì)實(shí)現(xiàn)TCP SYN同步報(bào)文偽造和發(fā)送程序,實(shí)現(xiàn)洪泛攻擊。
2原始套接字實(shí)驗(yàn)設(shè)置
下面以網(wǎng)絡(luò)嗅探程序設(shè)計(jì)為例,簡(jiǎn)要介紹實(shí)驗(yàn)課
程體系中的原始套接字實(shí)驗(yàn)項(xiàng)目。
實(shí)驗(yàn)原理:共享式局域網(wǎng)中,設(shè)置為混雜模式的網(wǎng)卡可以接收所有經(jīng)過(guò)網(wǎng)卡的網(wǎng)絡(luò)數(shù)據(jù)。
實(shí)驗(yàn)?zāi)康模赫莆展蚕硎骄钟蚓W(wǎng)數(shù)據(jù)捕獲的基本原理;深入理解Ehternet數(shù)據(jù)幀、IP數(shù)據(jù)包、TCP/UDP報(bào)文的格式,理解協(xié)議封裝過(guò)程;掌握原始套接字編程方法。
實(shí)驗(yàn)要求:捕獲數(shù)據(jù)包,解析目標(biāo)和源MAC地址、IP地址、端口號(hào)以及傳輸層協(xié)議類(lèi)型。
實(shí)驗(yàn)環(huán)境:Redhat Linux 9.0,Vi編輯/Gcc編譯,共享式網(wǎng)絡(luò)環(huán)境。
實(shí)驗(yàn)步驟:1)編寫(xiě)程序打開(kāi)網(wǎng)卡,創(chuàng)建原始套接字;2)設(shè)置網(wǎng)卡工作在混雜模式;3)啟動(dòng)數(shù)據(jù)包捕獲;4)判斷并具體解析數(shù)據(jù)。
程序?qū)崿F(xiàn):首先引用必要的Linux C程序頭文件,定義網(wǎng)卡設(shè)備、接收字符緩沖區(qū)、報(bào)頭指針等變量,創(chuàng)建原始套接字;然后,設(shè)置網(wǎng)卡工作方式為混雜模式以進(jìn)行數(shù)據(jù)捕獲,方法為ioctl(int