Sockets TCP套接字上的视频流中的RST?

Sockets TCP套接字上的视频流中的RST?,sockets,networking,tcp,network-programming,video-streaming,Sockets,Networking,Tcp,Network Programming,Video Streaming,我有一个UDP视频流的应用程序,它的工作完全成功。我将套接字更改为TCP。当它在几次数据包传输后运行时,接收器发送RST并停止工作。(MTU为1400时,从发送方传输到接收方的大长度数据包也很奇怪-这是什么数据包?) 我检查了收件人和发件人的日志。接收器接收到的最后一个数据包有一个大而奇怪的序列号(转储数据包)。它出错,然后应用程序停止。发送方没有发送这样的数据包。这个包裹是从哪里来的?是传输层造成的吗 当我在每次发送数据包后向发送方添加睡眠时间(0.1秒)时。该程序在Wireshark中没

我有一个UDP视频流的应用程序,它的工作完全成功。我将套接字更改为TCP。当它在几次数据包传输后运行时,接收器发送RST并停止工作。(MTU为1400时,从发送方传输到接收方的大长度数据包也很奇怪-这是什么数据包?)

我检查了收件人和发件人的日志。接收器接收到的最后一个数据包有一个大而奇怪的序列号(转储数据包)。它出错,然后应用程序停止。发送方没有发送这样的数据包。这个包裹是从哪里来的?是传输层造成的吗

当我在每次发送数据包后向发送方添加睡眠时间(0.1秒)时。该程序在Wireshark中没有任何奇怪的大长度数据包,也没有奇怪的序列号,但这对于视频来说不是一个合理的解决方案。
你现在有什么建议?有什么问题吗?如何分析这个网络?怎么才能解决呢?

这不是一个奇怪的长度。这可能是tcp卸载。看见
ethtool-k接口。关闭卸载,然后重试。rst可能与此无关。这可能是一个应用程序问题

这不是一个奇怪的长度。这可能是tcp卸载。看见
ethtool-k接口。关闭卸载,然后重试。rst可能与此无关。这可能是一个应用程序问题

将套接字类型从TCP更改为UDP的基本原理是什么?从UDP更改为TCP。我将研究两者之间的差异,稍后我将尝试实现一个基于TCP的新协议。通常情况下,环回接口(地址为127.0.0.1的接口)上的MTU在linux上为64K(MAC上为16K,Windows不确定)。应用程序缓冲区的大小并不直接决定每个TCP数据包中发送的数据量。操作系统可以在决定发送时(取决于MTU、接收器窗口等)将尽可能多的数据放入TCP有效负载。您可能需要查看
TCP\u节点延迟
选项(请参阅
TCP(7)
手册页)。我按照您的建议阅读了关于TCP\u节点延迟的内容。所以这个大的TCP数据包不是问题,RST还有另一个原因,是的?将套接字类型从TCP更改为UDP的基本原理是什么?从UDP更改为TCP。我将研究两者之间的差异,稍后我将尝试实现一个基于TCP的新协议。通常情况下,环回接口(地址为127.0.0.1的接口)上的MTU在linux上为64K(MAC上为16K,Windows不确定)。应用程序缓冲区的大小并不直接决定每个TCP数据包中发送的数据量。操作系统可以在决定发送时(取决于MTU、接收器窗口等)将尽可能多的数据放入TCP有效负载。您可能需要查看
TCP\u节点延迟
选项(请参阅
TCP(7)
手册页)。我按照您的建议阅读了关于TCP\u节点延迟的内容。所以这个大的TCP数据包不是问题,RST还有另一个原因,是吗?