我在c#中进行应用程序。在该应用程序中,我想使用UDP协议广播一些数据。我正在使用socket作为
IPEndPoint ipep = new IPEndPoint(IPAddress.Broadcast, Convert.ToInt32(ServerPort));
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint ep = (EndPoint)ipep;
socket.SendTo(m_SendBuffer, ep);
这里m_SendBuffer包含我想要发送的数据。 但每当我通过wireshark观察流量时,它显示协议IPV4并显示信息为“碎片化IP协议”。请帮助我为什么会这样?提前谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
任何给定的网络链接都会在每个IP数据报上强制执行最大大小。最常见的是1500字节。 UDP和IP有28个字节的标头,因此有效负载为1472字节。
如果发送的数据不止于此,则每个数据包将被分解为片段。这些在网络中通过在IP报头中添加片段id来区分。如果所有碎片都到达目的地,它们将在到达接收应用程序之前重新组装成一个完整的数据包。
碎片通常很糟糕,原因如下:
但避免分裂是棘手的。网络中的其他内容(如MPLS,PPPoE或VPN)可能会添加更多标头,从而减少每个数据包可以安全发送的数据量。为了安全起见,请将数据包保持在1400字节以下。为了确保安全,请将其保持在500字节以下。