TCP接收缓冲区

时间:2017-04-24 18:40:43

标签: c networking tcp

C代码中引用的缓冲区之间有什么区别,如

recvfrom(sock, buffer, 20, 0, (struct sockaddr *)&c_addr, &addr_size);

和可以通过设置套接字选项调整其大小的缓冲区(在C中,但我认为其他编程语言具有相同的套接字选项)?

我的困惑来自缓冲区,称为"缓冲区"在recvfrom代码中可以合理地称为接收缓冲区,它也是TCP中使用的缓冲区的名称。我想澄清一下,recvfrom代码中提到的缓冲区是一种不同的缓冲区,也许差别是什么。

假设它们不同,就5层网络模型而言,第二类缓冲区基本上只适用于传输层,并且在应用程序中通常不可修改(除了能够更改其常规属性,如大小)层?换句话说,TCP接收缓冲区中的数据是否传递到缓冲区,称为"缓冲区"在recvfrom代码?

1 个答案:

答案 0 :(得分:0)

您引用的接收缓冲区是OS中的内部缓冲区,其中在用户空间程序通过recvrecvfrom函数调用访问它之前存储传入数据。

这与上面代码中的buffer不同,因为它是一个应用程序缓冲区。

如果应用程序没有比操作系统接收数据包更快地读取数据包,则操作系统中的接收缓冲区将会满,数据包将被丢弃。