我假设网卡处理tcp确认。但是在确认之后,直到数据包到达应用层,有任何机会,数据包因任何原因被丢弃。
答案 0 :(得分:0)
我假设网卡处理tcp确认。但是在确认之后,直到数据包到达应用层,有任何机会,数据包因任何原因被丢弃。
没有。网卡不处理TCP确认。它是TCP层本身。数据包将在到达时被确认。应用程序甚至需要调用recv
。一旦应用程序从缓冲区中读取,它将从缓冲区中删除。
答案 1 :(得分:0)
网卡不处理TCP确认(除了offload the entire stack到硬件中的一些非常昂贵的设备外。
充其量只是accelerating the calculation的网络校验和,但除了核心datalink和physical layer MAC和PHY任务之外,其他任何事情都不多。
acks由第4层的TCP模块处理,不存在,第4层和应用层之间不可能丢弃数据。如果您从应用程序API中消耗数据的速度太慢,那么TCP会通过“closing the window”对发送方实施流量控制,以防止它发送的数据超过您在网络缓冲区中可用的数据。