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