2017-03-25 26 views
-2

我想从客户端发送文件到服务器。我想通过将文件分解成每个1000字节的数据包大小并将其逐一发送来发送它。现在,在服务器收到数据包之后,它可能会损坏。那么,我是否应该使用一个头文件并将数据包的校验和与数据包一起发送,并在服务器收到后检查它们是否匹配?或UDP有一个默认功能来自动检查校验和?UDP连接发送后是否负责分组校验和?

+0

https://en.wikipedia.org/wiki/User_Datagram_Protocol#Checksum_computation – Barmar

+0

UDP校验和在IPv4上是_optional_,但在IPv6上是_required_。 –

回答

0

是的,UDP有一个校验和自动检查数据包。你可以阅读关于Wikipedia的算法。

许多操作系统都有一个选项,用于控制校验和是否完成,直到20世纪90年代为止,出于性能方面的考虑,这是常见的。我认为现在大部分都已启用,很可能是由许多NIC自动完成的。

0

UDP有一个16位校验和,如果有不匹配,你的操作系统可能会丢弃数据包。但是,您可以将此校验和设置为0以绕过检查,并实现您自己的检查。

但是如果你首先使用UDP,你应该期望某些数据包丢失或丢失。这在传输文件时播放不好,所以我建议你使用TCP。

+0

谢谢。我试图使用UDP并通过ACK手动建立类似TCP的连接。所以,如果操作系统丢弃数据包,服务器应该再次发送它,对吧?假设我不想丢包。 – Manohar

+0

不,如果推送一个小尺寸的对象,请从服务器客户端快速发送请求的错过部分。 UDP加速和非块通信的选择(如流),为什么不推动为'静态文件(www_style)? @Manohar – dsgdfg