到底要不要走TCP隧道,要不要TCP over TCP?
还是这篇文章: http://sites.inka.de/sites/bigred/devel/tcp-tcp.html 有100个理由说TCP在某种场景下不好,就有100个理由说TCP在同样的场景了好的不得了,这就好像面对中医或者传统武术一样, 古老陈旧的东西总是被拿来被吹捧或者被打压。 TCP是个30年前陈旧的协议,在计算机网络的编年史中,TCP是一个古代的协议。 TCP在长距离传输时窗口打开太慢; TCP对丢包无法预测; TCP对RTT测不准; TCP对网络拥塞事件反应迟钝; … 这是一个保守的协议。 数据要传输到另一个地方,中间要经过一个隧道,如何构建这个隧道是一个技术问题。 考虑TCP over TCP会怎样? TCP作为一个按序接收的有状态可靠的端到端传输协议,是因为它对下层的链路做了一个假设: 下层是不可靠的!! TCP的很多特性都源自于这个 不可靠假设 。所以TCP屏蔽掉这个假设之后, TCP是可靠的! TCP over TCP?TCP同时作为链路协议和负载协议?是的! 那么 在TCP over TCP中,不可靠假设就失效了! ,因为 TCP是可靠的! 只要内层TCP的RTO超时时间小于外层TCP的RTO超时时间,悲剧就发生了,指数退避会让连接崩溃。 但是,这很少发生,在支持FACK/SACK/RACK的 现代TCP 中,RTO很少被触发