Go中的TCP数据包大小

Go中的TCP数据包大小,go,tcp,Go,Tcp,我正在考虑使用Go通过TCP传输1GB的文件 当我看到从net.Conn上读写时,我有点困惑。 我是否需要自己将文件分块以匹配60字节的TCP数据包大小,并为每个分块调用Write,或者这对我来说是透明的,我只是一次写入整个文件 有人能帮我一下吗?您不必担心应用程序级别的数据包大小。使用io.Copy可获得最佳性能,因为在某些情况下它可能会绕过应用程序缓冲。TCP是一个流SOCK_流,在任何形式的API中都没有数据包大小,而不仅仅是Go。此外,如果连接的最大数据包大小为60字节,预期吞吐量非常低

我正在考虑使用Go通过TCP传输1GB的文件

当我看到从net.Conn上读写时,我有点困惑。 我是否需要自己将文件分块以匹配60字节的TCP数据包大小,并为每个分块调用Write,或者这对我来说是透明的,我只是一次写入整个文件


有人能帮我一下吗?

您不必担心应用程序级别的数据包大小。使用io.Copy可获得最佳性能,因为在某些情况下它可能会绕过应用程序缓冲。TCP是一个流SOCK_流,在任何形式的API中都没有数据包大小,而不仅仅是Go。此外,如果连接的最大数据包大小为60字节,预期吞吐量非常低。您可能会混淆TCP数据包头大小和TCP数据包负载大小。有效载荷大小通常在1500左右。但这并不重要,为了获得最佳性能,您应该写入尽可能多的可用数据—它将返回写入的字节数。