Tcp 以太网接收缓冲区已满时会发生什么情况

Tcp 以太网接收缓冲区已满时会发生什么情况,tcp,embedded,ethernet,Tcp,Embedded,Ethernet,我有一个很新的问题:假设我有两个设备通过以太网(TCP/IP)以100Mbps的速度通信。在一侧,我将向设备提供要传输的数据。在另一端,我将使用接收到的数据。我有能力选择两个设备的适当缓冲区大小 现在我的问题是:如果第二台设备的数据消耗率比第一台设备的数据传输率慢,那么会发生什么 我找到了一些,谈论超限计数器 以太网通信中是否有任何东西表明设备正忙,无法接收新数据包?所以我可以暂停从接收器设备传输 有没有人能给我提供一份或多份详细解释这个问题的文件,因为我没有找到 感谢您提前以太网协议在MAC控

我有一个很新的问题:假设我有两个设备通过以太网(TCP/IP)以100Mbps的速度通信。在一侧,我将向设备提供要传输的数据。在另一端,我将使用接收到的数据。我有能力选择两个设备的适当缓冲区大小

现在我的问题是:如果第二台设备的数据消耗率比第一台设备的数据传输率慢,那么会发生什么

我找到了一些,谈论超限计数器

以太网通信中是否有任何东西表明设备正忙,无法接收新数据包?所以我可以暂停从接收器设备传输

有没有人能给我提供一份或多份详细解释这个问题的文件,因为我没有找到


感谢您提前

以太网协议在MAC控制器芯片上运行。MAC有两个单独的RX环(用于入口数据包)和TX环(用于出口数据包),这意味着它本质上是全双工的。RX/TX环也有片内FIFO,但环将PDU保存在主机内存缓冲区中。我已经在一个相关的

现在,可能会发生拥塞,但RX和TX是两条不同的路径,将由以下情况引起

  • 与线路速率相比,rx缓冲器/tx缓冲器的队列/解队列不快。这种情况发生在CPU繁忙且没有足够快地鸣响中断时
  • 主机内存较慢(例如:DRAM而非SRAM),或内存不足(由于内存泄漏)
  • 缓冲区的中间处理时间过长
  • 现在,关于对等设备:背压可以在独立系统中处理,当发生这种情况时,我们通常会尾部丢弃数据包。这对对等设备来说是不可知的,如果对等设备速度慢,则说明该设备存在问题

    超限的定义是:由于输入速率超过接收器处理数据的能力,接收器硬件无法将接收到的数据处理到硬件缓冲区的次数

    我建议您选择任何MAC控制器的数据表(例如:),您将了解所有问题。或者,如果您看到任何MAC控制器的设备驱动程序


    TCP/IP是上层堆栈,位于内核内部(也可以位于用户平面),而ARPA协议(以太网)位于MAC控制器硬件内部。如果您了解这一点,您将了解路由器和交换机之间的区别(在没有TCP/IP堆栈的情况下)

    由TCP来处理这个问题。物理层不关心,它最多会使用CRC检查帧内的错误和其他与帧相关的检查,与传输速率无关。感谢您的有益评论,此链接还详细解释了我要查找的内容。关键工作是TCP的流量控制TCP/IP和ethernet是两个不同的堆栈,请在下面找到我的答案。你想查找流量控制,根据接口的不同,通常有带内和带外流量控制,理想情况下,你想让流量控制告诉发送者在你吃饱时暂时停止向你发送内容。如果您不这样做,那么根据设计,您将以某种形式溢出,理想情况下,一些缓冲区开始丢弃数据包。有时,你可以在缓冲区中设置一个高水位线,以确定它开始这样做的级别。然后,一旦数据包丢失,只要你不通过填充缓冲区和反压挂断发送方或接收方,TCP/IP之类的协议就不在乎数据包丢失,它们会重试。存在不重试的协议。。。