tcp - telnet 连接收到的前 4 个字符串是什么?

标签 tcp bytearray telnet

我正在为我的应用程序模拟一个 telnet 服务器。当我通过 telnet 连接到我的应用程序时(仅使用 putty 进行本地连接)我总是在初始连接时收到这 4 个序列。

    ByteString(-1, -5, 31, -1, -5, 32, -1, -5, 24, -1, -5, 39, -1, -3, 1, -1, -5, 3, -1, -3, 3),
    ByteString(-1, -2, 31, -1, -2, 32, -1, -2, 24, -1, -2, 39, -1, -4, 1),
    ByteString(-1, -5, 36),
    ByteString(-1, -2, 36)

我想,如果我将这些返回给客户端,连接就成功建立了。但我更想知道这些是什么以及我应该如何以及是否应该以不同的方式处理它们。

谢谢

最佳答案

它们是 Telnet 命令序列。

-1 -5 31 = IAC WILL NAWS
-1 -5 32 = IAC WILL TERMINAL-SPEED
-1 -5 24 = IAC WILL TERMINAL-TYPE
-1 -5 39 = IAC WILL NEW-ENVIRON
-1 -3 1  = IAC DO   ECHO
-1 -5 3  = IAC WILL SUPPRESS-GO-AHEAD
-1 -3 3  = IAC DO   SUPPRESS-GO-AHEAD
-1 -2 31 = IAC DONT NAWS
-1 -2 32 = IAC DONT TERMINAL-SPEED
-1 -2 24 = IAC DONT TERMINAL-TYPE
-1 -2 39 = IAC DONT NEW-ENVIRON
-1 -4 1  = IAC WONT ECHO
-1 -5 36 = IAC WILL ENVIRON
-1 -2 36 = IAC DONT ENVIRON

阅读RFC 854 , RFC 855及其他related RFCs定义 Telnet 协议(protocol)及其 various options (有很多)。

关于tcp - telnet 连接收到的前 4 个字符串是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259662/

相关文章:

java - 写入 TCP Netty ChannelGroup 中除一个以外的所有内容

go - 为什么我说 8 时 Golang 不给我 8 个字节?

.net - 从 .NET Web 服务返回多个图像

java - 如何将 byte[] 转换为 bytebuffer native 内存?

python - 在 Python 3.2 上清除 telnetlib 中的输出缓冲区

bash - 当我将任何命令通过管道传输到 telnet session 时会发生什么,为什么 session 会关闭

c# - 从 .NET 应用程序访问 TCP/IP 路由信息

c++ - 成功接收后清空缓冲区

linux - 使用 Linux::TunTap 读取数据包

Python - 从旧式类继承