C#深刻理解TCP通信(总有你懂的)
牧草177 2013-10-10 10:10:55 使用C#和TCP已经可以传输数据甚至文件了,但是对于如何提高传输性能,一直感到很困惑(不是计算机网络通信相关专业的)。提出来,请大家一直帮助讨论一下!
TCP传输有两个策略,一个是发送端的Nagle算法,一个是ACK延迟反馈机制。网上虽然有很多资料,但都将讲的不深,所以我对这两个理解也就有了问题。
1、发送端在发送数据时,c#默认是启用Nagle算法的,说是要等到数据包达到一定大小或超过一定时间才会发送出去。
a.请问一下,这个数据包大小到底是多大?这个超时时间是多长呢?
b.再一个,在有些数据采集系统中,可能采集的数据才几十字节,比如30个字节。用TCP协议传送,额外好像需要多出44个字节。那如果在没超时的情况下,数据采集系统采集了10次,用Nagel算法组合的数据包长度时应该44+30*10,还是(44+30)*10呢?
c.如果取消Nagle算法,应该就是有数据就直接发出去,没有延迟的吧!数据长度时44+30个字节?
2、接收端ACK的延迟反馈,一个是随着数据顺带反馈回去,一个是超时反馈回去
a.随着数据顺带反馈回去的时候,接收端实际上也变成了发送端,在默认情况下,是否也会起动Nagle算法?
b.如果是超时反馈的话,这个时间阈值时多少呢?我看有点说是200ms,有的说是40ms,到底应该是多少呢?