以在網(wǎng)交換機中TELNET的應(yīng)用(丁夫 石冰心) TELNET協(xié)議是當(dāng)今Internet應(yīng)用最廣泛的協(xié)議之一,尤其在使用UNIX操作系統(tǒng)的計算機 上,它已成為不可或缺的一種工具。
更重要的是,TELNET協(xié)議提供了在Internet上異質(zhì)網(wǎng)之 間傳遞數(shù)據(jù)和控制信息的重要方法,具有很重要的實用價值和啟發(fā)意義。在以太網(wǎng)交換機的 設(shè)計中,TELNET服務(wù)器是提供遠(yuǎn)程管理功能的必備部件,在其它各種網(wǎng)絡(luò)產(chǎn)品中它也是必不 可缺的一部分。本文首先介紹了以太網(wǎng)交換機的基本結(jié)構(gòu)和工作原理及TELNET服務(wù)器在其中 的地位和作用,然后介紹了TELNET協(xié)議的內(nèi)容及其實現(xiàn)方法。 1以太網(wǎng)交換機基本結(jié)構(gòu)及工作原理 交換芯片為ASIC芯片,主要完成在瑞口之間交換以太網(wǎng)幀的功能;另外還能提供對VLAN、 組播(Multicast)、生成樹協(xié)議(STP,SPanning Tree Protocol)、RMON、SNMP MIB、流 量控制、三層交換等功能的支持。收發(fā)器負(fù)責(zé)將端口收到的以太網(wǎng)幀送到交換芯片,并將交 換芯片發(fā)出的幀送到端口上。10M/100M自適應(yīng)端口還負(fù)責(zé)10M/100M以太網(wǎng)幀的自適應(yīng)識別 上LED為指示端口狀態(tài)的發(fā)光二極管。虛線框內(nèi)為交換機的管理部分,為交換機提供智能功能, 是可選設(shè)備。CPU為RISC處理器芯片。CPU接口為符合特殊標(biāo)準(zhǔn)的數(shù)據(jù)總線和控制總線的接口 電路。串行接口(Serial,為標(biāo)準(zhǔn)的RS232接口。 交換機的管理部分硬件類似一臺主機,由軟件支持運行。為了達到實時性的要求,支撐 平臺使用實時操作系統(tǒng)(如VxWorks),再輔之以各種應(yīng)用程序構(gòu)成了管理部分的軟件部分。 其中設(shè)備驅(qū)動程序(DeviceDriver)負(fù)責(zé)通過CPU接口與交換芯片交換數(shù)據(jù)和控制信息, 如交換芯片的寄存器的讀寫、交換部分RAM的讀寫、中斷的處理等等。用戶管理界面(User Interface給管理員提供多種反好的人機界面。Shell提供一個菜單式的命令行界面,可以通 過串日或TELNET服務(wù)端口提供管理服務(wù)。SNMP/Web為另外兩種用戶管理界面,它們更友好, 功能也更豐富,分別通過SNMP端口和Web頁面管理交換機。這兩種方式和TELNET方式提供了遠(yuǎn) 程管理的功能。 TELNET服務(wù)器(TELNETDaemon接收從TCP的23號端口遠(yuǎn)程登錄的請求,并建立連接。這條 TCP連接作為Shell與遠(yuǎn)程登錄者之間的通信鏈路,透明地傳輸兩者之間的數(shù)據(jù)和控制信息。 2 TELNET協(xié)議介紹 TELNET協(xié)議提供了雙向的、面向字符(8bit數(shù)據(jù))的通信方式。最初它被用作終端與面 向終端的進程之間通信的標(biāo)準(zhǔn),后來它也用于終端間的點時點通信以及在分布式環(huán)境下進程 間的通信。TELNET使用客戶機/服務(wù)器模式。在本地系統(tǒng)運行TELNET客戶機,而在遠(yuǎn)地主機 則運行TELNET服務(wù)器。TELNET協(xié)議在TCP/IP協(xié)議堆中屬于應(yīng)用層(Application Laver), 工作在TCP層之上;TELNET服務(wù)器程序工作在TCP的23號端口上。TELNET協(xié)議有三個基本概念: 網(wǎng)絡(luò)虛擬終端、選項協(xié)商和對稱性。 2.1網(wǎng)絡(luò)虛擬終端 為了適應(yīng)許多計算機和操作系統(tǒng)之間的差異,TELNET定義了所謂的網(wǎng)絡(luò)虛擬終端(NVT)。 NVT包括鍵盤和打印機,分別對應(yīng)于普通終端的鍵盤和顯示器。在發(fā)送數(shù)據(jù)前先把要發(fā)送的字 符轉(zhuǎn)換為NVT的字符,送給NVT鍵盤;把來自網(wǎng)絡(luò)的數(shù)據(jù)(NVT字符)送給NVT打印機,經(jīng)過NVT 打印機過濾的字符交給上層軟件處理。 2.2選項協(xié)商 NVT并不能解決通信中所有的問題,TELNET定義了自己的一些控制命令。通過TELNET的選 項協(xié)商(Option Negotiation),客戶機和服務(wù)器可以協(xié)商使用更多的終端功能。協(xié)商的對 話模式有四種:WILL;WONT;DO;DONT。 2.3對稱性 由于進行選項協(xié)商的兩端是平等的,任一端都有可能將對方的確認(rèn)命令當(dāng)成是請求命令 而再次發(fā)出響應(yīng)命令,這樣就會造成協(xié)商過程的無限循環(huán)。為了避免循環(huán)的發(fā)生,協(xié)商過程 應(yīng)遵循下面三個規(guī)則: a.只為選項的變化發(fā)出請求; b.接收到的請求如果要求自己進入已經(jīng)具有的狀態(tài),此請求將不被理睬; C.當(dāng)一端向另一端發(fā)送一個協(xié)商命令時(請求或響應(yīng)),如果該選項的使用(接受)將 影響到對方對接收數(shù)據(jù)的處理,那么這個命令應(yīng)該被插入到該選項開始起作用的數(shù)據(jù)流的首 部(建立這一規(guī)則是因為從請求命令的發(fā)出到接收到響應(yīng)命令將會有一定的時延)。 3 TELNET協(xié)議的實現(xiàn)方法 雖然實現(xiàn)TELNET的應(yīng)用程序有服務(wù)器和客戶機之分,但如前所述,運用TELNET協(xié)議進行 通信的兩方是完全對稱的,就此而言是不分服務(wù)器和客戶機的。這里僅描述其中一方的軟件 實現(xiàn),另一方的軟件是完全相同的。 3.1概述 TELNET軟件可由三大部分組成:NVT鍵盤、NVT打印機和命令解釋執(zhí)行體。 出流輸出NVT鍵盤所允許的字符和命令。如果輸出的是命令字符,調(diào)用命令執(zhí)行體完成 相應(yīng)功能;如果是普通字符,則可以將之發(fā)送到網(wǎng)絡(luò)上。 NVT打印機的工作很簡單:網(wǎng)絡(luò)上輸入的數(shù)據(jù)如果在所支持的95個字符內(nèi),直接交給上 層軟件;如果輸入的數(shù)據(jù)為前面所述的八個特殊字符(NUL、LF、CR、BEL、BS、HT、VT和FF), 把它們轉(zhuǎn)換為本機所使用的相應(yīng)字符再上傳;對于其他字符,一律拋棄處理。 命令解釋執(zhí)行體將混雜在輸入流中的TELNET命令分離出來,解釋之后執(zhí)行相應(yīng)的操作。 它通過直接寫SOCKET發(fā)送TELNET命令。此外,NVT鍵盤和打印機的工作方式(如回顯、二進 制方式收發(fā)等)都要受到命令解釋執(zhí)行體的選項協(xié)商結(jié)果的影響,因此命令解釋執(zhí)行體還要 通過選項來影響它們的工作方式。 3.2命令解釋執(zhí)行體的實現(xiàn) 命令解釋執(zhí)行作要接收識別TELNET命令序列,具有較多的狀態(tài),是實現(xiàn)的難點。用有限 狀態(tài)機(Finite State Machine)來記錄狀態(tài)問的變化轉(zhuǎn)移,并執(zhí)行相應(yīng)的操作,可以大為 簡化程序的設(shè)計、提高編程效率,更能增強源代碼的可讀性,是實現(xiàn)命令解釋執(zhí)行體的理想 方法。 4結(jié)果及結(jié)論 為了突出重點,這里所示的FSM只支持TELNET協(xié)議中回顯、二進制發(fā)送和抑制GA等基本 選項,并且沒有支持子協(xié)商選項(Sub-Negotiation)。但根據(jù)這里所使用的原理,其他的 選項協(xié)商和子協(xié)商的內(nèi)容都可以很容易加入。 筆者按照上述原理和實現(xiàn)方法實現(xiàn)的TELNET服務(wù)器程序在VxWorks上運行正常,能夠滿足 從不同系統(tǒng)的登錄連接。
|