Windows Server 2016 服务器 telnet远程设备,需要等9秒多才能连上,ping 正常,网上找各种原因,尝试了反向域名解析的方法,还是无效。
后来通过抓包发现:
第一次,发送等待3秒,失败;第二次发送等待6秒,失败,第三次成功。
查询官方文档,因为windows server 2016中的ECN功能默认是开启的,ECN利用了TCP/IP中未使用的字段来支持功能,目的是为了减少网络拥堵,但网络中间的各种设备可能不支持,并把该字段不为0的包丢弃。
telnet的时候第一次发送带ECN标志的SYN包,3秒后未收到响应,接着发第二次,6秒后未收到相应,第三次会采用不带ECN的SYN包,即可成功,所以导致telnet需要9秒多才可以连上。
解决办法很简单,管理员模式运行CMD,执行 netsh int tcp set global ecncapability=disabled 关闭此功能即可。