当计算机 X 即将通过网络向计算机 Y 发送一组帧时,计算机 X 的 NIC 卡是否应该在开始传输这些帧之前通知同一通信链路上其他计算机的 NIC 卡?如果是,你能解释一下这个过程是如何进行的吗?如果 X 在没有任何通知的情况下开始传输,是否意味着已经在链接上的帧将被破坏?
谢谢
当计算机 X 即将通过网络向计算机 Y 发送一组帧时,计算机 X 的 NIC 卡是否应该在开始传输这些帧之前通知同一通信链路上其他计算机的 NIC 卡?如果是,你能解释一下这个过程是如何进行的吗?如果 X 在没有任何通知的情况下开始传输,是否意味着已经在链接上的帧将被破坏?
谢谢
在发送帧之前不发送通知。
在交换式全双工以太网网络上,该卡在正常情况下只会发送帧。由于链路的全双工点对点特性,不会有任何冲突。
在老式的 CSMA/CD 以太网冲突域中,发送方只有在检测到介质空闲时才能发送。由于两个设备可能会同时尝试和传输(或至少足够接近必须被视为相同的时间),因此仍然存在一些冲突的可能性。在这种情况下,设备将在随机时间后退,然后重试。
如果交换机收到多个发往给定传出端口的数据包,则它将在内部缓冲区中将它们排队。如果数据包进入太快,那么交换机缓冲区将被填满,此时交换机可能会根据支持的扩展将通知(称为“暂停帧”)发送回链中的前一个设备,或者它可能刚开始丢包。
大多数情况下,TCP 等更高级别协议中的拥塞避免算法会降低传输速率,从而避免过多的数据包丢失,即使在没有有效方法在完整缓冲区链中更早地通知设备的情况下也是如此。
其他物理层可能有不同的规则。