網卡通常由MAC芯片和phy芯片,兩部分組成。
在mac層芯片中,往往有一定大小的緩衝區,當接受到一幀數據之後,經過校驗正確之後,就會放入緩衝區,隨後中斷到CPU,再由驅動程序將緩衝區中的數據讀入到內核之中。
所以,存在可能性,當網卡接受緩衝區滿了,發送發繼續發送數據,則會丟包。
另外,當發送緩衝區滿了,如果內核繼續發送數據,也會丟包。
某些時候,通過觀察這兩個緩衝區的大小,可以確定網卡丟包的具體原因。
以上兩種情況,往往是丟包的主要原因。
當然,也可能因爲數據出錯,從而使網卡丟棄該幀,導致丟包的情況,但隨着網絡質量的提升,這種情況已經很少發生,特別是在局域網的情況下。
也就是說,網卡的性能的好壞,往往取決於網卡主控芯片的好壞。
另外,關於網卡的一些芯片舉例:
RTL8139D芯片