2017-08-03 72 views
1

我有一個Arduino和以太網盾編碼來創建一個簡單的串口到遠程登錄客戶端。這適用於將串行終端程序連接到Telnet BBS類型系統,例如bbs.thebytexchange.com使用端口23的系統。連接到Linux使用Telnet提示

當我使用同一個客戶端與我的Arch盒通信時,它連接正常,但是,我立即從Arch框接收5個字節,然後停止。無論我發送給Arch盒什麼都不會返回。 五個字節(十六進制),如下所示。 18 20 23 27 24.如果我連接運行Raspian的Raspberry Pi,則會返回四個字節(18 20 23 27),並顯示相同的症狀。

我很高興每個Telnet服務器運行良好,因爲我可以使用標準的Telnet應用程序使用Telnet從我的Mac連接並登錄到兩個盒子,我也可以在每臺計算機上Telnet到本地主機。我很高興,因爲我可以使用串行終端(任何)連接到互聯網的Telnet資源,但是,當連接到Linux登錄提示符時,我顯然缺少某些東西,任何想法可能是什麼?

親切的問候

約翰

UPDATE:進一步的調查表明,我所看到的是來自服務器的嘗試讓我洽談幾個選項。我看到的字節每個都以FF開頭(由於FF從監視中被濾除,最初沒有注意到這一點)。的字節是Telnet協議的一部分,並且表示以下含義:

  • FF FD 18註銷
  • FF FD 20的數據輸入端子
  • FF FD 27輸出標記
  • FF FD 24的終端類型

現在的問題是,我該如何迴應?

+0

通過打開telnet二進制文件的套接字級調試,可以獲得有關該錯誤的更多信息。使用'telnet -d '或telnet會話類型'toggle debug'來啓用和禁用調試。 – Gaurav

+0

正如問題中提到的,當使用telnet 時,沒有錯誤。而我的自制Telnet客戶端在連接到Telnet BBS時工作正常,但是,當連接到Linux登錄時,我會收到上述響應。我在想這是我不處理的某種應用協議。 –

+0

通過快速搜索,似乎您可以通過「WONT」回覆響應任何服務器的請求,即服務器:0xFF xx - 您:0xFF 0xFC xx。見例如[這裏](http://mud-dev.wikidot.com/telnet:negotiation)。 – JimmyB

回答

0

JimmyB的幫助下,我發現了需要的方法,以便回答我自己的問題。

如前所述,從Telnet服務器收到的序列是服務器嘗試協商某些連接選項。這些選項旨在增強網絡虛擬終端(NVT)在每端的默認配置。這些選項請求只需要按照JimmyB的建議進行確認。

該過程在RFC854中定義,它清楚地表明我應該用WILL或WONT來響應DO請求,並用DO或DONT來請求請求。

在我的情況下,我不需要這些增強功能,因爲我很滿意連接的默認NVT。因此,爲了進入Linux登錄提示,我使用WONT響應每個DO請求,例如;

當接收到以下DO請求(FD指示DO爲選項18)

FF FD 18 

我用WONT響應(由FC表示)

FF FC 18 

同樣響應如果我已經收到了將要求(FB)

FF FB 18 

我會返回一個不要(FE)

FF FE 18 

我希望這有助於。