【发布时间】:2018-01-17 09:08:46
【问题描述】:
我有一个相当新手的问题:假设我有两个设备通过以太网 (TCP/IP) 以 100Mbps 的速度进行通信。一方面,我将为设备提供要传输的数据。另一方面,我将使用接收到的数据。我有能力为两个设备选择足够的缓冲区大小。
现在我的问题是:如果第二个设备的数据消耗率比第一个设备的数据传输率慢,那会发生什么?
我找到了一些,谈论溢出计数器。
以太网通信中是否有任何内容表明设备正忙并且无法接收新数据包?所以我可以暂停接收设备的传输。
谁能给我一份或多份详细解释这个问题的文件,因为我没有找到。
提前谢谢你
【问题讨论】:
-
TCP 的flow control 会处理这个问题。物理层不关心,它最多会使用 CRC 来检查帧内的错误和其他与帧相关的检查,与传输速率无关。
-
感谢您的有用评论,此链接 brianstorti.com/tcp-flow-control 也详细解释了我正在寻找的内容。关键工作是 TCP 的流量控制
-
TCP/IP 和以太网是两个不同的堆栈,请在下面找到我的答案。
-
您想根据接口查找带内和带外的流量控制,理想情况下,您希望流量控制告诉发件人在您已满时暂时停止向您发送内容。如果您不这样做,则根据设计,您将以某种形式溢出,理想情况下,某些缓冲区开始丢弃数据包。有时您可以在该缓冲区中设置高水位线,以确定它开始执行此操作的级别。
-
那么一旦数据包丢失,只要您不通过填充缓冲区和背压来挂断发送方或接收方,TCP/IP 等协议就不会关心数据包丢失,它们会重试。有些协议不会重试...