TCP会不会破坏小于1kb的数据?

时间:2013-03-19 19:29:09

标签: c# tcpclient

我正在创建一个TCP服务器。我听说你不能总是指望用一个Read读取所有数据,即使它是用一个Write发送的。该协议可能会破坏它。我的问题是,只是为了巨大的数据包,它甚至会打破1kb? 500bytes?尺寸安全吗?

2 个答案:

答案 0 :(得分:2)

您永远不会指望一次读取所有数据。你可以通过设置一个小的MTU来任意分解包。

答案 1 :(得分:1)

使用TCP套接字时,不控制发送的“数据包”。您只需向/从套接字写入/读取字节,协议控制传输的方式和时间。

对方愿意在任何时间接收的数据量实际上是最大值。这被称为“Maximum segment size”。你无法知道这有多大,因为它是由你正在与之交谈的人决定的。它们可能只允许您以最多1k段或仅500字节段发送数据。没有办法知道,除非你可以控制两端。

此外,您写出的字节不仅可以分割成更小的段,而且实际上可以将多个小写组合在一起形成一个更大的段。请参阅Nagle's algorithm