我对FIX 协议在 TCP 上的实现特别感兴趣,但我很高兴更广泛地讨论这个问题。
假设客户端向服务器发送 TCP 段,并且涉及的一些 IP 数据包丢失。然后对于没有完全到达的 TCP 段,客户端将不会收到 ACK。现在通常这是客户端在超时时间过后重新传输 TCP 段的提示。
现在让我们假设客户端最终决定不发送那些丢失的 TCP 段。服务器正确接收到的不完整的段集会发生什么?
服务器是否希望最好,并假设最终丢失的段会到达?是否存在超时,服务器从其缓冲区中清除不完整的信息?如果是这样,一般是多长时间超时?
据我了解,TCP 获取一大块数据并将其切割成通过 TCP会话传输的段。
现在假设我,作为一个客户端,有两个数据块A,B我想发送到服务器。每个chunk被切成3个段,总共形成6个段。
我将通过 Internet 发送这 6 个段,但我不能保证服务器将接收它们的顺序。幸运的是,TCP 服务器为我重新排列了乱序段。
但是,对于我的应用程序,块A和B是完全独立的,因此A如果B已收到所有段,我不希望服务器等待段,反之亦然。实际上,我想要两个独立的 TCP 会话用于块A和B.
客户端和服务器是否可能具有并行、独立的 TCP 会话?查看 TCP 标头条目,我看不到“会话号”。我被迫使用不同的源端口或目标端口?