telnet - 连接到公共(public)路由服务器时,netcat 与 telnet 的不同行为

标签 telnet netcat

当连接到公共(public)路由服务器 bgp-view.tvnetwork.hu 并发出命令 show ip bgp 时,我观察到 netcat 和 telnet 之间存在不同的行为。

使用 Telnet 时,输出(通常有几万行长)会被截断,为了查看全部内容,您必须按空格键或 Enter 键才能继续(如手册页)。当我与 netcat 连接时,它只是开始转储所有输出,并且在前几百行之后它会挂起。即使我明确声明我想使用命令 terminal length 100 在前 100 行之后暂停,netcat 也不会改变行为。

您知道为什么会发生这种情况以及如何解决吗? 我的操作系统是ubuntu 10.4,路由服务器运行Quagga(版本0.99.5)。对于其他类型的路由器(思科或瞻博网络),不会出现该问题。

谢谢。

ps。我想将问题标记为路由服务器,但我无法创建新标签:(

编辑:

问题是 netcat 不协商窗口大小(请参阅下面我的回答)。 Netcat 的 -t 参数用于协商 telnet 选项,但它会回复否定(DON'T 或 WON'T),因此问题是如何使 netcat 协商 telnet 选项。也许我会针对此事发布一个新问题。

最佳答案

好的,用wireshark解决了这个谜团。

问题出在 telnet 选项的协商上。 服务器从 telnet 客户端请求“协商窗口大小”,但客户端没有进行协商,即使使用 -t 选项,netcat 也会回复“不会协商窗口大小”。

我使用 apache commons 库创建了一个 java telnet 客户端,以使用 WindowSizeOptionHandler() 构造函数协商窗口大小,并且工作正常。现在我只需要找到如何使用 netcat 来做到这一点。

关于telnet - 连接到公共(public)路由服务器时,netcat 与 telnet 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494242/

相关文章:

python - 如何使用 python 的 telnetlib 在固定时间段内从设备获取数据?

linux - telnet aspmx.l.google.com 并首先尝试 ipv6

c# - xbox 上开放了哪些端口?它会响应 ping/TCP 连接吗?

bash - Pop3 服务器中的 LIST 命令

java - 在 Android 中通过 exec 函数运行 Ping

python - 无法从 Linux 电脑 telnet 到 Windows 电脑 "login Failed error"

f# - 解析传入 TCP 流的 Ascii 字符,处理退格字符

bash - 从 docker 容器访问主机的 ssh 隧道

hadoop - Apache Flume : cannot commit transaction. 达到堆空间限制

linux - 即使使用 -k 选项,'nc' 命令也会停止