1.網卡的基本機構
網卡包含7個功能模塊,分別是CU(Control Unit,控制單元)、OB(Output Buffer,輸出緩存)、IB(Input Buffer,輸入緩存)、LC(Line Coder,線路編碼器)、LD(Line Decoder,線路解碼器)、TX(Transmitter,發射器)、RX(Receiver,接收器)。
2.網卡信息發送
2.1 計算機的應用軟件會產生等待發送的原始數據,這些數據經過TCP/IP模型的應用層、傳輸層、網絡層處理后,得到一個一個的數據包(Packet)。然后,網絡層會將這些數據包逐個下傳給網卡的CU。
2.2 CU 從網絡層哪里接收到數據包之后,會將每個數據包封裝成幀(Frame)。在以太網中封裝的數據幀為以太幀(Ethernet Frame)。然后CU單元會將這些幀逐個傳遞給OB。
2.3 OB從CU哪里接收到幀以后,會按幀的接收順序將這些幀排成一個隊列,然后將隊列中的幀逐個傳遞給LC。先從CU哪里接收的幀會先傳給LC。
2.4 LC從OB哪里接收到幀之后,會對這些幀進行線路編碼。從邏輯上講,一個幀就是一個長度有限的一串“0”和“1”。OB中的“0”和“1”所對應的物理量(指電平、電流、電荷等)只適合於待在緩存之中,而不適合於在線路上進行傳輸。LC的作用就是將這些“0”和“1”所對應的物理量轉換成適合於在線路上進行傳輸的物理信號,並將物理信號傳遞給TX。
2.5 TX從LC哪里接收到物理信號之后,會對物理信號的功率等特性進行調整,然后將調整后的物理信號通過線路發送出去。
3.網卡信息接收
3.1 RX從傳輸介質(例如雙絞線)哪里接收到物理信號(指電壓/電流波形等),然后對物理信號的功率特性進行調整,再將調整后的物理信號傳遞給LD。
3.2 LD會對來自RX的物理信號進行線路解碼。線路解碼:就是從物理信號中識別出邏輯上的“0”和“1”,並將這些“0”和“1”重新表達為適合於待在緩存中的物理量(指電平、電流、電荷等),然后將這些“0”和“1”以幀為單位逐漸傳遞給IB。
3.3 IB從LD哪里接收到幀以后,會按照幀的接收順序將這些幀逐漸排列成一個隊列,然后將隊列中的幀逐個傳遞給CU,先從LD哪里接收的幀會先傳給CU。
3.4 CU從IB哪里接收到幀以后,會對幀進行分析和處理,一個幀的處理結果有且只有兩種可能:直接將這個幀丟棄,或者將這個幀的幀頭和幀尾丟棄,得到數據包,然后將數據包上傳給TCP/IP模型的網絡層。
3.5 從CU上傳到網絡層的數據包會經過網絡層、傳輸層、應用層逐層處理,處理后的數據被送達給應用軟件使用。當然,數據也可能會在某一層的處理中提前丟失了,從而無法到達給應用軟件。