簡介
在計算機網路工程中存在很多的檢測網路命令,這些命令一般都是單獨運行的。網路命令解釋器是指對網路命令進行解釋並運行的程式,網路解釋器的特點是能對單個網路命令進行解釋並立即運行,而不要編譯整個程式,這有利於通過單個網路命令快速診斷和檢查網路情況,因為解釋的行為會比編譯再運行來得快。
網路命令
在計算機網路工程中的網路命令較多,比如,Ping命令、Tracert命令、還有諸如Netstat命令、Arp 命令等其它網路命令,其原理大致相同,只是套用了不同的命令,所使用的方法各有差異;另一方面,在計算機網路工程之中,網路命令,是保障其網路性能及網路安全的重要途徑。網路命令的優點是一旦計算機網路性能降低甚至出現故障,原先設定的命令就會發出信號,讓用戶及時發現網路安全問題。在具體操作過程中,根據預設設定系統運行的Ping 命令分成四個 ICMP 回送請求,每種請求含有 32 位元組數據,一般情況下可以收到 4 個回送應答。在回送請求與回送應答這段時間內,Ping 命令可以進行計量,甚至精確到毫米。在網路命令的指導下檢測安全問題,有時不只需要一個命令,這些命令的正常運行就代表著計算機安全性能的可靠性,而如果非正常運行,就代表計算機出現故障,需要及時處理。Ping網路命令是一種可在測試網路中較好套用的網際網路搜尋器,其主要作用是傳送來自 ICMP 發出的請求信息包,從而實現對網路連線速度、網路是否正常連線的一種快速網路命令。Ping 網路命令的工作原理主要是所有計算機所擁有的 IP 都是確定的,所以,可根據 IP 地址的不同,管理員發出不同的 Ping網路數據包,發出這個數據包之後,目標計算機就會給出一個對應的數據包,這些數據包對於固定的電腦而言其是固定的。所以,目標計算機就會被網路管理員確定為是否存在,並實現對目標計算機系統的準確判斷。同時,網路管理人員,可以向目標主機或者目標路由器發出 Ping網路命令,路由器與目標主機均會給出對應的回響,實現對計算機網路是否正常進行針對性檢測,對網路功能實現分析,對故障實現診斷。
解釋器運行方法
解釋器運行程式的方法有:
直接運行高級程式語言(如Shell內置的解釋器)
轉換高級程式語言碼到一些有效率的位元組碼(Bytecode),並運行這些位元組碼
以解釋器包含的編譯器對高級語言編譯,並指示處理器運行編譯後的程式(例如:JIT)
Perl,Python,MATLAB,與Ruby是屬於第二種方法,而UCSD Pascal則是屬於第三種方式。在翻譯的過程中,這組高級語言所寫成的程式仍然維持在原始碼的格式(或某種中繼語言的格式),而程式本身所指涉的動作或行為則由解釋器來表現。
使用解釋器來運行程式會比直接運行編譯過的機器碼來得慢,但是相對的這個解釋的行為會比編譯再運行來得快。這在程式開發的雛型化階段和只是撰寫試驗性的代碼時尤其來得重要,因為這個“編輯-解釋-除錯”的循環通常比“編輯-編譯-運行-除錯”的循環來得省時許多。在解釋器上運行程式比直接運行編譯過的代碼來得慢,是因為解釋器每次都必須去分析並翻譯它所運行到的程式行,而編譯過的程式就只是直接運行。這個在運行時的分析被稱為"解釋式的成本"。在解釋器中,變數的訪問也是比較慢的,因為每次要訪問變數的時候它都必須找出該變數實際存儲的位置,而不像編譯過的程式在編譯的時候就決定好了變數的位置了。在使用解釋器來達到較快的開發速度和使用編譯器來達到較快的運行進度之間是有許多妥協的。有些系統(例如有一些LISP)允許解釋和編譯的代碼互相調用並共享變數。這意味著一旦一個子程式在解釋器中被測試並除錯過之後,它就可以被編譯以獲得較快的運行進度。許多解釋器並不像其名稱所說的那樣運行原始代碼,反而是把原始代碼轉換成更壓縮的內部格式。舉例來說,有些BASIC的解釋器會把保留字取代成可以用來在轉移表中找出相對應指令的單一位元組符號。解釋器也可以使用如同編譯器一般的文字分析器和語法分析器然後再翻譯產生出來的抽象語法樹。
可攜性佳,解釋式程式相較於編譯式程式有較佳的可攜性,可以容易的在不同軟硬體平台上運行。而編譯式程式經過編譯後的程式則只限定於運行在開發環境平台。
Small BASIC解釋器包括兩個主要的子系統:一個是表達式解析器,負責處理數字表達式;另一個是解釋器,負責程式的實際執行。對於前者,可採用本書第二章所介紹的表達式解析器。但是在這裡做了某些改進,使得解析器能夠解析包含在程式語句中的數字表達式,而不是只能解析孤立的表達式。
解釋器子系統和解析器子系統包含在同一個解釋器類中,該類名為SBasic。儘管從理論上講可以使用兩個獨立的類:一個包含解釋器,另一個包含表達式解析器;但是將兩者用同一個類來實現的代效率會更高,因為表達式解析器和解釋器的代碼是密不可分的。例如,兩個子系統都操作保存著程式代碼的同一個字元數組。如果將它們分別安排在兩個類中,將會增加可觀的額外開銷,並導致性能上的損失和功能上的重複。此外,由於程式解釋的任務繁重,而解析表達式只是其中的一部分,因此將整個解釋機制包含在單個類中是很有意義的。
解釋器執行時,每次從程式的原始碼中讀入一個標識符。如果讀入的是關鍵字,解釋器就按照該關鍵字的要求執行規定的操作。舉例來說,當解釋器讀入一個PRINT後,它將列印PRINT之後的字元;當讀入一個GOSUB時,它就執行指定的子程式。在到達程式的結尾之前,這個過程將反覆進行。可以看到,解釋器只是簡單地執行程式指定的動作。