网卡通常由MAC芯片和phy芯片,两部分组成。
在mac层芯片中,往往有一定大小的缓冲区,当接受到一帧数据之后,经过校验正确之后,就会放入缓冲区,随后中断到CPU,再由驱动程序将缓冲区中的数据读入到内核之中。
所以,存在可能性,当网卡接受缓冲区满了,发送发继续发送数据,则会丢包。
另外,当发送缓冲区满了,如果内核继续发送数据,也会丢包。
某些时候,通过观察这两个缓冲区的大小,可以确定网卡丢包的具体原因。
以上两种情况,往往是丢包的主要原因。
当然,也可能因为数据出错,从而使网卡丢弃该帧,导致丢包的情况,但随着网络质量的提升,这种情况已经很少发生,特别是在局域网的情况下。
也就是说,网卡的性能的好坏,往往取决于网卡主控芯片的好坏。
另外,关于网卡的一些芯片举例:
RTL8139D芯片