[alibaba/arthas]arthas telnet协议和http协议识别问题

2024-07-17 834 views
8

因为是对代码的一些疑惑,不是程序自身的问题,所以没有按照模版进行提问

我看了3.6.1的代码,src/main/java/com/taobao/arthas/core/shell/term/impl/httptelnet/ProtocolDetectHandler.java这个文件中,如果请求在1000ms之内没有发送数据就认定为是telnet协议,如果发送了GET就认为是http协议,验证确实如此,在3.6.8版本的代码中发现这段代码是没有变化的,但是实际测试中发现,如果以socket方式连接arthas端口,不发送任何内容,服务端也不会做任何返回,这个是哪部分代码改动造成的呢?

背景是我这边希望通过代理去访问arthas以增加认证鉴权能力,但是在3.6.1版本会出现因为请求速度问题(三次握手完成时间和发送http请求时间间隔>1s)导致的http请求识别为telnet的问题,想请教下,在3.6.8这部分的改动是在哪里实现的

回答

9

3658 端口是同时支持 http/telnet的。 8563 是只支持 http ,可以调 8563 。

6

感谢老哥,没注意到这里两个端口的区别,还想确认一下,我关闭掉3658,只保留8563,然后对8563做限制,这样是可以正常调试的吧

7

独立的,不影响。可以找下初始化代码看下。

0

明白了,我去看看,没有其他疑问,感谢老哥解答,在问题里我有一个误区,并不是高版本在协议识别这里有区别,而是我测试的端口号刚好误打误撞测试到了http端口,所有版本的协议识别逻辑都是ProtocolDetectHandler中的逻辑