在Opendaylight中,我们发送openflow的多部分请求,为什么wireshark可以在单个数据包中看到累积的多部分请求?

问题描述

像这个数字一样,enter image description here 我可以在此数据包中找到许多openflow1.3,它们是多部分请求,但我不知道为什么会在这里发生? 实际上,这里不是只有一个openflow1.3吗? 它与openflow有关吗java是否进行序列化,wireshark,NIC,tcp nagle的算法? 谢谢!

解决方法

TCP是字节流,即从应用程序层(即OpenFlow)的角度来看,数据包没有语义。在传输级别,单个TCP数据包中可以有多个应用程序层“消息”,消息跨越数据包边界等-对于应用程序来说并不重要。尽管由于应用程序中的时间安排以及可能禁用NAGLE算法,通常TCP数据包边界通常也是消息边界,但TCP数据包边界始终是消息边界的假设是错误的,对此的任何依赖通常会导致零星的问题并难以重现。

基于此,您看到的也不是“多部分请求”。这些只是在同一时间或彼此之后不久发送的多个OpenFlow消息(应用程序级别),它们被放到同一传输级别实体(数据包)中,因为这样可以减少传输每个消息的开销。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...