在SSH传输层协议规范http://www.ietf.org/rfc/rfc4253.txt,“4.2。协议版本交换”一节中,它说:“当建立连接时,双方必须发送一个标识字符串。”。
但它没有定义哪一方应该启动这个过程,服务器端还是客户端?
这里有一些观察,
在http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-4/124_ssh.html,“图2:SSH传输层协议数据包交换”中,客户端启动交换过程。
我尝试使用JSCH作为客户端连接服务器,这是快照。服务器端首先发送SSH协议版本。
这是一个问题,JSCH和SSH服务器都不发送协议版本。 TCP连接在93,94,95包中设置.5秒后,服务器端关闭包99中的连接。
你能帮助弄清楚为什么客户端和服务器都不发送协议版本?非常感谢!
此致 乔伊
答案 0 :(得分:0)
但它没有定义哪一方应该启动这个过程,服务器端还是客户端?
正确。由于双方都必须发送它,而且两者都没有被定义为对另一方的回应,所以首先这样做是无关紧要的。
答案 1 :(得分:0)
是的,我们发现某些cisco包不会发送其版本字符串 没有收到客户端的版本字符串。 最近的jsch版本将立即发送。