網卡工作在osi的最後兩層,物理層和數據鏈路層,物理層定義了數據傳送與接收所需要的電與光信號、線路狀態、時鐘基準、數據編碼和電路等,並向數據鏈路層設備提供標準接口。物理層的芯片稱之為PHY。數據鏈路層則提供尋址機構、數據幀的構建、數據差錯檢查、傳送控制、向網絡層提供標準的數據接口等功能。以太網卡中數據鏈路層的芯片稱之為MAC控制器。很多網卡的這兩個部分是做到壹起的。他們之間的關系是pci總線接mac總線,mac接phy,phy接網線(當然也不是直接接上的,還有壹個變壓裝置)。
下面繼續讓我們來關心壹下PHY和MAC之間是如何傳送數據和相互溝通的。通過IEEE定義的標準的MII/GigaMII(Media Independed Interfade,介質獨立界面)界面連接MAC和PHY。這個界面是IEEE定義的。MII界面傳遞了網絡的所有數據和數據的控制。
而MAC對PHY的工作狀態的確定和對PHY的控制則是使用SMI(Serial Management Interface)界面通過讀寫PHY的寄存器來完成的。PHY裏面的部分寄存器也是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器裏面,MAC通過SMI總線不斷的讀取PHY的狀態寄存器以得知目前PHY的狀態,例如連接速度,雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的,例如流控的打開關閉,自協商模式還是強制模式等。
我們看到了,不論是物理連接的MII界面和SMI總線還是PHY的狀態寄存器和控制寄存器都是有IEEE的規範的,因此不同公司的MAC和PHY壹樣可以協調工作。當然為了配合不同公司的PHY的自己特有的壹些功能,驅動需要做相應的修改。
壹片網卡主要功能的實現就基本上是上面這些器件了。其他的,還有壹顆EEPROM芯片,通常是壹顆93C46。裏面記錄了網卡芯片的供應商ID、子系統供應商ID、網卡的MAC地址、網卡的壹些配置,如SMI總線上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導系統等東西。
很多網卡上還有BOOTROM這個東西。它是用於無盤工作站引導操作系統的。既然無盤,壹些引導用必需用到的程序和協議棧就放到裏面了,例如RPL、PXE等。實際上它就是壹個標準的PCI ROM。所以才會有壹些硬盤寫保護卡可以通過燒寫網卡的BootRom來實現。其實PCI設備的ROM是可以放到主板BIOS裏面的。啟動電腦的時候壹樣可以檢測到這個ROM並且正確識別它是什麽設備的。AGP在配置上和PCI很多地方壹樣,所以很多顯卡的BIOS也可以放到主板BIOS裏面。這就是為什麽板載的網卡我們從來沒有看到過BOOTROM的原因。
2.工作過程
PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什麽地址,數據還是CRC),每4bit就增加1bit的檢錯碼,然後把並行數據轉化為串行流數據,再按照物理層的編碼規則(10Based-T的NRZ編碼或100based-T的曼徹斯特編碼)把數據編碼,再變為模擬信號把數據送出去。收數據時的流程反之。現在來了解PHY的輸出後面部分。壹顆CMOS制程的芯片工作的時候產生的信號電平總是大於0V的(這取決於芯片的制程和設計需求),但是這樣的信號送到100米甚至更長的地方會有很大的直流分量的損失。而且如果外部網現直接和芯片相連的話,電磁感應(打雷)和靜電,很容易造成芯片的損壞。
再就是設備接地方法不同,電網環境不同會導致雙方的0V電平不壹致,這樣信號從A傳到B,由於A設備的0V電平和B點的0V電平不壹樣,這樣會導致很大的電流從電勢高的設備流向電勢低的設備。我們如何解決這個問題呢?
這時就出現了Transformer(隔離變壓器)這個器件。它把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,並且通過電磁場的轉換耦合到連接網線的另外壹端。這樣不但使網線和PHY之間沒有物理上的連接而換傳遞了信號,隔斷了信號中的直流分量,還可以在不同0V電平的設備中傳送數據。
隔離變壓器本身就是設計為耐2KV~3KV的電壓的。也起到了防雷感應(我個人認為這裏用防雷擊不合適)保護的作用。有些朋友的網絡設備在雷雨天氣時容易被燒壞,大都是PCB設計不合理造成的,而且大都燒毀了設備的接口,很少有芯片被燒毀的,就是隔離變壓器起到了保護作用。
發送數據時,網卡首先偵聽介質上是否有載波(載波由電壓指示),如果有,則認為其他站點正在傳送信息,繼續偵聽介質。壹旦通信介質在壹定時間段內(稱為幀間縫隙IFG=9.6微秒)是安靜的,即沒有被其他站點占用,則開始進行幀數據發送,同時繼續偵聽通信介質,以檢測沖突。在發送數據期間,如果檢測到沖突,則立即停止該次發送,並向介質發送壹個“阻塞”信號,告知其他站點已經發生沖突,從而丟棄那些可能壹直在接收的受到損壞的幀數據,並等待壹段隨機時間(CSMA/CD確定等待時間的算法是二進制指數退避算法)。在等待壹段隨機時間後,再進行新的發送。如果重傳多次後(大於16次)仍發生沖突,就放棄發送。
接收時,網卡瀏覽介質上傳輸的每個幀,如果其長度小於64字節,則認為是沖突碎片。如果接收到的幀不是沖突碎片且目的地址是本地地址,則對幀進行完整性校驗,如果幀長度大於1518字節(稱為超長幀,可能由錯誤的LAN驅動程序或幹擾造成)或未能通過CRC校驗,則認為該幀發生了畸變。通過校驗的幀網卡的原理及測試技術
網卡充當計算機和網絡纜線之間的物理接口或連線將計算機中的數字信號轉換成電或光信號,稱為nic( network interface card )。數據在計算機總線中傳輸是並行方式即數據是肩並肩傳輸的,而在網絡的物理纜線中說數據以串行的比特流方式傳輸的,網卡承擔串行數據和並行數據間的轉換。網卡在發送數據前要同接收網卡進行對話以確定最大可發送數據的大小、發送的數據量的大小、兩次發送數據間的間隔、等待確認的時間、每個網卡在溢出前所能承受的最大數據量、數據傳輸的速度。
壹、網卡的基本構造
網卡包括硬件和固件程序(只讀存儲器中的軟件例程),該固件程序實現邏輯鏈路控制和媒體訪問控制的功能網卡包括硬件和固件程序(只讀存儲器中的軟件例程),該固件程序實現邏輯鏈路控制和媒體訪問控制的功能,還記錄唯壹的硬件地址即mac地址,網卡上壹般有緩存。網卡須分配中斷irq及基本i/o端口地址,同時還須設置基本內存地址(base memory address)和收發器(transceiver)
網卡的控制芯片
是網卡中最重要元件,是網卡的控制中心,有如電腦的cpu,控制著整個網卡的工作,負責數據的的傳送和連接時的信號偵測。早期的10/100m的雙速網卡會采用兩個控制芯片(單元)分別用來控制兩個不同速率環境下的運算,而目前較先進的產品通常只有壹個芯片控制兩種速度。
晶體震蕩器
負責產生網卡所有芯片的運算時鐘,其原理就象主板上的晶體震蕩器壹樣,通常網卡是使用20或25hz的晶體震蕩器。
boot rom插槽
如無特殊要求網卡中的這個插槽處在空置狀態。壹般是和boot rom芯片搭配使用,其主要作用是引導電腦通過服務器引導進入win9x。
boot rom
就是啟動芯片,讓電腦可以在不具備硬盤、軟驅和光驅的情況下,直接通過服務器開機,成為壹個無硬盤無軟驅的工作站。沒有軟驅就無法將資料輸出,這樣也可以達到資料保密的功能。同時,還可以節省下購買這些電腦部件的費用。在使用boot rom時要註意自己使用何種網絡操作系統,通常有boot rom for nt,boot rom for unix,boot rom for netware等,boot rom啟動芯片要自行購買。
eprom
從前的老式網卡都要靠設置跳線或是dip開關來設定irq、dma和i/o port等值,而現在的網卡則都使用軟件設定,幾乎看不見跳線的存在。各種網卡的狀態和網卡的信息等數據都存在這顆小小的eeprom裏,通過它來自動設置。
內接式轉換器
只要有bnc接頭的網卡都會有這個芯片,並緊鄰在bnc接頭旁,它的功能是在網卡和bnc接頭之間進行數據轉換,讓網卡能通過它從bnc接頭送出或接收資料。
rj-45和bnc接頭
rj-45是采用雙絞線作為傳輸媒介的壹種網卡接口,在100mbps網中最常應用。bnc是采用細同軸電纜作為傳輸媒介
信號指示燈
在網卡後方會有二到三個不等的信號燈,其作用是顯示目前網絡的連線狀態,通常具有tx和rx兩個信息。tx代表正在送出資料,rx代表正在接收資料,若看到兩個燈同時亮則代表目前是處於全雙工的運作狀態,也可由此來辨別全雙工的網卡是否處於全雙工的網絡環境中(見上圖兩個接口的中間部分)。也有部分低速網卡只用壹個燈來表示信號,通過不同的燈光變換來表示網絡是否導通。
二、網卡的分類
以頻寬區分網卡種類
目前的以太網卡分為10mbps、100mbps和1000 mbps三種頻寬,目前常見的三種架構有10baset、100basetx與base2,前兩者是以rj-45雙絞線為傳輸媒介,頻寬分別有10mbps和100mbps。而雙絞線又分為category 1至category 5五種規格,分別有不同的用途以及頻寬,category通常簡稱cat,只要使用cat5規格的雙絞線皆可用於10/100mbps頻寬的網卡上。而10base2架構則是使用細同軸電纜作為傳輸媒介,頻寬只有10mbps。這裏提到的頻寬10或100mbps是指網卡上的最大傳送頻寬,而頻寬並不等於網絡上實際的傳送速度,實際速度要考慮到傳送的距離,線路的品質,和網絡上是否擁擠等因素,這裏所談的bps指的是每秒傳送的bit(1個byte=8個bit)。而100mbps則稱為高速以太網卡(fast ethernet),多為pci接口。因為其速度快,目前新建的局域網絡絕已大多數已采用100mbps的傳輸頻寬,已有漸漸取代10mbps網卡的趨勢。當前市面上的pci網卡多具有10/100mbps自動切換的功能,會根據所在的網絡連線環境來自動調節網絡速度。1000 mbps以太網卡多用於交換機或交換機與服務器之間的高速鏈路或backbone。
以接口類型區分網卡種類
以接口類型來分,網卡目前使用較普遍的是isa接口、pci接口、usb接口和筆記本電腦專用的pcmcia接口。現在的isa接口的網卡均采用16bit的總線寬度,其特性是采用programmed i/o的模式傳送資料,傳送數據時必須通過cpu在i/o上開出壹個小窗口,作為網卡與pc之間的溝通管道,需要占用較高的cpu使用率,在傳送大量數據時效率較差。pci接口的網卡則采用32bit的總線頻寬,采用bus master的數據傳送方式,傳送數據是由網卡上的控制芯片來控制,不必通過i/o端口和cpu,可大幅降低cpu的占用率,目前產品多為10/100mbps雙速自動偵測切換網卡。
以全雙工/半雙工來區分網卡種類
網絡有半雙工(half duplex)與全雙工(full duplex)之分,半雙工網卡無法同壹時間內完成接收與傳送數據的動作,如10base2使用細同軸電纜的網絡架構就是半雙工網絡,同壹時間內只能進行傳送或接收數據的工作,效率較低。要使用全雙工的網絡就必須要使用雙絞線作為傳輸線才能達到,並且也要搭配使用全雙工的集線器,要使用10base或100basetx的網絡架構,網卡當然也要是全雙工的產品
以網絡物理纜線接頭區分網卡
目前網卡常用的網線接頭有rj-45與bnc兩種,有的網卡同時具有兩種接頭,可適用於兩種網絡線,但無法兩個接頭同時使用。另外還有光纖接口的網卡,通常帶寬在1000 mbps。
其他功能wol
有些網卡會有wol的功能,wol網絡開機的功能(wake on lan)。它可由另外壹臺電腦,使用軟件制作特殊格式的信息包發送至壹臺裝有具wol功能網卡的電腦,而該網卡接收到這些特殊格式的信息包後,就會命令電腦打開電源,目前已有越來越多的網卡支持網絡開機的功能。
其它網卡
從網絡傳輸的物理媒介上還有無線網卡,利用2.4ghz的無線電波來傳輸數據。目前ieee有兩種規範802.11和802.11b,最高傳輸速率分別為2m和11m,接口有pci、usb和pcmcia幾種。
三、網卡測試技術
基於操作系統的測試
網卡壹個重要的性能是看其是否支持多種網絡操作系統,比較流行的網絡操作系統有windowsnt、unix(linux、freebsd、sco、solaris、hp?})、novell、dec等。同時網卡應能夠支持多種的網絡協議,如tcp/ip、ipx/spx、apple、netbeui等。
基於主機的兼容性測試
硬件上的兼容性也是非常重要的壹個方面,尤其在筆記本電腦上兼容性問題比較突出,根據本人的實際經驗,甚至某些名牌的網卡在壹些筆記本電腦上也存在較為嚴重的兼容性問題。在服務器或臺式電腦方面這些問題不常出現。
網卡傳輸速率測試(數據吞吐量)
測試網卡的傳輸速率壹般有硬件和軟件兩種方法,硬件是利用壹些專用的儀器如網絡分析儀、smartbits smartcards等其他壹些設備,利用icmp echo請求和udp數據包來檢測數據流量。通常測試的項目有以下幾方面:
autonegotiation test
測試網卡速率、全雙工/半雙工和流控協商。協商決定著是否通過“暫停楨pause frame”來允許流量控制。
arp test
測試網卡是否能對arp請求做出正確回應及是否在規定時間內應答。這個時間由測試者進行設置。
error test
測試網卡處理錯誤frame的能力,通常在較低的傳輸速率下進行此項測試(0.5%傳輸速率),有以下幾個方面的測試:
網卡接收正確的frame,作出處理。
網卡接收到存在crc校驗錯的frame,網卡將其丟棄。
網卡接收到傳輸順序錯誤的frame,網卡將其丟棄。
網卡接收到含有少量錯誤bits的frame,網卡應全部接收並處理。
網卡接收到超小frame,網卡應將其丟棄。
網卡接收到超長frame,網卡應將其丟棄。
packets loss test
rfc規定測試網卡在各種傳輸帶寬利用率下的處理frame的能力,從初始化數據傳輸到傳輸速率的不斷變化壹直到傳輸結束,檢查frame的丟失情況。
throughput test
數據吞吐量的測試也是rfc規定的壹項測試內容,測試的結果反映出傳輸的最大帶寬的利用率,每秒處理的frame和每秒處理的bits數量。
back-to-back test
同樣此項測試也為rfc-2544的規定,測試在壹個設定的最大傳輸速率下網卡可處理的並發frame的數量。最終反映出在不丟失數據包的情況下可並發傳輸的最大frame數量。
利用軟件測試通常是利用zd的netbench來測試,壹般只利用其測試網卡的最大傳輸速率。測試時要組成壹個網絡結構,壹臺windowsnt server服務器,若幹個windows9x或windowsnt station客戶端,傳輸大容量的文件如100mbps,測試的結果將反映出網卡的最大傳輸速率。另壹個測試項目是測試網卡對較小的數據包請求的回應能力,這裏有必要討論壹下tcp/ip的ping命令的機制。ping是利用發送和接收icmp echo報文,來檢測鏈路狀態和協議設置。數據鏈路層封裝的是frame,大小在64k~1518k之間,當發送frame時,網卡接受到frame時首先要讀取楨頭和楨尾的mac地址,當mac地址相匹配時再接封裝讀取ip地址。當網卡連續接收到frame時,要對每壹個frame做出處理,當網卡或是系統無法處理這些數據包時,這些數據包將被丟棄。這種情況多發生在連續發送非常小的frame時。ping的機制是發送壹個icmp報文,接收到壹個icmp echo後再發送下壹個icmp報文。所以較小的連續的frame會對網卡和系統造成較大的壓力。在netbench中,有壹項測試就是測試網卡或系統對連續的小數據包的處理能力。
穩定性測試
壹塊好的網卡應該具有良好的穩定性,具體講就是在不同的工作環境下和不同的工況下應具有穩定的表現。通常測試主要是高溫和傳輸大文件測試。
高溫測試壹般是在30~35攝氏度下連續運行網卡的測試程序達壹定的時間比如2小時以上,檢測網卡高溫下的穩定性。pcmcia接口的網卡壹般有兩種32位的和16位的,前者又稱為cardbus網卡,數據帶寬由16位增加到32位,使得pcmcia的網卡發熱量成為壹個顯著的問題。
另壹個測試是傳輸大的文件,某些品質較差的網卡在傳輸大容量的文件比如2gbps以上的文件時容易出錯。
綜上所述,在測試壹塊網卡時要進行全面的軟、硬件及兼容性測試,可根據具體的應用和不同的要求,有機的選擇測試項目,正確反映網卡的性能指標。
被認為是有效的,網卡將它接收下來進行本地處理。