当连接到公共(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/