在我的一个问题中(“任意操纵 TCP 连接流是否会导致问题?”)我询问 TCP 连接中自愿的延迟是否会导致一些麻烦。
我的 HTTP 代理位于客户端和服务器之间,内部有一个优先级排队机制:来自客户端或服务器的数据包被推送到 prio 队列中,而删除器线程则从 prio 队列中删除最高 prio 数据包。
有人告诉我
问题是 TCP 有一个明确的机制来解决重新排序问题。这可能涉及强制发送方重新发送数据包的 NACK。
TCP 流中字节的“优先级”重新排序最多只会造成大量数据重新发送,因此您的“优先级”会降低一切。但很有可能当 TCP 流中断太多时,任何一方都会放弃。
我知道 TCP 是一种可靠的协议,具有重传丢失数据包和所有其他功能,但我没有考虑到,当从客户端或服务器接收并将数据推送到队列中而不是立即将其发送到服务器或客户端时,TCP对于这种延迟会有一些反对意见。
愚蠢的我。既然(我猜)一旦请求发送到服务器,就没有办法告诉服务器等待向我发送数据包,有没有办法调整TCP的容忍度来判断数据包丢失?它没有丢失,它已被推送到 prio 队列中,一旦删除线程认为轮到它,它就会被发送到目的地,但 TCP 的可靠性可能不同意。