網(wǎng)絡(luò)編程之Telnet簡單遠程登錄協(xié)議
這里不講解telnet協(xié)議的實現(xiàn)原理,主要用于學(xué)習(xí)telnet實際的編寫方式。 使用的網(wǎng)絡(luò)協(xié)議:tcp/ip?telnet協(xié)議 編程語言:C/C++ 庫:socket套接字
了解telnet協(xié)議
一個簡單的遠程登錄協(xié)議
用于遠程連接目標計算機,使用目標計算機的cmd命令行實現(xiàn)遠程操作。 登錄目標計算機時,必須提供計算機的用戶名和密碼憑證,才能成功登錄。 telnet協(xié)議的基礎(chǔ) telnet的默認端口號:23 客戶端與服務(wù)器通訊步驟: 客戶端連接服務(wù)器。 客戶端等待接收服務(wù)器發(fā)來的一組telnet命令。 客戶端解析命令,以服務(wù)器要求特性(其實就是一個命令中的第三個字節(jié)),以相同的方式,以接受要求的命令(修改第二個字節(jié)),發(fā)回給服務(wù)器。 服務(wù)器接收到以后,發(fā)送普通字符串(歡迎和一個login:),表示要你輸入計算機的用戶名憑證。 客戶端發(fā)送用戶名后,再發(fā)送LFCR(rn),表示準備輸入密碼。 服務(wù)器接收到以后,發(fā)送普通字符串(password:),表示要你輸入計算機的用戶密碼憑證。
客戶端發(fā)送密碼后,再發(fā)送LFCR(rn),表示輸入完成。
服務(wù)器接收到以后,發(fā)送普通字符串:
1) 驗證憑證成功:類似cmd命令行一樣的字符串,例子:C:UserAaron>
2) 驗證憑證失敗:句柄無效。Login Failed
3) 連續(xù)輸入錯誤,默認情況下只能輸錯3次,3次以后服務(wù)器主動斷開與客戶端的連接。
驗證憑證成功,客戶端就像操作自己的cmd命令行一樣,可以遠程操作目標。
每輸入一個字符,發(fā)送到服務(wù)器,服務(wù)器響應(yīng)一個與發(fā)送字符相同的字符,表示你輸入了什么。 發(fā)送LFCR(rn),表示執(zhí)行這一段cmd命令,服務(wù)器就會響應(yīng)cmd命令行執(zhí)行完畢后,信息的反饋。 關(guān)閉客戶端,結(jié)束。 telnet協(xié)議的應(yīng)用層命令
由于不同的系統(tǒng),底層實現(xiàn)的不同,要做到兼容所有計算機,而使用了NVT命令作為一個公共語言進行交流。
一條telnet命令的格式:IAC ?每一條telnet NVT命令的第一個字節(jié)叫做IAC,十進制值為255。 一條telnet命令的格式:IAC 命令 選項碼 ? ? ? 共3個字節(jié)EOF ?236 ?文件結(jié)束符 ?SUSP ?237 ?掛起當(dāng)前進程 ?ABORT ?238 ?異常中止進程 ?EOR ?239 ?記錄結(jié)束符 ?SE ?240 ?自選項結(jié)束 ?NOP ?241 ?無操作 ?DM ?242 ?數(shù)據(jù)標記 ?BRK ?243 ?中斷 ?IP ?244 ?中斷進程 ?AO ?245 ?異常中止輸出 ?AYT ?246 ?對方是否還在運行? ?EC ?247 ?轉(zhuǎn)義字符 ?EL ?248 ?刪除行 ?GA ?249 ?繼續(xù)進行 ?SB ?250(0xFA) ?子選項開始 ?WILL ?251(0xFB) ?同意啟動(enable)選項 ?WONT ?252(0xFC) ?拒絕啟動選項 ?DO ?253(0xFD) ?認可選項請求 ?DONT ?254(0xFE) ?拒絕選項請求 協(xié)議協(xié)商:命令中包含相同的選項值,表示可同意激活或不同意激活的選項,或自身表示愿意激活、不激活 ?注意:下面的發(fā)送方不止代表服務(wù)端,也代表客戶端。WILL ?發(fā)送方本身想要激活此選項 ?DO:同意你激活、DONT:不同意你激活 ?DO ?發(fā)送方想叫接收端激活此選項 ?WILL:我愿意激活、WONT:我不愿意激活 ?WONT ?發(fā)送方本身想禁止此選項 ?DONT:同意你禁止(必須) ?DONT ?發(fā)送方想讓接收端去禁止選項 ?WONT:愿意禁止(必須) 選項碼:1 ?回顯 ?3 ?抑制繼續(xù)進行(禁止繼續(xù)進行) ?5 ?狀態(tài) ?6 ?定時標記(鬧鐘標記) ?24 ?終端類型 ?31 ?窗口大小 ?32 ?終端速度 ?33 ?遠程流量控制 ?34 ?行方式 ?36 ?環(huán)境變量 編寫telnet客戶端程序:
由于代碼過多,不好在這里直接貼出來,我為使用telnet協(xié)議寫了一個C++類,可以很簡單的使用登錄目標計算機,遠程操作,想要學(xué)習(xí)登錄過程,解析Telnet命令的處理,可以下載學(xué)習(xí)一下:
telnet命令 | 重要的telnet命令 | |
---|---|---|
telnet命令 | 十進制表示 | 作用 |
備注 | ||
協(xié)商命令 | 發(fā)送方 | 接收方回應(yīng) |
十進制 | 作用 |