專利名稱::用戶級(jí)棧的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種網(wǎng)絡(luò)接口,例如將計(jì)算機(jī)連接到網(wǎng)絡(luò)的接口設(shè)備。
背景技術(shù):
:圖1是諸如網(wǎng)絡(luò)接口卡(NIC)的網(wǎng)絡(luò)接口設(shè)備及其中使用該網(wǎng)絡(luò)接口設(shè)備的系統(tǒng)的總體架構(gòu)的示意圖。網(wǎng)絡(luò)接口設(shè)備10通過(guò)數(shù)據(jù)鏈路5連接到諸如計(jì)算機(jī)1的處理設(shè)備,并通過(guò)數(shù)據(jù)鏈路14連接到數(shù)據(jù)網(wǎng)絡(luò)20。諸如處理設(shè)備30的其他網(wǎng)絡(luò)接口設(shè)備也連接到網(wǎng)絡(luò),以提供網(wǎng)絡(luò)和諸如處理設(shè)備40的其他處理設(shè)備之間的接口。計(jì)算機(jī)1例如可以是個(gè)人計(jì)算機(jī)、服務(wù)器或者諸如數(shù)據(jù)記錄器或控制器的專用處理設(shè)備。在本示例中,計(jì)算機(jī)1包括處理器2、程序存儲(chǔ)器4和存儲(chǔ)器3。該程序存儲(chǔ)器存儲(chǔ)有定義操作系統(tǒng)和可以在該操作系統(tǒng)中運(yùn)行的應(yīng)用程序的指令。該操作系統(tǒng)提供諸如驅(qū)動(dòng)程序和接口程序庫(kù)的工具(means),通過(guò)這些工具,應(yīng)用程序可以訪問(wèn)與計(jì)算機(jī)連接的外圍硬件設(shè)備。理想地,網(wǎng)絡(luò)接口設(shè)備能夠支持用戶級(jí)標(biāo)準(zhǔn)傳輸協(xié)議,例如TCP、RDMA和ISCSI即,通過(guò)使得在計(jì)算機(jī)1中運(yùn)行的應(yīng)用程序可以訪問(wèn)它們的方式。這種支持使得能夠進(jìn)行需要使用標(biāo)準(zhǔn)協(xié)議的數(shù)據(jù)傳輸,而不需要數(shù)據(jù)經(jīng)過(guò)內(nèi)核棧。在本示例的網(wǎng)絡(luò)接口設(shè)備中,在計(jì)算機(jī)1的操作系統(tǒng)可訪問(wèn)的傳輸程序庫(kù)內(nèi)實(shí)現(xiàn)標(biāo)準(zhǔn)傳輸協(xié)議。典型的計(jì)算機(jī)系統(tǒng)1包括處理器子系統(tǒng)(包括一個(gè)或更多個(gè)處理器)、存儲(chǔ)器子系統(tǒng)(包括主存儲(chǔ)器、高速緩存存儲(chǔ)器等)、和通過(guò)外圍總線連接到處理器子系統(tǒng)的多種“外圍設(shè)備”。外圍設(shè)備例如可以包括鍵盤、鼠標(biāo)和顯示適配器、磁盤驅(qū)動(dòng)器和CD-ROM驅(qū)動(dòng)器、網(wǎng)絡(luò)接口設(shè)備等。處理器子系統(tǒng)通過(guò)對(duì)預(yù)先分配給這些外圍設(shè)備的特定地址讀取和寫入命令和信息,來(lái)與這些外圍設(shè)備進(jìn)行通信。這些地址可以是主存儲(chǔ)器地址空間、I/O地址空間、或另一類型的構(gòu)形空間中的預(yù)先分配的區(qū)域。也可以通過(guò)直接存儲(chǔ)器訪問(wèn)(DMA)來(lái)進(jìn)行與外圍設(shè)備的通信,其中外圍設(shè)備(或外圍總線上的另一代理)直接在存儲(chǔ)器子系統(tǒng)和分配給外圍設(shè)備的地址空間中的多個(gè)預(yù)先分配的區(qū)域中的一個(gè)區(qū)域之間傳輸數(shù)據(jù)。大多數(shù)現(xiàn)代計(jì)算機(jī)系統(tǒng)是多任務(wù)的,這意味著它們?cè)试S多個(gè)不同的應(yīng)用程序在同一處理器子系統(tǒng)上并行執(zhí)行。大多數(shù)現(xiàn)代計(jì)算機(jī)還運(yùn)行操作系統(tǒng),其中,該操作系統(tǒng)分配處理器子系統(tǒng)的時(shí)間,以執(zhí)行不同應(yīng)用程序中的每一個(gè)的代碼。在多任務(wù)系統(tǒng)中可能出現(xiàn)的困難是,不同的應(yīng)用程序可能想要在同一時(shí)刻控制同一外圍設(shè)備。為了防止這種沖突,操作系統(tǒng)的另一任務(wù)是協(xié)調(diào)對(duì)外圍設(shè)備的控制。具體地,只有操作系統(tǒng)可以直接訪問(wèn)外圍設(shè)備;想要訪問(wèn)外圍設(shè)備的應(yīng)用程序必須通過(guò)調(diào)用操作系統(tǒng)中的例程來(lái)進(jìn)行訪問(wèn)。在操作系統(tǒng)中設(shè)置對(duì)外圍設(shè)備的排他性控制還有助于對(duì)系統(tǒng)的模塊化,避免需要每個(gè)獨(dú)立的應(yīng)用程序?yàn)榭刂圃撚布鴪?zhí)行它自己的軟件代碼。操作系統(tǒng)的控制硬件的部分通常是內(nèi)核。通常,它是執(zhí)行硬件初始化、設(shè)置和重設(shè)處理器狀態(tài)、調(diào)整處理器內(nèi)部時(shí)鐘、初始化網(wǎng)絡(luò)接口設(shè)備、及硬件的其它直接訪問(wèn)的內(nèi)核。該內(nèi)核以內(nèi)核模式(有時(shí)也稱作信任模式或特權(quán)模式)執(zhí)行,而應(yīng)用程序級(jí)進(jìn)程(也稱作用戶級(jí)進(jìn)程)以用戶模式執(zhí)行。通常,處理器子系統(tǒng)硬件本身確保只有信任代碼(例如內(nèi)核代碼)可以直接訪問(wèn)硬件。處理器至少以兩種方式強(qiáng)制該操作特定的敏感指令不由處理器來(lái)執(zhí)行,除非當(dāng)前的特權(quán)級(jí)別足夠高;以及處理器不允許用戶級(jí)進(jìn)程訪問(wèn)已經(jīng)分配給該進(jìn)程的用戶級(jí)物理或虛擬地址空間之外的存儲(chǔ)器位置(包括與特定硬件資源相關(guān)聯(lián)的存儲(chǔ)器映射地址)。這里所用的術(shù)語(yǔ)“內(nèi)核空間”或“內(nèi)核地址空間”是指執(zhí)行內(nèi)核的地址和代碼空間。這包括內(nèi)核數(shù)據(jù)結(jié)構(gòu)和內(nèi)核的內(nèi)部功能。內(nèi)核也可以訪問(wèn)用戶進(jìn)程的存儲(chǔ)器,但“內(nèi)核空間”通常是指內(nèi)核私有的、任何用戶進(jìn)程不可以訪問(wèn)的存儲(chǔ)器(包括代碼和數(shù)據(jù))。術(shù)語(yǔ)“用戶空間”或“用戶地址空間”是指由從可執(zhí)行程序(executable)加載的并且用戶進(jìn)程可用的代碼所分配的地址和代碼空間,除了內(nèi)核私有代碼數(shù)據(jù)結(jié)構(gòu)以外。這里所用的4個(gè)術(shù)語(yǔ)旨在涵蓋軟件程序自己的地址空間的視圖(view)和它所對(duì)應(yīng)的物理存儲(chǔ)器位置之間的中間映射的可能性。通常,軟件程序的地址空間的視圖是連續(xù)的,而對(duì)應(yīng)的物理地址空間可以是不連續(xù)且無(wú)序的,甚至可能部分地在諸如硬盤驅(qū)動(dòng)器的交換設(shè)備上。雖然內(nèi)核的多個(gè)部分可以象獨(dú)立的正在運(yùn)行的內(nèi)核進(jìn)程那樣執(zhí)行,但是許多內(nèi)核實(shí)際并不是在系統(tǒng)中運(yùn)行的獨(dú)立進(jìn)程。相反,它可以被認(rèn)為是一組例程,用戶進(jìn)程可以訪問(wèn)其中的某些。用戶進(jìn)程可以通過(guò)執(zhí)行系統(tǒng)調(diào)用來(lái)調(diào)用內(nèi)核例程,系統(tǒng)調(diào)用是使內(nèi)核執(zhí)行代表該進(jìn)程的一些代碼的功能?!爱?dāng)前進(jìn)程”仍然是用戶進(jìn)程,但在系統(tǒng)調(diào)用期間,它“在內(nèi)核內(nèi)部”執(zhí)行,因此可以訪問(wèn)內(nèi)核地址空間并且能夠以特權(quán)模式執(zhí)行。由于在內(nèi)核內(nèi)建立了中斷處理器,所以還響應(yīng)于由硬件設(shè)備發(fā)出的中斷來(lái)執(zhí)行內(nèi)核代碼。作為進(jìn)程調(diào)度程序,內(nèi)核還使用時(shí)鐘中斷(和其它手段)觸發(fā)從一個(gè)進(jìn)程到另一個(gè)進(jìn)程的切換,以快速切換進(jìn)程之間控制。每次調(diào)用內(nèi)核例程時(shí),為了允許該例程直接訪問(wèn)硬件,當(dāng)前的特權(quán)級(jí)別增加為內(nèi)核級(jí)別。當(dāng)內(nèi)核將控制交回給用戶進(jìn)程時(shí),當(dāng)前的特權(quán)級(jí)別返回到用戶進(jìn)程的級(jí)別。當(dāng)用戶級(jí)進(jìn)程希望與NIC進(jìn)行通信時(shí),傳統(tǒng)地,它只能通過(guò)調(diào)用操作系統(tǒng)來(lái)進(jìn)行該操作。操作系統(tǒng)實(shí)現(xiàn)系統(tǒng)級(jí)協(xié)議處理?xiàng)?,其代表?yīng)用程序執(zhí)行協(xié)議處理。具體地,希望使用TCP/IP來(lái)發(fā)送數(shù)據(jù)包的應(yīng)用程序使用要發(fā)送的數(shù)據(jù)來(lái)調(diào)用操作系統(tǒng)API(例如,使用send()調(diào)用)。該調(diào)用導(dǎo)致上下文切換,以調(diào)用內(nèi)核例程,將數(shù)據(jù)復(fù)制到內(nèi)核數(shù)據(jù)緩沖區(qū)中,并執(zhí)行TCP發(fā)送處理。這里應(yīng)用了協(xié)議,并且完全形成的TCP/IP分組通過(guò)接口驅(qū)動(dòng)程序進(jìn)行排隊(duì),以進(jìn)行發(fā)送。在控制返回到應(yīng)用程序時(shí)產(chǎn)生另一上下文切換。注意,由于時(shí)間的流逝,還可以調(diào)用用于網(wǎng)絡(luò)協(xié)議處理的內(nèi)核例程。一個(gè)示例是重傳算法的觸發(fā)。通常,操作系統(tǒng)向所有OS模塊提供時(shí)間和調(diào)度服務(wù)(由硬件時(shí)鐘中斷驅(qū)動(dòng)),這使得TCP棧能夠逐個(gè)連接地實(shí)現(xiàn)定時(shí)器。為了處理這種定時(shí)器觸發(fā)的功能,并且為最后再次返回到應(yīng)用程序,操作系統(tǒng)執(zhí)行上下文切換??梢钥闯?,網(wǎng)絡(luò)發(fā)送和接收操作可能包括過(guò)多的上下文切換,并且這可能導(dǎo)致明顯的開(kāi)銷。這個(gè)問(wèn)題在其中數(shù)據(jù)包通常很短而使得所需的控制工作量大到為全部網(wǎng)絡(luò)處理工作的一個(gè)百分點(diǎn)的網(wǎng)絡(luò)環(huán)境中尤為嚴(yán)重。過(guò)去已嘗試的一種解決方案是建立用戶級(jí)協(xié)議處理?xiàng)?,該用戶?jí)協(xié)議處理?xiàng)Ec操作系統(tǒng)的協(xié)議處理?xiàng)2⑿泄ぷ鳌_@種棧使得能夠使用標(biāo)準(zhǔn)協(xié)議來(lái)進(jìn)行數(shù)據(jù)傳輸,而不需要數(shù)據(jù)經(jīng)過(guò)內(nèi)核棧。圖2示出了該方案的一種實(shí)現(xiàn)。在該架構(gòu)中,TCP(和其它)協(xié)議實(shí)施兩次如圖2中的TCP1和TCP2所示。在典型的操作系統(tǒng)中,TCP2是計(jì)算機(jī)的操作系統(tǒng)中內(nèi)置的TCP協(xié)議的標(biāo)準(zhǔn)實(shí)現(xiàn)。為了控制網(wǎng)絡(luò)接口設(shè)備和/或與網(wǎng)絡(luò)接口設(shè)備進(jìn)行通信,在計(jì)算機(jī)上運(yùn)行的應(yīng)用程序可以發(fā)出API(應(yīng)用程序編程接口)調(diào)用。某些API調(diào)用可以由被提供用來(lái)支持網(wǎng)絡(luò)接口設(shè)備的傳輸程序庫(kù)來(lái)處理。不能由應(yīng)用程序可直接使用的傳輸程序庫(kù)進(jìn)行服務(wù)的API調(diào)用通??梢酝ㄟ^(guò)應(yīng)用程序和操作系統(tǒng)之間的接口傳遞,以由操作系統(tǒng)可用的程序庫(kù)進(jìn)行處理。為了通過(guò)許多操作系統(tǒng)來(lái)實(shí)現(xiàn),傳輸程序庫(kù)使用現(xiàn)有的基于Etnernet/IP的控制面結(jié)構(gòu)是很方便的例如,經(jīng)由OS接口的SNMP和ARP協(xié)議。在用戶級(jí)實(shí)現(xiàn)傳輸協(xié)議存在很多困難。至今為止,大多數(shù)的實(shí)現(xiàn)是基于將預(yù)先存在的內(nèi)核代碼基礎(chǔ)移植(porting)到用戶級(jí)。其示例有Arsenic和Jet-stream。它們證實(shí)了用戶級(jí)傳輸?shù)臐摿Γ撬鼈儧](méi)有解決需要獲得完整的、魯棒的、高性能的商業(yè)上可靠實(shí)現(xiàn)的多個(gè)問(wèn)題。圖3是采用標(biāo)準(zhǔn)內(nèi)核TCP傳輸(TCPk)的架構(gòu)。該架構(gòu)的操作如下在從網(wǎng)絡(luò)接口硬件(例如,網(wǎng)絡(luò)接口卡(NIC))接收分組時(shí),NIC將數(shù)據(jù)傳輸?shù)筋A(yù)先分配的數(shù)據(jù)緩沖器(a)中并通過(guò)中斷線調(diào)用OS中斷處理器(步驟i)。中斷處理器管理硬件接口,例如設(shè)置新的接收緩沖器,并傳送所接收的(在本示例中,為以太網(wǎng))分組,以尋找協(xié)議信息。如果分組被識(shí)別為目的地是有效協(xié)議,例如TCP/IP,則將其傳送(不是復(fù)制)到適當(dāng)?shù)慕邮諈f(xié)議處理塊(步驟ii)。進(jìn)行TCP接收端處理,并且從分組中識(shí)別出目的地部分。如果該分組包含該端口的有效數(shù)據(jù),則該分組開(kāi)始該端口的數(shù)據(jù)隊(duì)列(步驟iii),并且該端口被標(biāo)記(其可能涉及調(diào)度程序以及被中斷進(jìn)程的喚醒)為保持了有效數(shù)據(jù)。TCP接收處理可能需要發(fā)送其他分組(步驟iv),例如在先前發(fā)送的數(shù)據(jù)應(yīng)該重發(fā)或者先前排隊(duì)的數(shù)據(jù)(可能是因?yàn)門CP窗口已打開(kāi))現(xiàn)在可以發(fā)送的情況下。在這種情況下,分組通過(guò)OS“NDIS”驅(qū)動(dòng)程序進(jìn)行排隊(duì),以進(jìn)行發(fā)送。為了使應(yīng)用程序檢索數(shù)據(jù)緩沖器,必須調(diào)用OSAPI(步驟v),例如通過(guò)諸如recv()、select()或poll()的調(diào)用。這具有通知應(yīng)用程序已經(jīng)接收到數(shù)據(jù)的效果,以及(在recv()調(diào)用的情況下)將數(shù)據(jù)從內(nèi)核緩沖器復(fù)制到應(yīng)用程序的緩沖器的效果。該復(fù)制使得內(nèi)核(OS)能夠重復(fù)利用它的網(wǎng)絡(luò)緩沖器,這些網(wǎng)絡(luò)緩沖器具有特殊屬性,例如可DMA訪問(wèn),并且意味著應(yīng)用程序不需要處理由網(wǎng)絡(luò)提供的單元中的數(shù)據(jù),或者意味著應(yīng)用程序需要預(yù)先知道該數(shù)據(jù)的最終目的地,或者意味著應(yīng)用程序必須預(yù)先分配隨后可以用于數(shù)據(jù)接收的緩沖器。應(yīng)當(dāng)注意,在接收端存在至少兩個(gè)不同的控制線程(它們異步地交互)來(lái)自中斷的向上調(diào)用(up-call)和來(lái)自應(yīng)用程序的系統(tǒng)調(diào)用。許多操作系統(tǒng)還分離出該向上調(diào)用,以避免在中斷優(yōu)先級(jí)執(zhí)行太多代碼,例如,通過(guò)“軟中斷”或“延遲過(guò)程調(diào)用”技術(shù)。除了通常存在一個(gè)執(zhí)行路徑以外,發(fā)送進(jìn)程的行為相似。應(yīng)用程序通過(guò)要發(fā)送的數(shù)據(jù)調(diào)用操作系統(tǒng)API(例如使用send()調(diào)用)(步驟vi)。該調(diào)用將數(shù)據(jù)復(fù)制到內(nèi)核數(shù)據(jù)緩沖器,并且調(diào)用TCP發(fā)送處理。這里應(yīng)用了協(xié)議,并且完全形成的TCP/IP分組通過(guò)接口驅(qū)動(dòng)程序進(jìn)行排隊(duì),以進(jìn)行發(fā)送。如果成功,則系統(tǒng)調(diào)用返回,并具有被調(diào)度(通過(guò)硬件)用于發(fā)送的數(shù)據(jù)的指示。然而,還存在許多其中數(shù)據(jù)沒(méi)有通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行排隊(duì)的情況。例如,傳輸協(xié)議可以排隊(duì)等待確認(rèn)或窗口更新,并且設(shè)備驅(qū)動(dòng)程序可以在軟件中排隊(duì),以等待對(duì)硬件的數(shù)據(jù)傳輸請(qǐng)求。通過(guò)系統(tǒng)的第三控制流程是由隨著時(shí)間的流逝必須執(zhí)行的動(dòng)作產(chǎn)生的。一個(gè)示例是重傳算法的觸發(fā)。通常,操作系統(tǒng)提供向所有OS模塊提供時(shí)間和調(diào)度服務(wù)(由硬件時(shí)鐘中斷驅(qū)動(dòng)),這使得TCP棧能夠逐個(gè)連接地實(shí)現(xiàn)定時(shí)器。如果在用戶級(jí)實(shí)現(xiàn)標(biāo)準(zhǔn)內(nèi)核棧,則該結(jié)構(gòu)可能通常如圖4所示。應(yīng)用程序與傳輸程序庫(kù)連接,而不是直接與OS接口連接。這種結(jié)構(gòu)與具有諸如由用戶級(jí)分組提供的定時(shí)器支持的服務(wù)的內(nèi)核棧實(shí)現(xiàn)很相似,設(shè)備驅(qū)動(dòng)程序接口被用戶級(jí)虛擬接口模塊代替。然而,為了提供TCP實(shí)現(xiàn)所需要的異步處理模型,必須在傳輸程序庫(kù)中執(zhí)行多個(gè)活動(dòng)線程(i)由應(yīng)用程序提供的系統(tǒng)API調(diào)用(ii)協(xié)議代碼中的所生成的定時(shí)器的調(diào)用(iii)虛擬網(wǎng)絡(luò)接口管理和協(xié)議代碼中的所得到的向上調(diào)用(對(duì)于某些架構(gòu)可以組合ii和iii)。然而,這種設(shè)置帶來(lái)了許多問(wèn)題(a)這些線程之間的上下文切換以及保護(hù)共享數(shù)據(jù)結(jié)構(gòu)而實(shí)現(xiàn)鎖定的開(kāi)銷很大,花費(fèi)了很大量的處理時(shí)間。(b)用戶級(jí)定時(shí)器代碼通常通過(guò)使用由操作系統(tǒng)提供的定時(shí)器/時(shí)間支持來(lái)進(jìn)行操作。由來(lái)自定時(shí)器模塊的系統(tǒng)調(diào)用引起的大量開(kāi)銷導(dǎo)致系統(tǒng)不能滿足防止操作系統(tǒng)和數(shù)據(jù)路徑之間的相互作用的目的。(c)可能存在許多獨(dú)立的應(yīng)用程序,每一個(gè)應(yīng)用程序都管理網(wǎng)絡(luò)連接的一個(gè)子集;某些應(yīng)用程序通過(guò)它們自己的傳輸程序庫(kù),而某些應(yīng)用程序通過(guò)現(xiàn)有的內(nèi)核棧傳輸程序庫(kù)。NIC必須能夠有效地解析分組,并基于如IP端口和主機(jī)地址位的協(xié)議信息,將它們傳送給適當(dāng)?shù)奶摂M接口(或OS)。(d)應(yīng)用程序可以將對(duì)特定網(wǎng)絡(luò)連接的控制傳遞給另一應(yīng)用程序,例如在Unix操作系統(tǒng)上的fork()系統(tǒng)調(diào)用期間。這要求訪問(wèn)連接狀態(tài)需要完全不同的傳輸程序庫(kù)實(shí)例。更糟糕的是,許多應(yīng)用程序可以共享網(wǎng)絡(luò)連接,這意味著傳輸程序庫(kù)通過(guò)(進(jìn)程間通信)技術(shù)共享所有權(quán)。用戶級(jí)的現(xiàn)有傳輸并不試圖支持該操作。(e)通常傳輸協(xié)議要求網(wǎng)絡(luò)連接的存在時(shí)間比與它連接的應(yīng)用程序要長(zhǎng)。例如使用TCP協(xié)議,當(dāng)正在發(fā)送的應(yīng)用程序退出或崩潰時(shí),傳輸必須盡力傳送已發(fā)送但未收到確認(rèn)的數(shù)據(jù)并從容地關(guān)閉連接。無(wú)論應(yīng)用程序處于什么狀態(tài)(或存在),對(duì)于能夠提供“定時(shí)器”輸入到協(xié)議堆棧的內(nèi)核棧實(shí)現(xiàn)都不會(huì)有問(wèn)題,但是,這對(duì)于在應(yīng)用程序退出、崩潰或在調(diào)試器中停止的情況下將會(huì)消失(可能不從容地消失)的傳輸程序庫(kù)是一個(gè)問(wèn)題。理想地,提供一種系統(tǒng),該系統(tǒng)至少部分地解決了這些問(wèn)題a到e中的一個(gè)或更多個(gè)。
發(fā)明內(nèi)容根據(jù)本發(fā)明的一個(gè)方面,大致地說(shuō),提供了一種通過(guò)數(shù)據(jù)處理系統(tǒng)來(lái)發(fā)送數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)能夠支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)應(yīng)用程序形成要發(fā)送的數(shù)據(jù);通過(guò)應(yīng)用程序請(qǐng)求數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能(functionality)發(fā)送要發(fā)送的數(shù)據(jù);對(duì)該請(qǐng)求進(jìn)行響應(yīng)將要發(fā)送的數(shù)據(jù)寫入到存儲(chǔ)器的一區(qū)域中;通過(guò)非操作系統(tǒng)功能和網(wǎng)絡(luò)接口設(shè)備之間的直接通信來(lái)發(fā)起該數(shù)據(jù)中的至少一些的通過(guò)網(wǎng)絡(luò)的發(fā)送操作;以及隨后通過(guò)操作系統(tǒng)訪問(wèn)存儲(chǔ)器,并通過(guò)網(wǎng)絡(luò)接口設(shè)備經(jīng)網(wǎng)絡(luò)執(zhí)行該數(shù)據(jù)中的至少某些的通過(guò)網(wǎng)絡(luò)的至少一部分發(fā)送操作。優(yōu)選地,該操作系統(tǒng)能夠直接與網(wǎng)絡(luò)接口設(shè)備進(jìn)行通信。優(yōu)選地,非操作系統(tǒng)功能之間的所述直接通信繞過(guò)該操作系統(tǒng)。優(yōu)選地,非操作系統(tǒng)功能通過(guò)軟件實(shí)現(xiàn),最優(yōu)選地,通過(guò)在數(shù)據(jù)處理系統(tǒng)上運(yùn)行的軟件實(shí)現(xiàn)。便利地,非操作系統(tǒng)功能可以是傳輸程序庫(kù)。非操作系統(tǒng)功能最優(yōu)選地不需要為了完成它執(zhí)行的步驟而增加特權(quán)級(jí)別。存儲(chǔ)器的所述區(qū)域可以被映射到該存儲(chǔ)器的第二區(qū)域。存儲(chǔ)器的第二區(qū)域可以由操作系統(tǒng)訪問(wèn),最優(yōu)選地是直接訪問(wèn),但非操作系統(tǒng)功能不能直接訪問(wèn)。該方法可以包括在發(fā)起通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送操作時(shí),啟動(dòng)定時(shí)器;以及如果在接收到對(duì)該數(shù)據(jù)的確認(rèn)之前定時(shí)器達(dá)到預(yù)定值,則從網(wǎng)絡(luò)接口設(shè)備向數(shù)據(jù)處理系統(tǒng)發(fā)送失敗消息。該方法可以包括在發(fā)起通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送操作時(shí),存儲(chǔ)該操作的記錄和作為該數(shù)據(jù)的源的應(yīng)用程序的指示;以及在接收對(duì)于該應(yīng)用程序的數(shù)據(jù)時(shí),啟動(dòng)與該應(yīng)用程序相關(guān)聯(lián)的各個(gè)記錄的定時(shí)器;以及如果在接收到對(duì)于該數(shù)據(jù)的確認(rèn)之前該定時(shí)器達(dá)到預(yù)定值,則從網(wǎng)絡(luò)接口設(shè)備向數(shù)據(jù)處理系統(tǒng)發(fā)送失敗消息。優(yōu)選地,所述或各個(gè)定時(shí)器在網(wǎng)絡(luò)接口設(shè)備上運(yùn)行。該方法可以包括在接收到對(duì)于該數(shù)據(jù)的確認(rèn)時(shí)取消定時(shí)器,其中所述或各個(gè)失敗消息被送往操作系統(tǒng)。取消定時(shí)器的步驟可以包括應(yīng)用程序以繞過(guò)操作系統(tǒng)的方式向定時(shí)器在其上運(yùn)行的實(shí)體發(fā)送信號(hào)。所述或各個(gè)失敗消息優(yōu)選地被送往作為該數(shù)據(jù)的源的應(yīng)用程序。優(yōu)選地,操作系統(tǒng)對(duì)送往不再與網(wǎng)絡(luò)設(shè)備進(jìn)行通信的應(yīng)用程序的失敗消息進(jìn)行響應(yīng),以執(zhí)行對(duì)于與該失敗消息相對(duì)應(yīng)的數(shù)據(jù)的發(fā)送操作的所述至少一部分。根據(jù)本發(fā)明的第二方面,大致地說(shuō),提供了一種通過(guò)數(shù)據(jù)處理系統(tǒng)來(lái)接收數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)能夠支持至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能而建立應(yīng)用程序接收數(shù)據(jù)的通道,該通道與存儲(chǔ)器的一區(qū)域相關(guān)聯(lián);通過(guò)以下操作經(jīng)由該通道接收數(shù)據(jù)網(wǎng)絡(luò)接口設(shè)備將接收到的數(shù)據(jù)寫到存儲(chǔ)器的該區(qū)域中;應(yīng)用程序從該區(qū)域讀出接收到的數(shù)據(jù);以及隨后如果該應(yīng)用程序不能與網(wǎng)絡(luò)設(shè)備進(jìn)行通信,則操作系統(tǒng)從該區(qū)域讀取接收到的數(shù)據(jù)。優(yōu)選地,該操作系統(tǒng)被設(shè)置為在確定應(yīng)用程序不能與網(wǎng)絡(luò)設(shè)備進(jìn)行通信時(shí),自動(dòng)地從該區(qū)域讀取接收到的數(shù)據(jù)。根據(jù)本發(fā)明的第三方面,大致地說(shuō),提供了一種通過(guò)數(shù)據(jù)處理系統(tǒng)來(lái)發(fā)送數(shù)據(jù)的方法,該系統(tǒng)能夠支持至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)應(yīng)用程序形成要發(fā)送的數(shù)據(jù);將該數(shù)據(jù)傳送到網(wǎng)絡(luò)接口設(shè)備以進(jìn)行發(fā)送;通過(guò)網(wǎng)絡(luò)接口設(shè)備發(fā)送數(shù)據(jù),并且可選地,在進(jìn)行該發(fā)送時(shí),建立與該數(shù)據(jù)相對(duì)應(yīng)的定時(shí)器;以及如果通過(guò)網(wǎng)絡(luò)接收到對(duì)于該數(shù)據(jù)的確認(rèn),則取消該定時(shí)器;或者如果定時(shí)器達(dá)到了預(yù)定值,則通過(guò)網(wǎng)絡(luò)接口設(shè)備向操作系統(tǒng)發(fā)送信號(hào),以指示沒(méi)有接收到對(duì)于該數(shù)據(jù)的確認(rèn)。該定時(shí)器可以在剛建立該定時(shí)器時(shí)啟動(dòng)。當(dāng)已建立了定時(shí)器時(shí),可以在接收到送往作為該數(shù)據(jù)的源的應(yīng)用程序的數(shù)據(jù)時(shí)啟動(dòng)該定時(shí)器,該定時(shí)器是在發(fā)送該數(shù)據(jù)時(shí)建立的。該數(shù)據(jù)的所述傳送可以通過(guò)數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能來(lái)執(zhí)行。非操作系統(tǒng)功能可以是傳輸程序庫(kù)。該數(shù)據(jù)的所述傳送可以繞過(guò)操作系統(tǒng)而執(zhí)行。所述發(fā)送信號(hào)可以包括向操作系統(tǒng)的事件隊(duì)列中施加一失敗事件。根據(jù)本發(fā)明的第四方面,大致地說(shuō),提供了一種通過(guò)數(shù)據(jù)處理系統(tǒng)來(lái)發(fā)送和接收數(shù)據(jù)的方法,該系統(tǒng)支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括分配存儲(chǔ)器的一個(gè)或更多個(gè)區(qū)域,用作在數(shù)據(jù)處理系統(tǒng)和網(wǎng)絡(luò)接口設(shè)備之間傳送數(shù)據(jù)時(shí)的緩沖器;通過(guò)應(yīng)用程序直接訪問(wèn)該存儲(chǔ)器的多個(gè)區(qū)域中的至少一個(gè),以通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一種;以及通過(guò)操作系統(tǒng)直接訪問(wèn)該存儲(chǔ)器的所述至少一個(gè)區(qū)域,以通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一個(gè)。優(yōu)選地,該方法包括通過(guò)網(wǎng)絡(luò)設(shè)備從網(wǎng)絡(luò)接收數(shù)據(jù);以及通過(guò)網(wǎng)絡(luò)設(shè)備將該數(shù)據(jù)寫入到所述區(qū)域中的所述至少一個(gè)。優(yōu)選地,該網(wǎng)絡(luò)設(shè)備被構(gòu)造為在確定應(yīng)用程序沒(méi)有響應(yīng)的情況下,向操作系統(tǒng)發(fā)送信號(hào),以訪問(wèn)所述區(qū)域中的所述至少一個(gè),并且該方法包括響應(yīng)于這種信號(hào),執(zhí)行通過(guò)操作系統(tǒng)直接訪問(wèn)存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè)的所述步驟。所述信號(hào)可以是中斷。優(yōu)選地,該網(wǎng)絡(luò)設(shè)備支持定時(shí)器,并且該方法包括啟動(dòng)該定時(shí)器,以在接收到的數(shù)據(jù)被寫入所述區(qū)域中的所述至少一個(gè)時(shí),從預(yù)設(shè)的初始值開(kāi)始計(jì)時(shí),并且如果定時(shí)器達(dá)到了預(yù)設(shè)的最終值,則確定該應(yīng)用程序不響應(yīng)。優(yōu)選地,該最終值為0。優(yōu)選地,該方法包括以下步驟通過(guò)應(yīng)用程序設(shè)置該初始值和/或最終值。最優(yōu)選地,該最終值為0,并且只有初始值是通過(guò)應(yīng)用程序設(shè)置的。優(yōu)選地,該方法包括在通過(guò)應(yīng)用程序從所述區(qū)域中的所述至少一個(gè)中讀取接收到的數(shù)據(jù)時(shí),通過(guò)應(yīng)用程序停止該定時(shí)器。優(yōu)選地,直接訪問(wèn)該存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè)以通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一個(gè)的所述步驟中的每一個(gè)都包括對(duì)通過(guò)網(wǎng)絡(luò)接口設(shè)備從網(wǎng)絡(luò)接收到的并存儲(chǔ)在所述區(qū)域中的所述至少一個(gè)中的數(shù)據(jù)進(jìn)行協(xié)議處理。該協(xié)議處理可以包括以下處理中的一個(gè)或更多個(gè)從接收到的數(shù)據(jù)中提取通信量數(shù)據(jù),通過(guò)網(wǎng)絡(luò)發(fā)送對(duì)于接收到的數(shù)據(jù)中的至少某些的確認(rèn)和/或重發(fā)消息,檢查接收到的數(shù)據(jù)中的接收數(shù)據(jù)單元的序列值,以及計(jì)算接收到的數(shù)據(jù)的校驗(yàn)和。該協(xié)議可以是TCP。優(yōu)選地,該方法包括通過(guò)網(wǎng)絡(luò)設(shè)備從所述區(qū)域中的所述至少一個(gè)中讀取數(shù)據(jù);以及通過(guò)網(wǎng)絡(luò)設(shè)備經(jīng)網(wǎng)絡(luò)發(fā)送該數(shù)據(jù)。優(yōu)選地,直接訪問(wèn)該存儲(chǔ)器的所述區(qū)域中的至少一個(gè)以通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一個(gè)的所述步驟中的每一個(gè)都包括以在所述區(qū)域中的所述至少一個(gè)中存儲(chǔ)用于發(fā)送的數(shù)據(jù)。優(yōu)選地,直接訪問(wèn)該存儲(chǔ)器的所述區(qū)域中的至少一個(gè)以通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一個(gè)的所述步驟中的每一個(gè)都包括觸發(fā)網(wǎng)絡(luò)接口設(shè)備,以執(zhí)行從所述區(qū)域中的所述至少一個(gè)中讀取數(shù)據(jù)的所述步驟。優(yōu)選地,該網(wǎng)絡(luò)設(shè)備被構(gòu)造為在確定應(yīng)用程序沒(méi)有響應(yīng)的情況下,向操作系統(tǒng)發(fā)送信號(hào),以訪問(wèn)所述區(qū)域中的所述至少一個(gè),并且該方法包括響應(yīng)于這種信號(hào),執(zhí)行通過(guò)操作系統(tǒng)直接訪問(wèn)該存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè)的所述步驟。根據(jù)本發(fā)明的另一方面,提供了一種執(zhí)行上述方法中的任意一種方法的系統(tǒng)。將參照附圖以示例的方式描述本發(fā)明,附圖中圖1是使用中的網(wǎng)絡(luò)接口設(shè)備的示意圖;圖2表示傳輸程序庫(kù)架構(gòu)的實(shí)現(xiàn);圖3是采用具有用戶級(jí)TCP傳輸?shù)臉?biāo)準(zhǔn)內(nèi)核TCP傳輸?shù)募軜?gòu);圖4表示在用戶級(jí)實(shí)現(xiàn)標(biāo)準(zhǔn)內(nèi)核棧的架構(gòu)的示意圖;圖5表示TCP傳輸架構(gòu)的示例;圖6表示由網(wǎng)絡(luò)接口設(shè)備執(zhí)行的對(duì)入局TCP/分組進(jìn)行過(guò)濾的步驟;圖7表示通過(guò)內(nèi)容可尋址存儲(chǔ)器的服務(wù)器(被動(dòng))連接的操作。具體實(shí)施例方式以下說(shuō)明使得本領(lǐng)域的技術(shù)人員能夠制造并使用本發(fā)明,并且以下說(shuō)明是在特定的應(yīng)用程序及其要求的條件下提供的。所公開(kāi)實(shí)施例的各種修改對(duì)于本領(lǐng)域的技術(shù)人員都是顯而易見(jiàn)的,并且在此定義的一般原理可以應(yīng)用于其他實(shí)施例和應(yīng)用程序,而不會(huì)脫離本發(fā)明的精神和范圍。因此,本發(fā)明不應(yīng)被限于所示的實(shí)施例,而是被給予與在此所公開(kāi)的原理和特征一致的最寬范圍。圖5表示TCP傳輸架構(gòu)的示例,該TCP傳輸架構(gòu)適于在諸如圖1的設(shè)備10的網(wǎng)絡(luò)接口設(shè)備與諸如圖1的計(jì)算機(jī)1的計(jì)算機(jī)之間提供接口。該架構(gòu)不限于這種實(shí)現(xiàn)。圖5的示例的架構(gòu)與傳統(tǒng)架構(gòu)之間的原理差異如下。(i)代表網(wǎng)絡(luò)連接執(zhí)行協(xié)議處理的TCP代碼位于傳輸程序庫(kù)和OS內(nèi)核兩者中。該代碼執(zhí)行協(xié)議處理的事實(shí)是特別重要的。(ii)連接狀態(tài)和數(shù)據(jù)緩沖器保存在內(nèi)核存儲(chǔ)器和映射到傳輸程序庫(kù)的地址空間的存儲(chǔ)器中。操作系統(tǒng)是這些緩沖器的所有者,因此操作系統(tǒng)完全地控制它們,但是它們可以由應(yīng)用程序直接訪問(wèn),它們被用于該應(yīng)用程序的通信。這使得應(yīng)用程序能夠通過(guò)這些緩沖器直接發(fā)送和接收數(shù)據(jù),并從對(duì)應(yīng)的狀態(tài)緩沖器中讀取狀態(tài)數(shù)據(jù)。(iii)內(nèi)核和傳輸程序庫(kù)代碼都可以為特定的網(wǎng)絡(luò)連接和代表特定的網(wǎng)絡(luò)連接而訪問(wèn)虛擬硬件接口。(iv)可以通過(guò)虛擬硬件接口來(lái)管理定時(shí)器,(這些與網(wǎng)絡(luò)接口設(shè)備中的真實(shí)定時(shí)器相對(duì)應(yīng)),而不需要系統(tǒng)調(diào)用來(lái)設(shè)置和清除它們。NIC產(chǎn)生定時(shí)器事件,這些定時(shí)器事件被網(wǎng)絡(luò)接口設(shè)備驅(qū)動(dòng)程序接收,并且被傳送給該設(shè)備的TCP支持代碼。應(yīng)當(dāng)注意,網(wǎng)絡(luò)接口設(shè)備的TCP支持代碼是除了普通的OSTCP實(shí)現(xiàn)以外的代碼。這適于能夠與網(wǎng)絡(luò)接口設(shè)備的棧共存。在圖5的架構(gòu)中,在與NIC配合使用的數(shù)據(jù)處理器上的存儲(chǔ)器中分配緩沖區(qū),以用于通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的發(fā)送和/或接收。在使用發(fā)送緩沖器發(fā)送數(shù)據(jù)的情況下,NIC被設(shè)置為從該緩沖器中讀取數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)發(fā)送該數(shù)據(jù)。NIC可以自動(dòng)地讀取該數(shù)據(jù)并發(fā)送該數(shù)據(jù),或者它可以被觸發(fā),以通過(guò)在數(shù)據(jù)處理器上運(yùn)行的應(yīng)用程序或操作系統(tǒng)來(lái)讀取該數(shù)據(jù)。便利地,該觸發(fā)器可以是中斷。在使用接收緩沖器接收數(shù)據(jù)的情況下,NIC被設(shè)置為將通過(guò)網(wǎng)絡(luò)接收到的數(shù)據(jù)寫入該緩沖器。然后,應(yīng)用程序或操作系統(tǒng)可以讀取接收緩沖器中的數(shù)據(jù),并進(jìn)一步對(duì)其進(jìn)行處理。最便利地,緩沖器由操作系統(tǒng)擁有,在操作系統(tǒng)可以控制哪些實(shí)體可以訪問(wèn)緩沖器的情況下,操作系統(tǒng)分配和/或創(chuàng)建這些緩沖器,并且它負(fù)責(zé)刪除這些緩沖區(qū)。然而,應(yīng)用程序和操作系統(tǒng)都可以直接訪問(wèn)緩沖器,以從緩沖器中讀取數(shù)據(jù)以及將數(shù)據(jù)寫入到緩沖器中。執(zhí)行這些步驟的情況將在下面描述。在發(fā)送數(shù)據(jù)的情況下,希望應(yīng)用程序?qū)?shù)據(jù)寫入緩沖器以進(jìn)行發(fā)送,然后觸發(fā)NIC,以從緩沖器中讀取該數(shù)據(jù),來(lái)發(fā)送該數(shù)據(jù)。在某些情況下,只要這樣就足夠使得數(shù)據(jù)被成功地通過(guò)網(wǎng)絡(luò)發(fā)送。然而,NIC不對(duì)所發(fā)送的或所接收的數(shù)據(jù)進(jìn)行協(xié)議處理。相反,它由應(yīng)用程序或操作系統(tǒng)來(lái)執(zhí)行。因此,例如如果預(yù)期的接收者沒(méi)有成功地接收到該數(shù)據(jù),則應(yīng)用程序或者操作系統(tǒng)必須處理確認(rèn)、重傳請(qǐng)求等(根據(jù)所使用的協(xié)議),并使NIC執(zhí)行重傳。通常,可以預(yù)期由應(yīng)用程序來(lái)完成該處理。當(dāng)NIC具有對(duì)于應(yīng)用程序的數(shù)據(jù)(例如,確認(rèn)消息或超時(shí))時(shí),其將該數(shù)據(jù)寫入接收緩沖器和/或事件隊(duì)列。同時(shí),它使定時(shí)器開(kāi)始運(yùn)行。當(dāng)應(yīng)用程序訪問(wèn)該數(shù)據(jù)時(shí),它停止并重置該定時(shí)器。這樣,NIC知道應(yīng)用程序進(jìn)行了響應(yīng)。然而,如果定時(shí)器達(dá)到預(yù)定值,則NIC確定應(yīng)用程序沒(méi)有響應(yīng),并向操作系統(tǒng)發(fā)送信號(hào)(例如,通過(guò)中斷),以處理對(duì)于該應(yīng)用程序的數(shù)據(jù)。這具有許多優(yōu)點(diǎn)。首先,即使該應(yīng)用程序忙或者未被調(diào)度,數(shù)據(jù)的發(fā)送也可以由操作系統(tǒng)來(lái)進(jìn)行。第二,因?yàn)樵诒匾那闆r下,操作系統(tǒng)將接管,所以一旦將數(shù)據(jù)放到發(fā)送隊(duì)列中,則向應(yīng)用程序提供了有意地忽略該數(shù)據(jù)的機(jī)會(huì)(例如,通過(guò)使應(yīng)用程序自己不被調(diào)度)。優(yōu)選地,應(yīng)用程序控制定時(shí)器的長(zhǎng)度,例如通過(guò)設(shè)置它的初始值。這使得應(yīng)用程序能夠?qū)⒍〞r(shí)器設(shè)置為適于它的優(yōu)先級(jí)。優(yōu)選地,該定時(shí)器是應(yīng)用程序直接訪問(wèn)的NIC上的硬件資源。在接收數(shù)據(jù)的情況下,該NIC接收數(shù)據(jù)并將數(shù)據(jù)寫入到接收緩沖器中。在進(jìn)行該處理時(shí),該NIC設(shè)置如上所述的定時(shí)器,并且優(yōu)選地,通過(guò)事件隊(duì)列來(lái)通知應(yīng)用程序。當(dāng)應(yīng)用程序訪問(wèn)該數(shù)據(jù)時(shí),該NIC如上所述重置定時(shí)器。這同樣向NIC提供了確定應(yīng)用程序何時(shí)沒(méi)有響應(yīng)的可能性。對(duì)于相同的目的,可以使用其它手段,例如通過(guò)NIC周期性地掃描緩沖器中的數(shù)據(jù)。如果應(yīng)用程序被確定為沒(méi)有響應(yīng),則NIC再次向操作系統(tǒng)發(fā)送信號(hào),以處理接收到的數(shù)據(jù)。在接收到的數(shù)據(jù)的情況下,由應(yīng)用程序或操作系統(tǒng)的進(jìn)行處理通常涉及協(xié)議處理(例如,檢查分組序列號(hào),處理校驗(yàn)和,提取通信量數(shù)據(jù)和/或向NIC發(fā)送信號(hào)以發(fā)送確認(rèn)或重傳請(qǐng)求)和/或從通常在用戶級(jí)使用的緩沖器中去除數(shù)據(jù)。同時(shí),優(yōu)選地,緩沖器由操作系統(tǒng)來(lái)分配,這對(duì)于響應(yīng)于來(lái)自應(yīng)用程序的請(qǐng)求來(lái)進(jìn)行該操作是很方便的。因此,如果接收到的數(shù)據(jù)溢出對(duì)于應(yīng)用程序可用的接收緩沖器,則該應(yīng)用程序可以請(qǐng)求通過(guò)操作系統(tǒng)分配進(jìn)一步的緩沖器。如果出現(xiàn)這種情況,則NIC可以根據(jù)預(yù)先存儲(chǔ)的規(guī)則,考慮到諸如保持空閑的接收緩沖器的量的因素,通過(guò)事件向應(yīng)用程序發(fā)送信號(hào)。當(dāng)進(jìn)行該信號(hào)發(fā)送時(shí),NIC可以再次設(shè)置定時(shí)器,并且如果應(yīng)用程序沒(méi)有響應(yīng),則該NIC可以向操作系統(tǒng)請(qǐng)求進(jìn)一步的接收緩沖器。然后操作系統(tǒng)可以分配該緩沖器,將其通知給NIC,以使得即使應(yīng)用程序沒(méi)有響應(yīng),可以為該應(yīng)用程序連續(xù)地接收數(shù)據(jù)。這種架構(gòu)的效果如下。(a)多線程在傳輸程序庫(kù)中起作用的要求對(duì)于圖5的架構(gòu)沒(méi)有該要求,因?yàn)門CP代碼可以作為系統(tǒng)API調(diào)用(例如recv())的結(jié)果在傳輸程序庫(kù)中執(zhí)行(參見(jiàn)圖5的步驟i),或者作為定時(shí)器事件的結(jié)果通過(guò)內(nèi)核執(zhí)行(參見(jiàn)圖5的步驟ii)。在任一情況下,可以管理VI(虛擬接口),并且兩個(gè)代碼路徑可以訪問(wèn)連接狀態(tài)或者數(shù)據(jù)緩沖器,其保護(hù)和互斥可以通過(guò)共享的存儲(chǔ)器鎖(memorylock)來(lái)管理。該特征使得可以消除在傳輸程序庫(kù)級(jí)切換的線程的開(kāi)銷,并且該特征可以防止要求應(yīng)用程序改變它們的線程和信號(hào)處理的假設(shè)(assumption)例如,在某些情況下,要求單個(gè)線程的應(yīng)用程序連接到多線程的程序庫(kù)是不能接受的。(b)發(fā)出用于定時(shí)器管理的系統(tǒng)調(diào)用的要求對(duì)于圖5的架構(gòu)沒(méi)有該要求,因?yàn)榫W(wǎng)絡(luò)接口設(shè)備可以實(shí)現(xiàn)多個(gè)定時(shí)器,這些定時(shí)器可以分配給特定的虛擬接口實(shí)例例如,每個(gè)起作用的TCP傳輸程序庫(kù)可以有一個(gè)定時(shí)器??梢酝ㄟ^(guò)存儲(chǔ)器映射的VI使得這些定時(shí)器可編程(參見(jiàn)圖5的步驟ii),并且導(dǎo)致發(fā)出事件(參見(jiàn)圖5的步驟iv)。因?yàn)槎〞r(shí)器可以不需要系統(tǒng)調(diào)用(不需要直接涉及操作系統(tǒng))而被設(shè)置和清零,所以可以大大減少定時(shí)器管理的開(kāi)銷。(c)校正分組到多個(gè)傳輸程序庫(kù)的發(fā)送網(wǎng)絡(luò)接口設(shè)備可以包含或者訪問(wèn)內(nèi)容可尋址存儲(chǔ)器,它可以對(duì)從入局分組的頭部獲得的位進(jìn)行匹配,作為并行硬件匹配操作。該匹配的結(jié)果可以用來(lái)指示必須用來(lái)進(jìn)行發(fā)送的目的地虛擬接口,并且該硬件可以進(jìn)行操作以將該分組發(fā)送到形成在VI上的緩沖器。下面描述用于匹配處理的一種可能的設(shè)置。下面描述的設(shè)置可以被擴(kuò)展為對(duì)與IPv6相關(guān)聯(lián)的更大主機(jī)地址進(jìn)行多路分解(de-multiplex),雖然與所描述的設(shè)置相比,這要求每個(gè)分組的更寬CAM或者多個(gè)CAM查找。為此目的而使用CAM的一個(gè)另選方案是使用散列(hash)算法,該散列算法使得能夠處理來(lái)自分組的頭部的數(shù)據(jù),以確定要使用的虛擬接口。(d)進(jìn)程/應(yīng)用程序/線程之間的連接的轉(zhuǎn)交當(dāng)轉(zhuǎn)交網(wǎng)絡(luò)連接時(shí),可以在應(yīng)用程序之間傳送相同系統(tǒng)范圍的資源句柄。這例如可以是文件描述符。網(wǎng)絡(luò)接口設(shè)備的這種架構(gòu)可以使得與該網(wǎng)絡(luò)連接相關(guān)聯(lián)的所有狀態(tài)附加有(例如)該文件描述符,并且要求傳輸程序庫(kù)存儲(chǔ)器映射(memorymap)到該狀態(tài)上。在網(wǎng)絡(luò)連接的轉(zhuǎn)交之后,新的應(yīng)用程序(作為應(yīng)用程序、線程或進(jìn)程)—即使它正在不同的地址空間內(nèi)執(zhí)行—能夠進(jìn)行存儲(chǔ)器映射并繼續(xù)使用該狀態(tài)。此外,通過(guò)與內(nèi)核和傳輸程序庫(kù)之間使用的相同的支持原語(yǔ)(backingprimitive),任意數(shù)量的應(yīng)用程序可以共用具有與標(biāo)準(zhǔn)系統(tǒng)API指定的相同語(yǔ)義的網(wǎng)絡(luò)連接。(e)當(dāng)傳輸程序庫(kù)被停止、破壞或退出時(shí)傳輸協(xié)議操作的完成。該步驟可以在網(wǎng)絡(luò)接口設(shè)備的架構(gòu)中實(shí)現(xiàn),因?yàn)檫B接狀態(tài)和協(xié)議代碼可以保持內(nèi)核常駐。OS內(nèi)核代碼能夠以與普通的TCP(TCPk)協(xié)議棧相同的方式被告知應(yīng)用程序的狀態(tài)的變化。被停止的應(yīng)用程序則不向預(yù)先的協(xié)議執(zhí)行提供線程,但是該協(xié)議將通過(guò)定時(shí)器事件而繼續(xù),例如,如現(xiàn)有技術(shù)的內(nèi)核棧協(xié)議。存在許多新出現(xiàn)的協(xié)議,例如IETFRDMA和iSCSI。這些協(xié)議中的至少某些協(xié)議被設(shè)計(jì)為在其中TCP和其它協(xié)議代碼在網(wǎng)絡(luò)接口設(shè)備中運(yùn)行的環(huán)境下運(yùn)行?,F(xiàn)在將描述使得這些協(xié)議能夠在主機(jī)CPU上運(yùn)行的設(shè)施(也就是,使用網(wǎng)絡(luò)接口卡所連接的計(jì)算機(jī)的處理裝置)。這樣的實(shí)現(xiàn)是有利的,因?yàn)樗沟糜脩裟軌蚶冕槍?duì)協(xié)處理器的主CPU技術(shù)的價(jià)格/性能優(yōu)勢(shì)。諸如RDMA的協(xié)議涉及成幀(framing)信息的嵌入和TCP流內(nèi)的循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)。盡管成幀信息對(duì)于協(xié)議程序庫(kù)內(nèi)的計(jì)算是微不足道的,但CRC(與校驗(yàn)和相反)計(jì)算量大,并且最好由硬件完成。為適應(yīng)于該處理,當(dāng)TCP流攜帶RDMA或類似的封裝時(shí),虛擬接口中的選項(xiàng)例如可以通過(guò)標(biāo)志而被使能。當(dāng)檢測(cè)該選項(xiàng)時(shí),NIC將對(duì)所發(fā)送的每一個(gè)分組進(jìn)行解析,恢復(fù)RDMA幀,應(yīng)用RDMACRC算法,并在發(fā)送期間的空閑時(shí)間(onthefly)插入CCRC。可以有利地與要求計(jì)算量相對(duì)大的錯(cuò)誤校驗(yàn)數(shù)據(jù)的計(jì)算的其它協(xié)議(例如,iSCSI)相關(guān)地使用類似的過(guò)程。與這種系統(tǒng)一致,在接收到的分組使用類似的邏輯時(shí),網(wǎng)絡(luò)接口設(shè)備也可以校驗(yàn)CRC。這例如可以按照與標(biāo)準(zhǔn)TCP校驗(yàn)和卸載技術(shù)類似的方式執(zhí)行。諸如RDMA的協(xié)議也要求附加的操作,例如RDMAREAD,在傳統(tǒng)的實(shí)現(xiàn)中,其要求網(wǎng)絡(luò)接口設(shè)備的附加智能。這種類型的實(shí)現(xiàn)導(dǎo)致通常認(rèn)為RDMA/TCP應(yīng)該最好通過(guò)協(xié)處理器網(wǎng)絡(luò)接口設(shè)備來(lái)執(zhí)行。在此描述的類型的架構(gòu)中,可以對(duì)特殊的硬件過(guò)濾器進(jìn)行編碼,以捕捉請(qǐng)求特定網(wǎng)絡(luò)連接的上級(jí)協(xié)議。在這種環(huán)境下,NIC可以產(chǎn)生與定時(shí)器事件類似的事件,以請(qǐng)求通過(guò)在所連接的計(jì)算機(jī)上運(yùn)行的軟件來(lái)進(jìn)行動(dòng)作,并且發(fā)送數(shù)據(jù)消息。通過(guò)以這種方式觸發(fā)事件,NIC可以獲得下述的結(jié)果傳輸程序庫(kù)或者內(nèi)核輔助器立即對(duì)該請(qǐng)求進(jìn)行動(dòng)作。這可以避免在傳輸程序庫(kù)被調(diào)度之前內(nèi)核擴(kuò)展不執(zhí)行的潛在問(wèn)題,并且如果需要,可以應(yīng)用于其他上級(jí)協(xié)議。促進(jìn)協(xié)處理器TCP實(shí)現(xiàn)的一個(gè)優(yōu)勢(shì)是,在發(fā)送和接收時(shí)執(zhí)行零復(fù)制(zero-copy)的能力。在實(shí)踐中,如果在接收路徑上(對(duì)于上述的架構(gòu))沒(méi)有上下文切換或其他緩存或TLB(發(fā)送后備緩沖器)充溢操作,則在接收時(shí)幾乎沒(méi)有單個(gè)復(fù)制的開(kāi)銷,因?yàn)檫@用于向處理器加載接收到的數(shù)據(jù)的目的。當(dāng)應(yīng)用程序隨后訪問(wèn)該數(shù)據(jù)時(shí),它不會(huì)受到緩存未命中的影響,而這可能是零復(fù)制接口的情況。然而,在發(fā)送時(shí),由傳輸程序庫(kù)進(jìn)行的單個(gè)復(fù)制確實(shí)在處理器循環(huán)和在緩存污染(pollution)中導(dǎo)致了附加的開(kāi)銷。如果實(shí)現(xiàn)例如下面的機(jī)制,則上述架構(gòu)使得可以避免發(fā)送操作時(shí)的復(fù)制(i)可以快速地確認(rèn)所發(fā)送的數(shù)據(jù)(例如,在低延遲環(huán)境中);另選地(ii)在一次傳輸中的所有數(shù)據(jù)被發(fā)送之前,數(shù)據(jù)幾乎完全被確認(rèn)(例如,如果帶寬×延遲的乘積小于消息的大小)。傳輸程序庫(kù)可以簡(jiǎn)單地保留發(fā)送緩沖器,直到來(lái)自它們的數(shù)據(jù)被確認(rèn)為止,并且發(fā)送數(shù)據(jù)而不進(jìn)行復(fù)制。當(dāng)應(yīng)用程序使用異步網(wǎng)絡(luò)API時(shí),也可以進(jìn)行該處理。即使在數(shù)據(jù)復(fù)制不可避免的情況下,傳輸程序庫(kù)可以使用執(zhí)行非臨時(shí)存儲(chǔ)的存儲(chǔ)器復(fù)制例程。它們可以將被復(fù)制的數(shù)據(jù)留在存儲(chǔ)器中(而不是緩存),因此避免了緩存污染。不在緩存中的數(shù)據(jù)被認(rèn)為不會(huì)影響性能,因?yàn)橄乱粋鬏敳襟E被認(rèn)為是通過(guò)網(wǎng)絡(luò)接口設(shè)備進(jìn)行的數(shù)據(jù)的DMA,該DMA操作的性能不可能受到位于存儲(chǔ)器中而不是緩存中的數(shù)據(jù)的影響。圖6表示由上述網(wǎng)絡(luò)接口設(shè)備執(zhí)行的過(guò)濾入局TCP分組的步驟。在步驟I,由網(wǎng)絡(luò)接口設(shè)備從網(wǎng)絡(luò)接收分組,并且該分組進(jìn)入接收解碼管道(pipeline)。在步驟ii,硬件從分組中提取相關(guān)位,并形成過(guò)濾器(在本例中為32位長(zhǎng)),該過(guò)濾器被提供給CAM。相關(guān)位的構(gòu)造和數(shù)量取決于所使用的協(xié)議;本示例涉及TCP/IP和UDP/IP。在步驟iii中,當(dāng)進(jìn)行CAM匹配時(shí),導(dǎo)致返回索引MATCH_IDX,該索引可用于查找發(fā)送信息(例如,用于該連接的下一接收緩沖器的存儲(chǔ)器地址)。在步驟iv,該發(fā)送信息被反饋給分組解碼管道,并且使得分組能夠被發(fā)送到適當(dāng)?shù)拇鎯?chǔ)器位置?,F(xiàn)在描述位的選擇以及用它們形成過(guò)濾器。網(wǎng)絡(luò)接口設(shè)備可以(優(yōu)選地在硬件中)中斷或緩沖入局分組流,為了使它能夠有效地暫停網(wǎng)絡(luò)頭部。這使得它可以在不影響數(shù)據(jù)流的情況下識(shí)別入局分組中的相關(guān)位序列。對(duì)于TCP和/或UDP分組,由于這種分組的簡(jiǎn)單頭部設(shè)計(jì)(layout),所以位序列的識(shí)別例如可以使用簡(jiǎn)單的解碼管道來(lái)實(shí)現(xiàn)。這導(dǎo)致寄存器中保存了大量字段??梢约俣?,0既不是有效的端口號(hào),也不是有效的IP地址,并且獨(dú)立進(jìn)程中的接口不共享本地IP地址和端口對(duì)(除了在fork()命令或等價(jià)命令之后共享套接字(socket)的情況)。后一條件意味著當(dāng)對(duì)接收到的TCP分組進(jìn)行多路分解時(shí),忽略本地IP地址是安全的。對(duì)于偵聽(tīng)TCP套接字,只需要考慮本地IP和端口號(hào),而對(duì)于已建立的TCP套接字,應(yīng)該考慮遠(yuǎn)程IP和兩個(gè)端口號(hào)。因此,由網(wǎng)絡(luò)接口設(shè)備執(zhí)行的處理應(yīng)該(便利地,在硬件中)確定接收到的分組是TCP分組還是UDP分組,對(duì)于TCP分組,必須檢查SYN和ACK位。于是可以相應(yīng)地形成在CAM中查找的標(biāo)記(token)。下表中示出了CAM的操作表1在該表中,第1列表示接收到的分組的類型,其余列表示該標(biāo)記的前32位、接下來(lái)的16位和最后16位的內(nèi)容。如果一直使用相同的約定,則這些位的順序是不重要的。下表給出了示例表2在這些示例中,編號(hào)1表示在192.168.123.13580上的本地網(wǎng)絡(luò)服務(wù)偵聽(tīng)的情形;編號(hào)2表示從66.35.250.15033028通過(guò)服務(wù)器接收的連接的情形;編號(hào)3表示本地發(fā)起的到66.35.250.150的telnet連接;編號(hào)4表示應(yīng)用程序在端口123接收UDP分組的情形。通過(guò)分離出TCPSYN=1&ACK=0的情形,如在表1的第1行中,可以保證這些條目與TCP連接請(qǐng)求消息(以處于LISTEN狀態(tài)的套接字為目的地)匹配,但不與連接應(yīng)答(以SYN_SENT狀態(tài)的套接字為目的地)匹配。零字段的其它組合可以用來(lái)對(duì)其它字段進(jìn)行多路分解。例如,可以對(duì)以太網(wǎng)頭部的ETHER_TYPE字段執(zhí)行多路分解。確定CAM過(guò)濾器的結(jié)構(gòu)的邏輯依賴于所使用的協(xié)議。在實(shí)際實(shí)現(xiàn)時(shí),CAM可以通過(guò)傳輸程序庫(kù)代碼經(jīng)由虛擬接口來(lái)配置,使得能夠?qū)μ囟ǖ膶?shí)現(xiàn)動(dòng)態(tài)地建立CAM。在UDP協(xié)議下,UDP分組中指定的各個(gè)網(wǎng)絡(luò)端點(diǎn)可以被如表1所示的過(guò)濾器唯一地識(shí)別。在TCP協(xié)議下,為了明確地指定端點(diǎn)的唯一標(biāo)識(shí),該標(biāo)識(shí)通常需要所有的主機(jī)和端口字段。出現(xiàn)這種需求是因?yàn)門CP協(xié)議定義允許多個(gè)客戶端與具有相同目的地主機(jī)和端口地址的網(wǎng)絡(luò)端點(diǎn)相連;從客戶端或者服務(wù)器發(fā)起連接;或者服務(wù)器網(wǎng)絡(luò)端點(diǎn)在單個(gè)端點(diǎn)上接收連接請(qǐng)求并且產(chǎn)生新的網(wǎng)絡(luò)端點(diǎn)來(lái)處理數(shù)據(jù)傳輸。這種分組中的頭部通常是96位長(zhǎng)。然而,構(gòu)造96位的過(guò)濾器對(duì)于大多數(shù)商業(yè)可用的CAM來(lái)說(shuō)是低效率的,因?yàn)樗鼈兺ǔT?4或128(而不是96)位寬度的情況下可用。下面的機(jī)制使得能夠更有效地構(gòu)造64位過(guò)濾器。可以選擇CAM的長(zhǎng)度以適于應(yīng)用程序。適宜的大小可以是16kb。(1)如果服務(wù)器(被動(dòng))套接字正在偵聽(tīng)新的連接,則所有有效的入局TCP分組會(huì)把它們的SYN位設(shè)置在它們的頭部中,以表示需要使序列號(hào)同步。該類型的分組由NIC識(shí)別,并用于形成如表1所示的過(guò)濾器。注意,該過(guò)濾器的位設(shè)計(jì)意味著由于零字段位置,所以該過(guò)濾器不能與具有相同的主機(jī)端口對(duì)的UDP端點(diǎn)沖突。因此,該CAM過(guò)濾器的設(shè)計(jì)被用來(lái)表示協(xié)議解碼情況。(2)一旦建立了連接,則有效入局分組會(huì)將它們的SYN位設(shè)置為0,并且可以通過(guò)表1所示的邏輯被正確地過(guò)濾。注意,在這種情況下,為了識(shí)別正確的目的地傳輸程序庫(kù),不再需要DEST(目的地)主機(jī)的標(biāo)識(shí),雖然該程序庫(kù)在正常的接收過(guò)程中將作為其正常的分組確認(rèn)過(guò)程的一部分而對(duì)該字段進(jìn)行檢查。對(duì)于各個(gè)分組,針對(duì)服務(wù)器(被動(dòng))連接、CAM的內(nèi)容(由服務(wù)器傳輸程序庫(kù)進(jìn)行了編程)和由NIC提供給CAM的過(guò)濾器而示出了該過(guò)程,如圖7中所示。該過(guò)程包括以下步驟(a)傳輸程序庫(kù)通過(guò)驅(qū)動(dòng)程序分配CAM條目。(b)驅(qū)動(dòng)程序通過(guò)其受保護(hù)的控制接口對(duì)硬件進(jìn)行編程,以將所分配的CAM映射到被分配給傳輸程序庫(kù)的虛擬接口的地址空間。(c)傳輸程序庫(kù)通過(guò)其虛擬接口對(duì)CAM條目進(jìn)行編程。其中應(yīng)用程序被認(rèn)為不具有足夠的訪問(wèn)權(quán)限來(lái)接收可編程的CAM條目,但是它可以通過(guò)OS調(diào)用來(lái)進(jìn)行該處理。(ii)TCP/IP連接分組到達(dá)。因?yàn)榉纸M頭部中的SYN位被設(shè)置為1,并且分組頭部中的ACK位被設(shè)置為0,所以網(wǎng)絡(luò)接口設(shè)備可以根據(jù)分組頭部中的這些位構(gòu)造該過(guò)濾器{目的地主機(jī),0,目的地端口}并將它提供給CAM。這導(dǎo)致產(chǎn)生與CAM索引X的匹配。網(wǎng)絡(luò)接口設(shè)備隨后可以查找并在SRAM中找到虛擬接口β的基地址。然后NIC可以向虛擬接口β發(fā)送分組。作為連接分組的結(jié)果,服務(wù)器應(yīng)用程序可以創(chuàng)建另一網(wǎng)絡(luò)端點(diǎn),以處理該網(wǎng)絡(luò)連接。該端點(diǎn)可以在它自己的或者另一應(yīng)用程序的上下文中,從而可以由另一傳輸程序庫(kù)管理。在任一情況下,可以創(chuàng)建將{目的地主機(jī),端口}與{源主機(jī),端口}相結(jié)合的網(wǎng)絡(luò)連接,服務(wù)器使用{源主機(jī),源端口,目的地端口}對(duì)新的CAM條目進(jìn)行編程。(iii)當(dāng)分組對(duì)于新網(wǎng)絡(luò)連接而到達(dá)時(shí),它會(huì)把它的SYN位設(shè)置為0。這使NIC構(gòu)造過(guò)濾器{源,主機(jī)源端口,目的地端口}當(dāng)將該過(guò)濾器提供給CAM時(shí),導(dǎo)致產(chǎn)生與SRAM中的虛擬接口σ匹配的匹配索引θ。應(yīng)當(dāng)注意,如果網(wǎng)絡(luò)連接由與服務(wù)器端點(diǎn)相同的傳輸程序庫(kù)管理,則σ可以與β相同。類似地,可以對(duì)由該主機(jī)發(fā)起的有效(客戶端)連接以及TCP和UDP協(xié)議規(guī)范中規(guī)定的所有通信模型應(yīng)用該解碼。這種解碼方案的一個(gè)明顯的好處是它使得硬件能夠只使用一個(gè)CAM查找就可以確定虛擬接口的地址。優(yōu)選地,網(wǎng)絡(luò)接口設(shè)備還支持下述的操作模式,在該操作模式中,它簡(jiǎn)單地將分組多路分解到傳輸程序庫(kù),而不是到網(wǎng)絡(luò)端點(diǎn)。這對(duì)于該設(shè)備處理網(wǎng)絡(luò)和對(duì)與該網(wǎng)絡(luò)的大量(例如數(shù)百萬(wàn))連接進(jìn)行服務(wù)所需的服務(wù)器之間的通信的情況是有益的。其示例可以是高容量的網(wǎng)絡(luò)服務(wù)器節(jié)點(diǎn)??梢杂袃煞N選擇。一種選擇是在CAM中只存儲(chǔ){目的地主機(jī),目的地端口}形式的過(guò)濾器。另一種選擇是應(yīng)用可以使用“don’tcare(無(wú)關(guān))”位掩蓋的三元(ternary)CAM。應(yīng)當(dāng)注意,如果兩種操作模式同時(shí)被使能,則當(dāng)在接收到的分組中SYN位被設(shè)置為0時(shí),由于必須構(gòu)造不同的過(guò)濾器而使得可能需要兩個(gè)CAM查找,所以效率可能會(huì)降低。如果一次只使能一種模式,則可以避免這種需要?!熬W(wǎng)絡(luò)接口卡”可以實(shí)現(xiàn)為物理卡或者它可以按照另一方式來(lái)實(shí)現(xiàn),例如實(shí)現(xiàn)為集成電路,該集成電路被結(jié)合到數(shù)據(jù)處理設(shè)備的主板中。通過(guò)這種方式,TCP/IP和UDP/IP分組都可以用64位的CAM進(jìn)行匹配與在使用標(biāo)準(zhǔn)大小的、逐位匹配整個(gè)頭部的CAM所需的128位相反。申請(qǐng)人在此分別公開(kāi)了這里所描述的各個(gè)單獨(dú)的特征,以及這些特征中的兩個(gè)或更多個(gè)的任意組合,結(jié)合本領(lǐng)域的技術(shù)人員的公知常識(shí),根據(jù)作為整體的本說(shuō)明書,能夠?qū)崿F(xiàn)這些特征或者組合,而不考慮這些特征或者組合是否解決了在此公開(kāi)的任何問(wèn)題,并且不限于權(quán)利要求的范圍。申請(qǐng)人指出,本發(fā)明的多個(gè)方面可以由任何這種單個(gè)特征和多個(gè)特征的組合構(gòu)成。根據(jù)前面的描述,可以在本發(fā)明的范圍內(nèi)進(jìn)行各種修改對(duì)于本領(lǐng)域的技術(shù)人員是顯而易見(jiàn)的。權(quán)利要求1.一種通過(guò)數(shù)據(jù)處理系統(tǒng)發(fā)送數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)能夠支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)所述應(yīng)用程序形成要發(fā)送的數(shù)據(jù);通過(guò)所述應(yīng)用程序請(qǐng)求所述數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能,以發(fā)送所述要發(fā)送的數(shù)據(jù);響應(yīng)于該請(qǐng)求將所述要發(fā)送的數(shù)據(jù)寫入所述存儲(chǔ)器的一區(qū)域;以及通過(guò)所述非操作系統(tǒng)功能和所述網(wǎng)絡(luò)接口設(shè)備之間的直接通信發(fā)起所述數(shù)據(jù)中的至少某些數(shù)據(jù)的通過(guò)所述網(wǎng)絡(luò)的發(fā)送操作;以及隨后通過(guò)所述操作系統(tǒng)訪問(wèn)所述存儲(chǔ)器,并通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行所述數(shù)據(jù)中的至少某些數(shù)據(jù)的通過(guò)所述網(wǎng)絡(luò)的發(fā)送操作中的至少一部分。2.如權(quán)利要求1所述的方法,其中,所述操作系統(tǒng)能夠直接與所述網(wǎng)絡(luò)接口設(shè)備通信。3.如權(quán)利要求2所述的方法,其中,所述非操作系統(tǒng)功能之間的所述直接通信繞過(guò)所述操作系統(tǒng)。4.如前面任一權(quán)利要求所述的方法,其中,所述非操作系統(tǒng)功能是傳輸程序庫(kù)。5.如前面任一權(quán)利要求所述的操作系統(tǒng),其中,所述存儲(chǔ)器的所述區(qū)域被映射到所述存儲(chǔ)器的第二區(qū)域,并且所述存儲(chǔ)器的第二區(qū)域可由所述操作系統(tǒng)訪問(wèn),但不可以由所述非操作系統(tǒng)功能直接訪問(wèn)。6.如前面任一權(quán)利要求所述的方法,該方法包括當(dāng)發(fā)起通過(guò)所述網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送操作時(shí),啟動(dòng)定時(shí)器;以及如果在收到對(duì)于該數(shù)據(jù)發(fā)送的確認(rèn)之前該定時(shí)器達(dá)到預(yù)定值,則從所述網(wǎng)絡(luò)接口設(shè)備向所述數(shù)據(jù)處理系統(tǒng)發(fā)送失敗消息。7.如權(quán)利要求1到5中的任意一項(xiàng)所述的方法,該方法包括當(dāng)發(fā)起通過(guò)所述網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送操作時(shí),存儲(chǔ)該操作的記錄和作為該數(shù)據(jù)的源的應(yīng)用程序的指示;以及當(dāng)接收對(duì)于該應(yīng)用程序的數(shù)據(jù)時(shí),對(duì)于與該應(yīng)用程序相關(guān)聯(lián)的每個(gè)記錄啟動(dòng)定時(shí)器;以及如果在收到對(duì)于該數(shù)據(jù)發(fā)送的確認(rèn)之前該定時(shí)器達(dá)到預(yù)定值,則從所述網(wǎng)絡(luò)接口設(shè)備向所述數(shù)據(jù)處理系統(tǒng)發(fā)送失敗消息。8.如權(quán)利要求6或7所述的方法,其中,所述或各個(gè)定時(shí)器在所述網(wǎng)絡(luò)接口設(shè)備上運(yùn)行。9.如權(quán)利要求6到8中的任意一項(xiàng)所述的方法,該方法包括在接收到對(duì)于所述數(shù)據(jù)的確認(rèn)時(shí)取消所述定時(shí)器,并且其中所述或各個(gè)失敗消息被送往所述操作系統(tǒng)。10.如權(quán)利要求9所述的方法,其中,取消所述定時(shí)器的步驟包括所述應(yīng)用程序以繞過(guò)所述操作系統(tǒng)的方式向所述定時(shí)器在其上運(yùn)行的實(shí)體發(fā)送信號(hào)。11.如權(quán)利要求6到10中的任意一項(xiàng)所述的方法,其中,所述或各個(gè)失敗消息被送往作為所述數(shù)據(jù)的源的應(yīng)用程序。12.如權(quán)利要求11所述的方法,其中,所述操作系統(tǒng)響應(yīng)被送往不再與所述網(wǎng)絡(luò)設(shè)備通信的應(yīng)用程序的失敗消息,以執(zhí)行與對(duì)應(yīng)于所述失敗消息的數(shù)據(jù)相關(guān)的發(fā)送操作中的所述至少一部分。13.一種用于發(fā)送數(shù)據(jù)的數(shù)據(jù)處理系統(tǒng),該系統(tǒng)可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該系統(tǒng)具有應(yīng)用程序,其被構(gòu)造用來(lái)形成要發(fā)送的數(shù)據(jù),使該數(shù)據(jù)被發(fā)送到所述存儲(chǔ)器的一區(qū)域,并請(qǐng)求所述數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能,以發(fā)送所述要發(fā)送的數(shù)據(jù);非操作系統(tǒng)功能,其被構(gòu)造用來(lái)通過(guò)它自己和所述網(wǎng)絡(luò)接口設(shè)備之間的直接通信發(fā)起所述數(shù)據(jù)中的至少某些數(shù)據(jù)的通過(guò)所述網(wǎng)絡(luò)的發(fā)送操作;以及操作系統(tǒng),其被構(gòu)造用來(lái)隨后通過(guò)該操作系統(tǒng)訪問(wèn)所述存儲(chǔ)器,并通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行所述數(shù)據(jù)中的至少某些數(shù)據(jù)的通過(guò)所述網(wǎng)絡(luò)的發(fā)送操作中的至少一部分。14.一種通過(guò)數(shù)據(jù)處理系統(tǒng)接收數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)能夠支持至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)所述數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能而建立應(yīng)用程序接收數(shù)據(jù)的通道,該通道與所述存儲(chǔ)器的一區(qū)域相關(guān)聯(lián);通過(guò)以下處理經(jīng)由所述通道接收數(shù)據(jù)所述網(wǎng)絡(luò)接口設(shè)備將接收到的數(shù)據(jù)寫到所述存儲(chǔ)器的所述區(qū)域;以及所述應(yīng)用程序從所述區(qū)域讀取接收到的數(shù)據(jù);并且隨后如果所述應(yīng)用程序不能與所述網(wǎng)絡(luò)設(shè)備進(jìn)行通信,則所述操作系統(tǒng)從所述區(qū)域讀取接收到的數(shù)據(jù)。15.如權(quán)利要求14所述的方法,其中,所述操作系統(tǒng)被設(shè)置為在確定所述應(yīng)用程序不能與所述網(wǎng)絡(luò)設(shè)備進(jìn)行通信時(shí)自動(dòng)地從所述區(qū)域讀取接收到的數(shù)據(jù)。16.一種接收數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括網(wǎng)絡(luò)接口設(shè)備,其能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接;數(shù)據(jù)處理系統(tǒng),其支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和所述網(wǎng)絡(luò)接口設(shè)備,該數(shù)據(jù)處理系統(tǒng)還具有非操作系統(tǒng)功能,該非操作系統(tǒng)功能被構(gòu)造用來(lái)建立應(yīng)用程序接收數(shù)據(jù)的通道,該通道與所述存儲(chǔ)器的一區(qū)域相關(guān)聯(lián);所述網(wǎng)絡(luò)接口設(shè)備被構(gòu)造用來(lái)將接收到的數(shù)據(jù)寫入所述存儲(chǔ)器的所述區(qū)域;所述應(yīng)用程序被構(gòu)造用來(lái)從所述區(qū)域讀取接收到的數(shù)據(jù);并且所述操作系統(tǒng)被構(gòu)造為隨后如果所述應(yīng)用程序不能與所述網(wǎng)絡(luò)設(shè)備通信,則從所述區(qū)域讀取接收到的數(shù)據(jù)。17.一種通過(guò)數(shù)據(jù)處理系統(tǒng)發(fā)送數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)能夠支持至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括以下步驟通過(guò)所述應(yīng)用程序形成要發(fā)送的數(shù)據(jù);將所述數(shù)據(jù)傳送到所述網(wǎng)絡(luò)接口設(shè)備以進(jìn)行發(fā)送;通過(guò)所述網(wǎng)絡(luò)接口設(shè)備發(fā)送所述數(shù)據(jù);建立與所述數(shù)據(jù)相對(duì)應(yīng)的定時(shí)器;以及如果通過(guò)網(wǎng)絡(luò)接收到對(duì)于所述數(shù)據(jù)的確認(rèn),則取消所述定時(shí)器;或者如果所述定時(shí)器達(dá)到了預(yù)定值,則通過(guò)所述網(wǎng)絡(luò)接口設(shè)備向所述操作系統(tǒng)發(fā)送信號(hào),以指示沒(méi)有接收到對(duì)于所述數(shù)據(jù)的確認(rèn)。18.如權(quán)利要求17所述的方法,其中,所述定時(shí)器在其建立時(shí)啟動(dòng)。19.如權(quán)利要求17所述的方法,其中,在建立所述定時(shí)器之后,在接收到送往作為所述數(shù)據(jù)的源的應(yīng)用程序時(shí)啟動(dòng)所述定時(shí)器,所述定時(shí)器是在發(fā)送所述數(shù)據(jù)時(shí)建立的。20.如權(quán)利要求17到19中的任意一項(xiàng)所述的方法,其中,所述數(shù)據(jù)的所述傳送可以通過(guò)所述數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能來(lái)執(zhí)行。21.如權(quán)利要求17到19中的任意一項(xiàng)所述的方法,其中,所述非操作系統(tǒng)功能是傳輸程序庫(kù)。22.如權(quán)利要求17到21中的任意一項(xiàng)所述的方法,其中,所述數(shù)據(jù)的所述傳送是繞過(guò)所述操作系統(tǒng)執(zhí)行的。23.如權(quán)利要求17到22中的任意一項(xiàng)所述的方法,其中,所述信號(hào)發(fā)送包括向所述操作系統(tǒng)的事件隊(duì)列中施加失敗事件。24.如權(quán)利要求17到23中的任意一項(xiàng)所述的方法,其中,所述定時(shí)器在所述網(wǎng)絡(luò)接口設(shè)備上運(yùn)行。25.如權(quán)利要求17到24中的任意一項(xiàng)所述的方法,該方法包括響應(yīng)于通過(guò)所述網(wǎng)絡(luò)接口設(shè)備向所述操作系統(tǒng)發(fā)送信號(hào)以指示沒(méi)有接收到對(duì)于所述數(shù)據(jù)的確認(rèn),與所述網(wǎng)絡(luò)接口設(shè)備進(jìn)行通信的所述操作系統(tǒng)進(jìn)一步與所述另一網(wǎng)絡(luò)設(shè)備進(jìn)行通信。26.一種用于發(fā)送數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括數(shù)據(jù)處理系統(tǒng)和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該數(shù)據(jù)處理系統(tǒng)可以訪問(wèn)存儲(chǔ)器和所述網(wǎng)絡(luò)接口設(shè)備,并進(jìn)一步具有應(yīng)用程序,其被構(gòu)造用于形成要發(fā)送的數(shù)據(jù),并將該數(shù)據(jù)傳送到所述網(wǎng)絡(luò)接口設(shè)備以進(jìn)行發(fā)送;所述網(wǎng)絡(luò)接口設(shè)備,其被構(gòu)造用來(lái)發(fā)送所述數(shù)據(jù)并建立與所述數(shù)據(jù)相對(duì)應(yīng)的定時(shí)器;并且如果通過(guò)網(wǎng)絡(luò)接收到對(duì)于所述數(shù)據(jù)的確認(rèn),則取消所述定時(shí)器;或者如果所述定時(shí)器達(dá)到了預(yù)定值,則通過(guò)所述網(wǎng)絡(luò)接口設(shè)備向操作系統(tǒng)發(fā)送信號(hào),以指示沒(méi)有接收到對(duì)于所述數(shù)據(jù)的確認(rèn)。27.一種通過(guò)數(shù)據(jù)處理系統(tǒng)發(fā)送或接收數(shù)據(jù)的方法,該系統(tǒng)支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,該方法包括分配所述存儲(chǔ)器的一個(gè)或更多個(gè)區(qū)域,以用作在所述數(shù)據(jù)處理系統(tǒng)和所述網(wǎng)絡(luò)接口設(shè)備之間傳送數(shù)據(jù)時(shí)的緩沖器;通過(guò)所述應(yīng)用程序直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行所述數(shù)據(jù)的發(fā)送和接收中的至少一種;以及通過(guò)所述操作系統(tǒng)直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行所述數(shù)據(jù)的發(fā)送和接收中的至少一種。28.如權(quán)利要求27所述的方法,其中,所述方法包括通過(guò)所述網(wǎng)絡(luò)設(shè)備從所述網(wǎng)絡(luò)接收數(shù)據(jù);以及通過(guò)所述網(wǎng)絡(luò)設(shè)備將所述數(shù)據(jù)寫入所述區(qū)域中的所述至少一個(gè)中。29.如權(quán)利要求28所述的方法,其中,所述網(wǎng)絡(luò)設(shè)備被構(gòu)造為在確定所述應(yīng)用程序沒(méi)有響應(yīng)的情況下向所述操作系統(tǒng)發(fā)送信號(hào),以訪問(wèn)所述區(qū)域中的所述至少一個(gè),并且所述方法包括響應(yīng)于這種信號(hào),通過(guò)所述操作系統(tǒng)執(zhí)行直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè)的所述步驟。30.如權(quán)利要求29所述的方法,其中,所述網(wǎng)絡(luò)設(shè)備支持定時(shí)器,并且所述方法包括啟動(dòng)所述定時(shí)器,以在接收到的數(shù)據(jù)被寫入所述區(qū)域中的所述至少一個(gè)時(shí)從預(yù)設(shè)的初始值開(kāi)始計(jì)時(shí),并且如果所述定時(shí)器達(dá)到了預(yù)設(shè)的最終值,則所述應(yīng)用程序被確定為沒(méi)有響應(yīng)。31.如權(quán)利要求30所述的方法,該方法包括以下步驟通過(guò)所述應(yīng)用程序設(shè)置所述初始值和/或所述最終值。32.如權(quán)利要求30或31所述的方法,該方法包括在通過(guò)所述應(yīng)用程序從所述區(qū)域中的所述至少一個(gè)中讀取接收到的數(shù)據(jù)時(shí),通過(guò)所述應(yīng)用程序停止所述定時(shí)器。33.如權(quán)利要求27到32中的任意一項(xiàng)所述的方法,其中,直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備進(jìn)行數(shù)據(jù)的發(fā)送和接收中的至少一種的所述步驟中的每一個(gè)都包括對(duì)通過(guò)所述網(wǎng)絡(luò)接口設(shè)備從所述網(wǎng)絡(luò)接收的并存儲(chǔ)在所述區(qū)域中的所述至少一個(gè)中的數(shù)據(jù)進(jìn)行協(xié)議處理。34.如權(quán)利要求33所述的方法,其中,所述協(xié)議處理的步驟包括從接收到的數(shù)據(jù)中提取通信量數(shù)據(jù)。35.如權(quán)利要求33所述的方法,其中,所述協(xié)議處理的步驟包括使所述網(wǎng)絡(luò)接口設(shè)備通過(guò)所述網(wǎng)絡(luò)發(fā)送對(duì)于接收到的數(shù)據(jù)中的至少某些的確認(rèn)和/或重發(fā)消息。36.如權(quán)利要求27所述的方法,其中,所述方法包括通過(guò)所述網(wǎng)絡(luò)設(shè)備從所述區(qū)域中的所述至少一個(gè)中讀取數(shù)據(jù);以及通過(guò)所述網(wǎng)絡(luò)設(shè)備經(jīng)由所述網(wǎng)絡(luò)發(fā)送所述數(shù)據(jù)。37.如權(quán)利要求36所述的方法,其中,直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行數(shù)據(jù)的發(fā)送和接收中的至少一種的所述步驟中的每一個(gè)都包括在所述區(qū)域中的所述至少一個(gè)中存儲(chǔ)數(shù)據(jù),以進(jìn)行發(fā)送。38.如權(quán)利要求36或37所述的方法,其中,直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行數(shù)據(jù)的發(fā)送和接收中的至少一個(gè)的所述步驟中的每一個(gè)都包括觸發(fā)所述網(wǎng)絡(luò)接口設(shè)備,以執(zhí)行從所述區(qū)域中的所述至少一個(gè)中讀取數(shù)據(jù)的所述步驟。39.如權(quán)利要求38所述的方法,其中,所述網(wǎng)絡(luò)設(shè)備被構(gòu)造為在確定所述應(yīng)用程序沒(méi)有響應(yīng)的情況下向所述操作系統(tǒng)發(fā)送信號(hào),以訪問(wèn)所述區(qū)域中的所述至少一個(gè),并且所述方法包括響應(yīng)于這種信號(hào),執(zhí)行通過(guò)所述操作系統(tǒng)直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè)的所述步驟。40.如權(quán)利要求39所述的方法,其中,所述網(wǎng)絡(luò)接口設(shè)備支持定時(shí)器,并且所述方法包括當(dāng)所述網(wǎng)絡(luò)接口設(shè)備向所述應(yīng)用程序發(fā)送表示接收到的數(shù)據(jù)已被寫入所述區(qū)域中的所述至少一個(gè)時(shí),啟動(dòng)所述定時(shí)器,以從預(yù)設(shè)的初始值開(kāi)始計(jì)時(shí),并且如果所述定時(shí)器達(dá)到了預(yù)設(shè)的最終值,則確定所述應(yīng)用程序沒(méi)有響應(yīng)。41.如權(quán)利要求40所述的方法,該方法包括以下步驟通過(guò)所述應(yīng)用程序設(shè)置所述初始值和/或所述最終值。42.一種發(fā)送或接收數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括數(shù)據(jù)處理系統(tǒng),其支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器,所述存儲(chǔ)器的一個(gè)或更多個(gè)區(qū)域被分配用作在所述數(shù)據(jù)處理系統(tǒng)與網(wǎng)絡(luò)接口設(shè)備之間傳送數(shù)據(jù)時(shí)的緩沖器;以及網(wǎng)絡(luò)接口設(shè)備,其能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接,所述方法包括應(yīng)用程序,其由所述數(shù)據(jù)處理系統(tǒng)支持,并被構(gòu)造為通過(guò)該應(yīng)用程序直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行數(shù)據(jù)的發(fā)送和接收中的至少一種;以及操作系統(tǒng),其由所述數(shù)據(jù)處理系統(tǒng)支持,并被構(gòu)造為通過(guò)該操作系統(tǒng)直接訪問(wèn)所述存儲(chǔ)器的所述區(qū)域中的所述至少一個(gè),以通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行數(shù)據(jù)的發(fā)送和接收中的至少一種。全文摘要本發(fā)明提供了用戶級(jí)棧。一種通過(guò)數(shù)據(jù)處理系統(tǒng)發(fā)送數(shù)據(jù)的方法,該系統(tǒng)能夠支持操作系統(tǒng)和至少一個(gè)應(yīng)用程序,并且可以訪問(wèn)存儲(chǔ)器和能夠支持通過(guò)網(wǎng)絡(luò)與另一網(wǎng)絡(luò)接口設(shè)備的通信連接的網(wǎng)絡(luò)接口設(shè)備,該方法包括以下步驟通過(guò)所述應(yīng)用程序形成要發(fā)送的數(shù)據(jù);通過(guò)所述應(yīng)用程序請(qǐng)求所述數(shù)據(jù)處理系統(tǒng)的非操作系統(tǒng)功能以發(fā)送所述要發(fā)送的數(shù)據(jù);響應(yīng)于該請(qǐng)求將所述要發(fā)送的數(shù)據(jù)寫入所述存儲(chǔ)器的一區(qū)域,以及通過(guò)所述非操作系統(tǒng)功能和所述網(wǎng)絡(luò)接口設(shè)備之間的直接通信發(fā)起所述數(shù)據(jù)中的至少某些的通過(guò)網(wǎng)絡(luò)的發(fā)送操作;以及隨后通過(guò)所述操作系統(tǒng)訪問(wèn)所述存儲(chǔ)器,并通過(guò)所述網(wǎng)絡(luò)接口設(shè)備執(zhí)行所述數(shù)據(jù)中的至少某些的通過(guò)網(wǎng)絡(luò)的發(fā)送操作中的至少一部分。文檔編號(hào)H04L1/00GK1969267SQ200580011777公開(kāi)日2007年5月23日申請(qǐng)日期2005年4月21日優(yōu)先權(quán)日2004年4月21日發(fā)明者史蒂夫·萊斯利·波普,大衛(wèi)·詹姆士·里多克申請(qǐng)人:五級(jí)網(wǎng)絡(luò)公司