【问题标题】:Telnet IAC command answeringTelnet IAC 命令应答
【发布时间】:2012-05-11 22:33:39
【问题描述】:

我正在尝试与套接字协商 telnet 连接。 套接字正在工作,但服务器告诉我那件事:

ÿýÿýÿûÿû

login:

ÿýÿýÿûÿû 表示 255 253 1 255 253 31 255 251 1 255 251 3

我阅读了所有 RFC 文档,但我不明白我应该如何响应才能将(字符串 ascii 数据?)发送到服务器,我希望成功运行登录提示,然后将命令发送到服务器像“暂停”或其他东西。

提前感谢您的回答。

【问题讨论】:

  • 一个普通的 telnet 客户端(从命令行)如果没有连接到外部 telnet 端口,它会关闭 IAC/协商。 IAC 代码很容易解析:IIRC 有两字节和三字节序列,在大多数情况下,您可以忽略除回显开/关开关之外的所有内容。在 RFC 中查找。
  • 顺便说一句:帖子中的代码看起来已损坏。 255 + 253 是三字节序列的一部分 (IAC+DO+option_number) 第二个字节 {251,252,253,254} -> 后面还有第三个字节。

标签: sockets networking ip telnet tcpclient


【解决方案1】:

来自RFC 854

自从 NVT 是在未启用任何选项时剩下的,DON'T 和 WON'T 响应保证将连接保持在状态 两端都可以处理。因此,所有主机都可以实现它们的 TELNET 进程完全不知道不知道的选项 支持,只需将拒绝返回(即拒绝)任何 无法理解的选项请求。

也就是说,对于每个WILL,回复DONT。对于每个DO,回复WONT

就您而言,您已收到(请参阅IANA assigned telnet options):

255 253 1    IAC DO ECHO
255 253 31   IAC DO NAWS
255 251 1    IAC WILL ECHO
255 251 3    IAC WILL SUPPRESS-GO-AHEAD

所以你应该回应:

255 252 1    IAC WONT ECHO
255 252 31   IAC WONT NAWS
255 254 1    IAC DONT ECHO
255 254 3    IAC DONT SUPPRESS-GO-AHEAD

请注意,您不必知道 1、3 或 31 的实际含义。这就是美丽。您甚至可以在不知道它们的定义的情况下拒绝这些选项。您将默认使用网络虚拟终端。

【讨论】:

    【解决方案2】:

    在 RFC 854 中查找

    255 253 1  IAC DO #1 
    255 253 31 IAC DO #31
    255 251 1  IAC WILL #1
    255 251 3  IAC WILL #3
    

    现在在here 中查找参数值:1 := echo, 31 := window size。

    【讨论】:

      猜你喜欢
      • 2022-12-02
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2015-08-24
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多