例如,服务器网卡如何知道客户端正在运行光纤连接,因此它可以通过带宽发送更多数据包?
就像,我对如何根据连接速度通过与客户端的连接获得更多数据感到困惑。这是在建立连接时以某种方式与服务器协商的,或者它是如何工作的?
谢谢
例如,服务器网卡如何知道客户端正在运行光纤连接,因此它可以通过带宽发送更多数据包?
就像,我对如何根据连接速度通过与客户端的连接获得更多数据感到困惑。这是在建立连接时以某种方式与服务器协商的,或者它是如何工作的?
谢谢
服务器网卡如何知道客户端正在运行光纤连接,因此它可以通过带宽发送更多数据包?
它不知道客户端,甚至不知道是否有任何东西正在接收数据。
NIC 知道它有什么样的物理接口(光纤、铜线),它知道它的接口速度(线路速率)。只要上层继续发送数据,它就会以线路速率发送数据包。
例如,服务器网卡如何知道客户端正在运行光纤连接
NIC 知道安装了哪种 PHY。物理层组件要么是 NIC 的一部分,要么是模块化收发器(通常是 SFP)。收发器模块包括一个 I²C 芯片,可将其识别到 NIC(支持的媒体、波长、速度、范围……)。
所以它可以通过带宽发送更多的数据包?
链接速度由类型/模块暗示或协商。该速度用于通过链接发送的所有数据。
链接速度有时称为原始带宽。实际带宽取决于更多因素:数据源、背板、路径中可能的瓶颈、数据接收器等。实际吞吐量还取决于网络拥塞、发送窗口和往返时间等。
此外,客户端和服务器通常不直接连接,因此它们各自的链接速度可能会有很大差异。服务器可以以 10 Gbit/s 的速度连接,并为通过仅 56 kbit/s 的模拟调制解调器拨入路由器的客户端提供服务。实际上,该服务器可以同时全速为 178,000 个此类客户端提供服务(前提是没有瓶颈)。
网卡如何知道要发送多少数据?
NIC 只是按照链接的速率发送给定的数据。数据由应用程序提供,通过操作系统的网络堆栈传递。
如果使用像 TCP 这样的传输层协议来提供可靠的传输,它将限制从应用程序到网络可以处理的数据流(通过跟踪来自流伙伴的确认并检测网络拥塞 - 非常复杂)。
NIC 输出也可能在数据链路层受到以太网暂停帧的限制,但这并未被广泛使用。
例如,服务器网卡如何知道客户端正在运行光纤连接,因此它可以通过带宽发送更多数据包?
它没有。NIC 知道其直接链接的带宽,但除此之外它对网络一无所知。
我对如何根据连接速度通过与客户端的连接获得更多数据感到困惑。这是在建立连接时以某种方式与服务器协商的,或者它是如何工作的?
试错!
服务器开始发送数据包的速度相对较慢,然后逐渐增加速率,直到检测到拥塞。传统上,拥塞是通过丢弃的数据包来检测的。近年来,一种称为“显式拥塞通知”的机制被添加到标准中,以允许路由器在开始丢弃数据包之前通知客户端和服务器拥塞的链路,但是大多数操作系统尚未默认启用它。