gpt4 book ai didi

sockets - TCP 中的数据包大小、窗口大小和套接字缓冲区

转载 作者:可可西里 更新时间:2023-11-01 02:33:32 33 4
gpt4 key购买 nike

在研究了“窗口大小”的概念之后,我的理解是它在通过线路发送之前保留数据包,直到收到最早数据包的确认。一旦填满,后续数据包将被丢弃。我在某处也读到TCP是一种流协议(protocol),而数据包是与网络层的IP协议(protocol)相关的。

直到我假设我已经声明了一个缓冲区(内部代码),我用一些数据填充它并使用套接字发送这个缓冲区。我声明了一个 10000 字节的缓冲区,并使用 socket over 10 Gbps 链接重复发送它。

我有以下假设和问题。请验证并帮助

  1. 如果我想发送一个 64,256,512 等字节的数据包,在那么多空间的代码中声明缓冲区并通过套接字发送。每次执行 send() 命令都会发送一个那么大的数据包。

  2. 如果我想研究数据包大小变化对吞吐量的影响,我该怎么做?我需要在代码中改变缓冲区大小吗?

  3. 我们使用 SO_SNDBUF 和 SO_RECVBUF 设置的套接字缓冲区是什么?谷歌说它是套接字的缓冲空间。它与 TCP 窗口大小相同还是有所不同?哪个参数更适合改变或增加吞吐量?

socket buffer 中也有三个参数:Min,Default 和Max。我应该根据我的实验改变哪一个并获得更多相关性?

最佳答案

If I want to send a packet of 64,256,512 etc. bytes , Declared buffer inside code of that much space and send over socket .Each execution of send() command will send one packet of that much size.

仅当您禁用 Nagle 算法并且大小小于路径 MTU 时。你不能依赖这个。

So if I want to Study the Packet size variation effect on throughput, What I have to do , vary buffer space in Code?

没有。在接收器处改变 SO_RCVBUF。这是吞吐量的最大决定因素,因为它决定了最大接收窗口。

what are the socket buffer which we set using SO_SNDBUF and SO_RCVBUF

在发送方发送缓冲区大小,在接收方接收缓冲区大小。在内核中。

It's Same as TCP Window size

见上文。

or else different ? Which parameter is more suitable to vary to increase throughput ?

见上文。

Also there are three parameter in Socket Buffer min Default and Max . Which one should I vary for My experiment to get more relevance

没有之一。这些是系统范围的参数。只需为应用程序中的特定套接字使用 SO_SNDBUFSO_RCVBUF

关于sockets - TCP 中的数据包大小、窗口大小和套接字缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539342/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com