增加TCP/IP窗口大小

Lee*_*Lee 1 c# tcp windows-server-2008-r2

我试图通过tcp/ip在两台服务器之间发送消息.我想发送一个30KB的消息.但是我想把它作为一个整体发送出去.我不希望tcp协议将其分解为段.

我正在使用2台Windows Server 2008 R2之间的通信.客户端和服务器使用c#编码.我试着用

tcpclnt.SendBufferSize = 100000;
tcpclnt.Client.DontFragment = true;
Run Code Online (Sandbox Code Playgroud)

和服务器上的相同.

我也尝试配置服务器的窗口大小(编辑注册表).

Mik*_*sch 6

我强烈建议你进一步研究IPv4TCP,以及以太网千兆以太网(特别是巨型帧).

基本上,对您的问题的简短回答是,尽管IP头允许完整数据报的最大大小为64kb,但您无法发送包含30kb TCP有效负载的单个IP数据报.

这样做的原因是底层网络(很可能是以太网或千兆以太网)将具有较小的帧大小,因此需要对IP数据报进行分段,以便在帧大小限制内通过物理网络传输该数据报.网络.

TCP协议确保成功交付完整,未损坏的数据报(通过自动重组,自动检测损坏的数据报以及丢失或损坏的数据报的自动重传),因此除非您有高度专业化的要求,否则您应该能够让TCP堆栈将您的消息分段并代表您重新组合.