• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于.Net平臺的DNS域名解析仿真實驗教學設計

      2019-04-23 12:52:18奚婧胡文驊
      中國信息技術教育 2019年8期

      奚婧 胡文驊

      摘要:本文主要介紹了基于.Net平臺的DNS域名解析仿真實驗在計算機網(wǎng)絡課程教學中的具體應用。作者在闡述DNS服務器工作原理及域名解析過程的同時,以C#高級編程語言編寫基于非阻塞通信框架下的DNS仿真服務器,實現(xiàn)了Server-Server、Client-Server雙向通信,從而模擬了客戶端DNS查詢報文構建、DNS查詢報文發(fā)送、DNS服務器端報文接收和解析、DNS響應報文的回傳等功能。通過仿真編程實踐可以讓學生全面透徹理解DNS域名解析原理并有效鍛煉實際動手能力。

      關鍵詞:DNS;分布式數(shù)據(jù)庫;.Net框架;權威域名服務器;報文解析;C#;非阻塞通信

      中圖分類號:G434 文獻標識碼:A 論文編號:1674-2117(2019)08-0106-04

      引言

      在《計算機網(wǎng)絡》及《組網(wǎng)和網(wǎng)絡管理》等相關課程教學中,學生對核心網(wǎng)絡協(xié)議的理解掌握一直存在薄弱環(huán)節(jié)。因此,網(wǎng)絡協(xié)議的講解要注重兩個層面的剖析,一個從整體角度出發(fā)介紹協(xié)議的作用、格式標準、流程步驟、所屬類別,另一個講述協(xié)議如何編碼實現(xiàn)。通過具體的編碼實踐,可以讓學生對協(xié)議的各個知識點有較為直觀具象的認識,與傳統(tǒng)的純理論式授課相比,實踐操作模式更能夠激發(fā)學生的學習主動性。

      本文以DNS域名解析仿真實驗為例,闡述計算機網(wǎng)絡課程中網(wǎng)絡協(xié)議章節(jié)如何配套進行實驗教學設計。DNS系統(tǒng)是提供域名到IP地址這種映射服務,方便訪問因特網(wǎng)上的各個主機。其協(xié)議主要環(huán)節(jié)由四個方面組成:DNS查詢報文構建、DNS查詢報文發(fā)送、DNS服務器端報文接收和解析、DNS響應報文回傳。

      實驗目的和內(nèi)容

      本實驗旨在在教學過程中讓學生自主搭建起真實有效的環(huán)境平臺,模擬一個基于TCP/IP應用程序及分布式數(shù)據(jù)庫的采用客戶-服務器(C/S)架構模式的DNS域名解析系統(tǒng);提供主機名稱和IP地址之間的轉換及有關電子郵件的選路信息服務,使大多數(shù)名字都在本地進行解析,僅少量解析需要在因特網(wǎng)(本地仿真)上通信,提高服務效率;模擬仿真開發(fā)平臺選用微軟.Net Framework,開發(fā)環(huán)境為Visual Studio,關系數(shù)據(jù)庫系統(tǒng)使用SQL Server 2008 Express,學生通過C#編程語言完成DNS客戶端和服務端組件的開發(fā)工作,并能實現(xiàn)雙向通信。

      DNS仿真實驗總體概述

      1.DNS工作原理解析

      域名系統(tǒng)(DNS)是一種用于TCP/IP應用程序的分布式數(shù)據(jù)庫,它提供主機名字和IP地址之間的轉換及有關電子郵件的選路信息。這里提到的分布式是指在Internet上的單個站點不能擁有所有的信息。DNS提供了允許服務器和客戶程序相互通信的協(xié)議。

      當某一個應用程序進程需要把主機名解析為IP地址時,該應用進程就調用解析程序,并成為DNS的一個客戶,把待解析的域名放在DNS請求報文中,以UDP用戶數(shù)據(jù)報方式發(fā)給本地服務器。本地域名服務器在查找域名后,把對應的IP地址放在回答報文中返回。應用進程獲得目的主機的IP地址后即可進行通信。若本地域名服務器不能回答該請求,則此域名服務器就暫時成為DNS中的另一個客戶,并向其他域名服務器發(fā)出查詢請求。

      域名解析過程分為兩種類型:遞歸查詢和迭代查詢。一般主機向本地域名服務器的查詢采用遞歸查詢,而本地域名服務器向根域名服務器的查詢通常采用迭代查詢。

      所謂遞歸查詢,就是如果主機所詢問的本地域名服務器不知道被查詢域名的IP地址,那么本地域名服務器就以DNS客戶的身份,向其他根域名服務器繼續(xù)發(fā)出查詢請求報文(替主機完成查詢請求),而不是讓該主機自己向根域名發(fā)出查詢請求。因此,遞歸查詢返回的查詢結果或者是所要查詢的IP地址信息,或者是返回無法查詢到結果提示信息。

      而迭代查詢是指當本地域名服務器向根域名服務器發(fā)送查詢報文后,根域名服務器要么直接給出IP,要么給出管理所要查詢域名的頂級域名的權限服務器地址,讓其轉向管理頂級域的服務器繼續(xù)查詢,而不是替本地域名服務器進行后續(xù)查詢(如上頁圖1)。同理,當頂級域名服務器收到查詢報文后,要么直接給出IP地址,要么給出管理二級域名的權限服務器地址,讓其轉向查詢。最后,知道了所要解析的域名的IP地址之后把這個結果返回給發(fā)起查詢的主機。

      2.系統(tǒng)通信框架結構分析設計

      正如前面所述,當主機向本地域名服務器發(fā)送查詢請求后,若本地域名服務器不能回答該請求,則此域名服務器就暫時成為DNS中的另一個客戶,并向其他域名服務器發(fā)出查詢請求。所以在DNS系統(tǒng)當中,域名服務器在充當“服務器”角色的同時,也可以擔當“客戶端”角色,因此通信模型的設計是基于點對點的網(wǎng)狀通信模型(如上頁圖2)。

      3.系統(tǒng)功能模型分析設計

      本文所說的DNS仿真系統(tǒng)核心功能模塊由四項組成:基于TCP協(xié)議的非阻塞通信模塊、報文封裝構建模塊、報文解析查詢模塊、數(shù)據(jù)庫訪問模塊。

      非阻塞通信模塊:完成基本的服務器與服務器之間的連接通信,包括端口監(jiān)聽、連接建立、信息收發(fā)等功能。

      報文封裝構建模塊:主要完成DNS查詢報文或者響應報文的格式封裝。

      報文解析查詢模塊:完成報文的解析,以及根據(jù)報文包含的信息進行查詢工作,如查詢A記錄、PTR指針信息。該模塊的運行需要依賴通信模塊及報文封裝構建模塊。

      數(shù)據(jù)庫訪問模塊:該模塊利用ADO.NET 2.0技術,實現(xiàn)對SQL Server 2008 Express中數(shù)據(jù)庫的數(shù)據(jù)訪問功能,在本系統(tǒng)中,所有的Transact-SQL語句運行均采用存儲過程形式,并通過ADO.NET組件將結果集以SqlDataReader或者DataSet形式返回。之所以利用存儲過程,一方面是因為已編譯的SQL語句可以有效提高數(shù)據(jù)查詢效率,另一方面也保證了數(shù)據(jù)訪問的安全性。

      DNS仿真實驗詳細構成

      1.數(shù)據(jù)庫設計

      頂級域名表,存放于根域名服務器(如表1);二級域名表,存放于管理一級域的權限域名服務器(如表2);三級域名表,存放于管理二級域的權限域名服務器(如表3);域名-IP映射緩存表,存放于本地DNS服務器(如上頁表4)。

      2.數(shù)據(jù)訪問接口設計

      在數(shù)據(jù)庫訪問方面,筆者采用了ADO.NET組件,ADO.NET是一種新的數(shù)據(jù)庫訪問技術,是.NET Framework中用以操作數(shù)據(jù)庫的類庫的總稱,提供對Microsoft SQL Server、Oracle以及OLE DB和XML數(shù)據(jù)源的一致訪問。具體來說,通過ADO.NET,應用程序不但能夠連接到指向數(shù)據(jù)庫的數(shù)據(jù)源,檢索、操作和更新數(shù)據(jù),而且還能實現(xiàn)對其他數(shù)據(jù)格式的訪問。

      3.通信模塊實現(xiàn)

      在通信解決方案中筆者通過線程池來提供線程,線程池中預先創(chuàng)建了一些工作線程,它們不斷從工作隊列中取出任務,然后執(zhí)行該任務,當工作線程執(zhí)行完一個任務后,就會繼續(xù)執(zhí)行工作隊列中下一個任務,從而減少了創(chuàng)建和銷毀線程的次數(shù),每個工作線程都可以一直被重用,提高了并發(fā)性,減緩了系統(tǒng)資源開銷。

      另外,本模塊的非阻塞通信構架,是指當線程執(zhí)行這些方法時,如果操作還沒有就緒,并不會繼續(xù)等待,而是立即返回。具體在.Net中,可以通過委托進行方法的異步調用來實現(xiàn)非阻塞,就是說程序在異步調用方法時,本身并不會因為方法的調用而中斷,而是從線程池中抓取一個線程去執(zhí)行該方法,自身線程(主線程)在完成抓取線程這一過程之后,繼續(xù)執(zhí)行下面的代碼,這樣就實現(xiàn)了代碼的并行執(zhí)行。

      4.DNS報文查詢模塊實現(xiàn)

      查詢模塊DnsQuery是本系統(tǒng)最為核心的一個類,在設計時,將其設定為靜態(tài)類。靜態(tài)類與非靜態(tài)類基本相同,但存在一個區(qū)別,即靜態(tài)類不能實例化,也就是說,不能使用new關鍵字創(chuàng)建靜態(tài)類類型的變量。因為沒有實例變量,所以要使用類名本身訪問靜態(tài)類的成員。

      之所以將DnsQuery類設定為靜態(tài)類,是因為對于只對輸入?yún)?shù)進行運算而不獲取或設置任何內(nèi)部實例字段的方法集,靜態(tài)類可以方便地用作這些方法集的容器。靜態(tài)構造函數(shù)僅調用一次,在程序駐留的應用程序域的生存期內(nèi),靜態(tài)類一直保留在內(nèi)存中。使用靜態(tài)類的優(yōu)點在于,編譯器能夠執(zhí)行檢查以確保不致偶然地添加實例成員。

      5.用戶接口

      在用戶接口設計方面,使用的是Windows窗體應用程序形式。Windows窗體特別適合于豐富圖形用戶界面并非最重要任務的應用程序快速開發(fā)方案。

      總結

      通過DNS域名解析仿真實驗,學生對DNS域名系統(tǒng)有了較為深入的了解。在具體實驗過程中,通過對DNS域名層次空間、報文封裝、解析、查詢流程的認真設計分析和編碼開發(fā),學生可以逐個步驟還原DNS域名解析過程。仿真實驗教學的介入,很大程度上彌補了傳統(tǒng)計算機網(wǎng)絡教學過程中知識點抽象、晦澀,學生難以理解的問題,詳細豐富的實驗設計也讓學生在動手實踐中有章可循并能觸類旁通,既提升了解決具體問題時綜合利用各類計算機編程工具的水平,也對鞏固所學理論知識形成良好的正向反饋。

      參考文獻:

      [1]劉廣鐘,高軍,劉旻,等.報文分析技術在計算機網(wǎng)絡教學中的應用[J].計算機教育,2014(1):76-80.

      [2]謝希仁.計算機網(wǎng)絡(第五版)[M].北京:電子工業(yè)出版社,2008.

      [3](美)W. Richard Stevens.TCP/IP Illustrated, Volume 1: The Protocols[M].北京:機械工業(yè)出版社,2002.

      [4]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論(第四版)[M].北京:高等教育出版社,2006.

      [5]李俊民.SQL結構化查詢語言詳解(第二版)[M].北京:人民郵電出版社,2008.

      平湖市| 铜鼓县| 浮梁县| 达日县| 盐池县| 武汉市| 绵竹市| 红安县| 紫阳县| 民勤县| 和田市| 兴义市| 綦江县| 德阳市| 金湖县| 克山县| 柳河县| 桓仁| 北川| 林芝县| 盐亭县| 安阳市| 铜陵市| 曲周县| 尖扎县| 喜德县| 施甸县| 济宁市| 鄂尔多斯市| 迁安市| 蒲江县| 孟连| 普定县| 抚松县| 余江县| 马公市| 泽库县| 奉新县| 宁都县| 临沂市| 广南县|