專利名稱::用于基于事務的通信的文件協議的制作方法
技術領域:
:本發明的實施例涉及在設備之間傳輸數據。更具體而言,本發明的實施例涉及用于在一個或多個主機電子設備和一斷續連接的客戶端設備之間高效傳輸數據的技術。
背景技術:
:隨著移動設備(例如,移動電話、數字音樂播放器、數字個人助理)的普及度增大,單個移動設備提供的功能已經增加了。與這種功能的增加相關聯的是這樣一種動機,g卩,提供同步服務,以便例如反映出在移動設備或者主機設備上對數據做出的改變。另外,可能需要在兩個設備之間交換包括一個或多個文件在內的數據。例如,在兩個設備之間可交換音樂或視頻文件。已經開發出各種技術來在移動設備和主機設備之間同步數據和/或交換數據。當前的技術通常或者是可能需要一些不必要開銷的基于全功能文件系統的技術,或者可能是提供有限功能的專用技術。這些技術使用現有的接口,例如USB。設備之間的現有接口,例如每個設備上的USB接口,難以允許設備附接到USB(通用串行總線)接口或端口并隨后任意且突然地從USB接口移除/斷開,尤其在設備是存儲設備的情況下更是如此。另外,USB未被設計來在USB的標準通信協議中支持因特網協議(IP)地址;USB并不被認為是網絡接口。USB也未被設計來為試圖通過USB接口發送數據或等待接收數據的獨立應用支持任意數目(實際上是無限數目)的多個并發獨立會話,并且對于至少某些系統,在USB接口上支持的接口或會話的數目是靜態的并且不能隨時間而改變。對于至少某些系統,USB接口可以支持多個并發"接口",這多個并發"接口"可被認為是多個會話,但其數目是固定的,并且對于一個設備,接口是靜態的(并且不能改變)。另一方面,USB是常見且有用的接口,從而經常會希望使用這種接口來連接兩個系統,例如主機和客戶端設備。
發明內容這里的描述涉及用于基于事務的通信的文件協議(例如,文件傳送協議)。在一個實施例中,一種使用文件傳送協議的方法包括接收包含頭部的分組,這些分組是通過諸如USB接口之類的非網絡接口在第一網絡桟軟件處接收的;以及從這些分組中提取數據并且根據這些分組中的數據來重建文件。提取可由第一網絡棧軟件執行,并且頭部包含用于流控制和定序的數據以及標識用于發送和接收文件傳送應用的端口的數據;頭部中的數據允許包括文件傳送應用和其他應用在內的多個獨立應用通過該接口維持多個并發會話,該接口可以是遵從USB的接口(有線的或無線的)或者遵從BLUETOOTH的接口。該方法還可包括在文件的所有數據已被接收之后核實文件;核實可通過使用與整個文件有關的校驗和和/或散列功能來執行。包含文件的部分的分組可包括對具有預定分組格式的分組類型和與分組類型相關聯的分組功能的指示。接口可以是具有不使用因特網協議(IP)地址的標準協議的USB有線或無線接口(或者BLUETOOTH無線接口)。通過非網絡接口發送的分組可包括類似傳輸控制協議(TCP)的頭部,并且不包含遵從IP的頭部,并且類TCP(TCP-like)頭部可以指定與打開的套接字相關聯的端口標識符,該打開的套接字是通過使用用于軟件模塊之間的進程間通信的套接字API來打開的。該方法還可包括創建另外的分組來包含從所述分組中提取的數據,這些另外的分組包含TCP/IP頭部,其中IP頭部指定環回地址(loopbackaddress),并且從這些另外的分組中提取數據并將其提供給文件傳送應用。創建另外的分組和從另外的分組中提取數據的操作可由TCP/IP棧軟件執行,該TCP/IP棧軟件操作性地耦合到用于通過IP協議連接到因特網的網絡接口。另一實施例包括一種計算機可讀介質,其包含被配置為在數據處理系統上執行的可執行程序指令。該介質包括第一網絡棧軟件,用于創建分組以便通過設備上的第一接口(例如WiFi或以太網或蜂窩電話接口)發送并且用于從通過第一接口接收的分組中提取數據;以及第二網絡棧軟件,用于創建分組以便通過該設備上的第二接口(其可以是非網絡接口,例如USB或BLUETOOTH接口)發送并且用于從通過第二接口接收的分組中提取數據;以及文件傳送協議軟件(例如被配置為將媒體文件從一個設備傳送到另一設備的媒體播放器),該文件傳送協議軟件被操作性地耦合來與第一網絡棧軟件通信,以接收從通過第二接口接收的分組中提取的數據并且根據從分組中提取的數據來重建文件。第二網絡棧軟件被配置為與第一網絡棧軟件通信,并且第二接口被配置為耦合到另一系統上的第三接口(例如,另一非網絡接口,例如USB或BLUETOOTH接口)。第二網絡棧軟件被配置為通過第一網絡棧軟件來把從通過第二接口接收的分組中提取的數據發送到接收方的文件傳送協議應用。第二網絡桟軟件被配置為利用設計用于第二接口的協議來發送和接收分組。文件傳送協議軟件可在文件的所有數據已被接收之后來核實文件(或者它可在文件被接收的同時部分核實文件);核實可通過使用例如傳統的校驗和操作或散列操作來執行。分組可包括作為文件傳送協議的一部分的信息。例如,分組可包括對具有預定分組格式的分組類型和與分組類型相關聯的分組功能的指示。分組功能可指定文件傳送協議軟件的操作。第二網絡棧軟件創建的分組可包括類似傳輸控制協議(TCP)的頭部并且不包括IP頭部,并且類TCP頭部可與用于文件傳送協議軟件的開放套接字相關聯(通過頭部中的端口標識符)。第一網絡棧軟件和第二網絡桟軟件被配置為允許該設備上的包括文件傳送協議軟件在內的多個應用通過第二接口維持多個并發會話,并且文件是音頻或視聽媒體文件。第一網絡棧軟件可包括TCP/IP棧,并且第二網絡棧軟件可包括創建類TCP頭部的類TCP棧。文件傳送協議軟件(或其他軟件)可響應于未能傳送完整文件(例如,在文件傳送中途,USB連接被中斷)而生成差錯消息或狀態消息,并且該消息以后可用于在連接被重新連接日寸'使文fl"(禾口其他數據或文'泮)豐皮全咅iM專送或部分傳送(如果曾傳輸的先前部分也被成功保存在接收者一方的話)。差錯消息或狀態消息可至少包括在連接被中斷之前僅部分傳送的文件的標識符。本說明書還描述了設備、系統、計算機可讀介質、軟件體系結構和其他方法。在另一實施例中,設備之間(例如主機和設備之間)的通信鏈路是遵從通用串行總線(USB)的有線或無線接口。在另一實施例中,設備之間的通信鏈路是遵從BLUETOOTH的無線接口。在另一實施例中,通信鏈路是不為網絡接口的接口。在一個實施例中,客戶端設備是智能電話。在另一實施例中,客戶端設備是媒體回放設備。在一個實施例中,主機設備是桌面型計算機系統。在另一實施例中,主機設備是膝上型計算機系統。在另一實施例中,主機設備是掌上型或超便攜型計算機系統。在附圖中以示例方式而非限制方式示出了本發明,在附圖中相似的標號指代類似的要素。圖1是可利用這里描述的技術通信的主機電子設備和客戶端電子設備的框圖。圖2是諸如主機設備之類的數據處理系統的一個實施例的框圖。圖3是諸如客戶端設備、手持式計算機或其他類型的數據處理系統之類的數據處理系統的一個實施例的框圖。圖4是可用于主機電子設備和客戶端電子設備之間的通信中的分組頭部的表格。圖5是可用于主機電子設備和客戶端電子設備之間的通信中的分組類型的表格。圖6是用于將數據傳送到客戶端設備的技術的一個實施例的流程圖。圖7是用于在主機設備和客戶端設備之間同步數據的技術的一個實施例的流程圖。圖8示出了用于連接被稱為主機和設備的兩個數據處理系統的軟件體系結構的示例。圖9是示出根據本發明一個實施例用于在兩個系統之間交換數據的方法的示例的流程圖;該數據可以是文件(例如,MP3文件、視頻文件、圖片等等)或者結構化數據(例如地址簿中的聯絡信息,或者書簽/收藏夾,或者日歷數據,或者注釋,或者待做事項,等等)或者其他類型的數據(例如,諸如窗口小部件之類的可執行軟件,等等)。圖IO示出了根據本發明一個實施例的初始化方法的流程圖。圖11是示出根據本發明一個實施例用于將數據從主機傳送到設備的方法的示例的流程圖。圖12是示出根據本發明一個實施例用于將數據從設備傳送到主機的方法的示例的流程圖。圖13示出了主機系統的替代軟件體系結構的示例。圖14A示出了通過兩個USB接口使用圖片傳送協議(PTP)進行的連接的現有技術示例。圖14B示出了根據本發明一個實施例的連接的示例。圖15是示出根據一個實施例用于在系統之間交換文件的方法的示例的流程圖。具體實施例方式在以下描述中,闡述了許多具體細節。然而,沒有這些具體細節也可實現本發明的實施例。在其他情況下,沒有詳細示出公知的電路、結構和技術,以避免使這里的描述難以理解。這里描述的是用于在端點之間傳送文件和其他數據的協議。在一個實施例中,端點是主機電子設備和客戶端電子設備。主機電子設備例如可以是桌面型計算機系統或膝上型計算機系統。客戶端電子設備例如可以是膝上型計算機系統、個人數字助理、具備蜂窩電話能力的設備(例如,蜂窩電話或智能電話)。在一個實施例中,端點之間的連接利用了可靠的流傳輸,例如傳輸控制協議(TCP)流連接。也可支持其他流連接。在一個實施例中,通信是利用具有頭部和主體的分組來實現的。這里在一個實施例中描述了標準的最低限度頭部,但頭部也可包含另外的特定于分組的結構化數據。分組數據可包括非結構化數據,或者可以是空的。圖1是可利用這里描述的技術通信的主機電子設備和客戶端電子設備的框圖。圖1的框圖提供了可用于在主機設備100和客戶端設備150之間通信的組件的概念性圖示。在一個示例中,主機設備100是計算機系統(例如,桌面型或膝上型計算機系統),客戶端設備150是移動設備(例如,PDA或智能電話)。主機設備100和客戶端設備150可以經由現有技術已知的任何類型的通信技術來通信。例如,通信鏈路145可以是物理線纜(例如,遵從通用串行總線的線纜),或者無線通信鏈路(例如,遵從Bluetooth⑧或遵從IEEE802.11)。Bluetooth是BluetoothSIG公司擁有的注冊商標。應用110可以是可被主機設備IOO執行的任何類型的應用。例如,應用110可以是可從加利福尼亞州庫珀蒂諾的Apple公司獲得的汀unes。應用110可包括可被傳輸到客戶端設備150和/或與客戶端設備150同步的功能和/或數據。例如,應用110可存儲和/或播放可被存儲在客戶端設備150上或者由客戶端設備150播放的多媒體內容。當客戶端設備150與主機設備100通信時,應用110可以使得內容被在主機設備100和客戶端設備150之間傳送。也可支持其他類型的應用。關守(gatekeeper)客戶端115與應用110交互,以控制應用IIO對通信鏈路145的訪問。關守客戶端115可以基于一個或多個參數來選擇性地限制對通信鏈路145的訪問。關守客戶端115例如可在允許主機設備100和客戶端設備150之間的通信之前執行認證和/或核實操作。關守客戶端115還可選擇多個通信鏈路之一來用于主機設備100和客戶端設備150之間的通信。雖然圖1的示例是在有關守功能的情況下描述的,但是在沒有關守功能的情況下可提供替代實施例。關于關守客戶端115和關守180的更多信息在2007年6月22日提交的美國專利申請No.11/767,447(代理人案巻號18962-113001/P5408US1)中提供,該申請通過引用被并入在此。關守客戶端115可與鏈路驅動器130通信以經由鏈路接口140訪問通信鏈路145。在一個實施例中,鏈路驅動器130與結構化同步服務120交互,以在主機設備IOO和客戶端設備150之間提供同步功能。在一個實施例中,結構化同步服務120可以利用下文中更詳細描述的命令和協議來工作。鏈路驅動器130可以使得鏈路接口140使表示數據的信號(例如,電信號、射頻信號、紅外信號、光信號)通過通信鏈路145傳輸。在客戶端設備150內,鏈路接口160是鏈路接口140的對應物。鏈路接口160可以經由通信鏈路145發送和/或接收信號(例如,電信號、射頻信號、紅外信號、光信號)。客戶端設備150還包括關守180,關守180可在允許主機設備IOO上的應用IIO和客戶端設備150上的媒體同步服務190之間的通信之前執行認證、核實和/或其他授權功能。在一個實施例中,媒體同步服務190可支持下文中更詳細描述的消息和協議,以允許對數據195的訪問(例如,讀取、寫入、修改、更新)。數據195表示存儲在客戶端設備150上的任何類型的數據。數據195可以是一個或多個數據庫、表格和/或其他存儲單元。數據195例如可以是媒體文件(例如,音頻和/或視頻數據文件)、元數據、聯絡信息、歷史信息(例如,呼叫記錄、軟件版本信息)和/或狀態信息(例如,電池容量、序列號、總存儲器、可用存儲器)。客戶端設備150還可包括結構化數據服務185,結構化數據服務185可維護客戶端設備150上的數據。可利用結構化同步服務120和結構化數據服務185來同步和/或維護的數據的示例可包括書簽、聯絡信息、日歷信息等等。結構化同步服務120可以與同步軟件805(在圖8中)相同或相似,結構化同步服務185可以與同步軟件835(在圖8中)相同或相似。在一個實施例中,主機設備IOO和客戶端設備150之間為了允許應用110訪問數據190而進行的通信可利用下文中更詳細描述的特定數據分組格式通過結構化同步服務120和媒體同步服務190來實現。在一個實施例中,通信鏈路145可以是主機設備IOO和客戶端設備150之間遵從通用串行總線(USB)的有線通信鏈路。在一個實施例中,主機設備100和客戶端設備150之間的連接利用了遵從USB的物理連接上的TCP流連接來傳輸下文中描述的分組。圖2是諸如主機設備之類的數據處理系統的一個實施例的框圖。注意,雖然圖2示出了計算機系統的各種組件,但其并不意圖表示互連這些組件的任何特定體系結構或方式,因為這種細節與本發明并沒有密切關系。還應當明白,個人數字助理(PDA)、蜂窩電話、媒體播放器(例如,iPod)、組合這些設備的多個方面或功能的設備(組合在一個設備中的媒體播放器與PDA和蜂窩電話)、網絡計算機、嵌入在另外的設備內的處理設備、以及其他具有更少組件或者可能更多組件的數據處理系統也可用于實現本發明的一個或多個實施例,并且可以是這里描述的數據處理系統中的一個或多個。圖2所示的計算機系統例如可以是來自Apple公司的Macintosh計算機或者來自Microsoft公司的運行Windows操作軟件的計算機。計算機系統200包括總線205,總線205耦合到形成處理系統210的一個或多個微處理器。總線205還耦合到存儲器220和非易失性存儲器230,非易失性存儲器230在某些實施例中可以是磁性硬盤驅動器,或者在其他實施例中可以是閃存。總線205還耦合到顯示控制器和顯示器240以及一個或多個輸入/輸出(I/O)設備250。另外,總線205可耦合到可選的擴展塢260并且耦合到一個或多個無線收發機270,無線收發機270可以是遵從Bluetooth⑧的收發機或者遵從WiFi的收發機或者紅外收發機。無線收發機270如圖2所示是可選的。處理系統210還可以可選地耦合到緩存215。處理系統210可包括一個或多個微處理器,例如來自Intel或IBM的微處理器。總線205以現有技術中已知的方式將這各種組件互連在一起。通常,輸入/輸出設備250通過輸入/輸出控制器耦合到系統。存儲器220可以實現為動態RAM(DRAM),動態RAM提供對數據的快速訪問,但為了刷新或維護存儲器220中的數據其不斷地需要電力。非易失性存儲器230可以是磁性硬盤驅動器或者其他的即使在系統斷電之后仍保存數據的非易失性存儲器。雖然圖2示出了非易失性存儲器230是直接耦合到數據處理系統中的其余組件的本地設備,但應當明白,其他實施例可以利用遠離系統的非易失性存儲器,例如網絡存儲設備,其通過網絡接口(例如調制解調器或以太網接口)耦合到數據處理系統。正如現有技術中公知的,總線205可包括通過各種橋接器、控制器和/或適配器相互連接的一條或多條總線,這是現有技術中已知的。在一個實施例中,I/O控制器250可包括用于控制遵從USB的外圍設備的遵從USB的適配器,以及用于遵從IEEE-1394的外圍設備的IEEE-1394控制器。這里描述的本發明的一些方面至少部分可用軟件實現。即,這些技術可以在計算機系統或其他數據處理系統中響應于其處理器或處理系統執行存儲器(例如,存儲器220、非易失性存儲器230或圖3所示的存儲器330)中包含的指令序列而實現。在各種實施例中,硬件電路可與軟件指令結合使用以實現本發明。從而,這些技術并不限于硬件電路和軟件的任何特定組合或者數據處理系統所執行的指令的任何特定來源。此外,在這里的描述的各處,各種功能和操作被描述為由軟件代碼執行或者由軟件代碼引起,以便簡化描述。然而,這種表述的含義是這些功能是由于處理系統執行代碼而得到的。擴展埠260和/或無線收發機270提供了物理接口,用于將圖2所示的數據處理系統耦合到另外的數據處理系統,例如圖3所示的數據處理系統,或者耦合到與圖2所示的系統類似的另外的數據處理系統。擴展塢260可提供一個數據處理系統和另一數據處理系統之間的機械和電氣連接,以允許在兩個系統之間執行同步處理。在其他實施例中,無線收發機270可提供兩個系統之間的射頻(RF)連接,以便在無需在兩個系統之間提供機械連接的情況下進行同步處理。圖3是諸如客戶端設備、手持式計算機或其他類型的數據處理系統(例如圖2所示的系統或者與圖3所示類似的系統)之類的數據處理系統的一個實施例的框圖。數據處理系統300包括處理系統310,處理系統310可以是一個或多個微處理器,或者是可以片上系統集成電路。系統300還包括用于存儲數據和供處理系統310執行的程序的存儲器330。系統300還包括音頻輸入/輸出子系統340,音頻輸入/輸出子系統340可包括麥克風和揚聲器,用于例如通過揚聲器和麥克風回放音樂或提供電話功能。顯示控制器和顯示設備350為用戶提供可視用戶接口;該數字接口可包括與運行OSX操作系統軟件時在Macintosh計算機上所示類似的圖形用戶接口。系統300還包括一個或多個無線收發機,例如WiFi收發機、紅外收發機、遵從Bluetooth的收發機和/或無線蜂窩電話收發機。未示出的其他組件在某些實施例中也可作為系統300的一部分,并且在某些實施例中,在數據處理系統中可使用比圖3所示要少的組件。數據處理系統300還包括一個或多個輸入設備360,設置這些輸入設備360是為了允許用戶向系統300提供輸入。這些輸入設備可以是小鍵盤或者鍵盤或者觸摸面板或者多點觸控面板(multi-touchpanel)。數據處理系統300還包括可選的輸入/輸出設備370,輸入/輸出設備370可以是擴展瑪(例如圖2所示的擴展塢260)的連接器。一條或多條總線(未示出)可用于互連各種組件,這是現有技術中已知的。數據處理系統300可以是手持式計算機或個人數字助理(PDA),或者具有類似PDA的功能的蜂窩電話,或者包括蜂窩電話的手持式計算機,或者媒體播放器(例如iPod),或者組合這些設備的多個方面或功能的設備,例如組合在一個設備中的媒體播放器與PDA和蜂窩電話。在其他實施例中,數據處理系統300可以是網絡計算機或者嵌入在另外的設備內的處理設備,或者具有比圖3所示更少的組件或者可能更多的組件的其他類型的數據處理系統。這里描述的本發明的至少某些實施例可以是諸如便攜式音樂和/或視頻媒體播放器之類的數字媒體播放器的一部分,該數字媒體播放器可包括用于呈送媒體的媒體處理系統、用于存儲媒體的存儲設備,并且還可包括與天線系統和媒體處理系統相耦合的射頻(RF)收發機(例如,用于蜂窩電話的RF收發機)。在某些實施例中,存儲在遠程存儲設備上的媒體可通過RF收發機被傳輸到媒體播放器。媒體例如可以是音樂或其他音頻、靜止圖片或運動圖片中的一種或多種。便攜式媒體播放器可包括媒體選擇設備,例如來自加利福尼亞州庫珀蒂諾的Apple公司的iPod⑧或iPodNano⑧媒體播放器上的點撥輪(clickwheel)輸入設備、觸摸屏輸入設備、按鈕設備、可移動點選輸入設備或其他輸入設備。媒體選擇設備可用于對存儲在存儲設備和/或遠程存儲設備上的媒體進行選擇。在至少某些實施例中,便攜式媒體播放器可包括顯示設備,該顯示設備耦合到媒體處理系統,用于顯示通過輸入設備選擇并且通過揚聲器或(一個或多個)耳機或在顯示設備上或者既在顯示設備上又在揚聲器或(一個或多個)耳機上呈送的媒體的標題或其他指示符。便攜式媒體播放器的示例在已公布的美國專利申請No.2003/0095096禾Q2004/00224638中有所記載,這兩者都通過引用并入在此。在某些實施例中,數據處理系統300可以以類似于具有平板狀輸入設備的手持式計算機的小外形參數來實現,該輸入設備可以是與液晶顯示器相集成的多點觸控輸入面板設備。這種設備的示例在2006年10月24日提交的題為"AUTOMATEDRESPONSETOANDSENSINGOFUSERACTIVITYINPORTABLEDEVICES"的美國專利申請No.11/586,862中提供,該申請被轉讓給了與本申請相同的受讓人。特此通過引用將上述申請并入在此。在以下描述中,描述了用于同步和非同步處理操作的各種軟件組件。應當理解,在至少某些實施例中,對于一種類型的數據處理系統,這各種軟件組件可被存儲在圖2所示的存儲器220和/或存儲器230中,并且在例如圖3所示的系統的情況下,這各種不同的軟件組件可被存儲在存儲器330中,存儲器330可包括易失性存儲器以及非易失性存儲器,例如閃存或磁性硬盤驅動器。在伴隨著設備之間的適當互連,利用其各自的示例性實施例描述了主機設備和客戶端設備之后,現在描述示例性的分組格式、分組類型、功能和數據流。與以上描述一樣,以下描述提供了通信協議的示例性實施例。也可支持對這種協議的變化。圖4中的表格示出了分組頭部格式的一個實施例。也可使用其他格式。雖然描述了特定的大小和長度,但是也可支持其他字段名稱、長度和/或描述。在一個實施例中,分組數據可以以小端(little-endian)或大端(big-endian)格式通過連接發送。在一個實施例中,任一設備可以以任一格式發送數據。接收方設備在必要時可負責交換數據順序。在一個實施例中,每個分組必須使用一致的字節順序(endianness)。在一個實施例中,預定的(例如,固定的)簽名值(例如,0x4141504c36414643)可用于所有分組頭部。簽名可允許接收方設備確定從發送方設備發送來的數據的字節順序。在一個實施例中,簽名字段的長度是8字節;然而,也可支持其他簽hem丄丄々于漢入^、。分組頭部還可包括表明包括頭部在內的整個分組的長度的字段。在一個實施例中,分組長度字段可以是8個字節;然而,也可支持其他分組長度字段大小,例如支持不同的最大分組大小。分組頭部還可包括表明分組序列號的字段。分組序列號可用于對在主機設備100和客戶端設備150之間傳輸的分組排序。在一個實施例中,分組序列號字段可以是8個字節;然而,也可支持其他分組序列號字段大小。分組頭部還包括用于分組類型的字段。分組類型字段包括分組中的消息的類型的數值指示符,這表明了分組的功能。分組類型和分組類型值的一個示例性列表在圖5中提供。也可支持其他分組標簽、其他分組功能和/或其他分組類型值。在一個實施例中,分組類型字段可以是8個字節;然而,也可支持其他分組類型字段大小。圖5中的表格示出可用于在端點之間通信的一組分組的一個實施例。也可使用其他和/或不同的分組。雖然描述了特定的分組類型標識符和分組名稱,但也可支持其他分組類型標識符、分組名稱和/或描述。圖5中列出的分組的各種實施例在下文中更詳細描述。這些分組描述只是提供了可以提供的一個實施例的示例。在一個實施例中,每個分組包括標準分組頭部。該頭部可以具有如圖4所示的格式。"狀態"(Status)分組可用于響應于請求分組而提供狀態信息。狀態分組還可用于在故障或其他差錯狀況的情況下提供差錯信息。在一個實施例中,狀態分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage18</column></row><table>"數據"(Data)分組可用于在主機電子設備和客戶端電子設備之間攜帶數據。在一個實施例中,數據分組可以具有任何大小。即,數據分組可以是頭部加上要傳輸的數據的長度。在替代實施例中,數據分組可以是固定長度的,從而如果要傳輸的數據超過了數據分組的有效載荷容量,則可利用一個或多個另外的數據分組。在一個實施例中,數據分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage18</column></row><table>"讀取目錄"(ReadDirectory)分組可用于讀取目標設備上的目錄。在一個實施例中,"讀取目錄"分組具有根據以下表格的格式。路徑串可以是具有針對目標設備的適當格式的路徑串。例如,對于UTF-8格式的UNIX(POSIX)路徑串,路徑串可以是以NULL終止的便攜式操作系統接口。也可支持其他格式。POSIX標準家族被正式稱為IEEEStd.1003,并且國際標準名稱是ISO/IEC9945。<table>tableseeoriginaldocumentpage18</column></row><table>"讀取文件"(ReadFile)分組可用于讀取目標設備上的完整文件。在一個實施例中,結果在"狀態"分組或"數據"分組中提供。在一個實施例中,"讀取文件"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage19</column></row><table>表6:"讀取文件"分組"寫入文件"(WriteFile)分組可用于向目標設備寫入完整文件。在一個實施例中,"寫入文件"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage19</column></row><table>表8:"寫入部分"分組"截斷(截)文件"(Truncate(Trunc)File)分組可用于設定文件的長度。長度可以短于相應的數據,在此情況下一些數據被丟棄,或者長度可以長于相應的數據,在此情況下超出部分可用預定的數據樣式(例如全"0")來填充。在一個實施例中,"截文件"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage20</column></row><table>表9:"截文件"分組"去除路徑"(RemovePath)分組可用于刪除目標設備上的文件或目錄。在一個實施例中,"去除路徑"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage20</column></row><table>表10:"去除路徑"分組"制作目錄"(MakeDirectory)分組可用于在目標設備上創建目錄。在一個實施例中,"去除路徑"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage20</column></row><table>表lh"制作目錄"分組"獲得文件信息"(GetFileInfo)分組可用于檢索描述目標設備上文件的信息。在一個實施例中,文件信息是以在"數據"分組中傳輸的一個或多個鍵/值對的形式來提供的。描述文件的信息例如可以是文件大小、最后修改日期、許可權限。也可提供另外和/或不同的文件信息。在一個實施例中,"獲得文件信息"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage20</column></row><table>表12:"獲得文件信息"分組"獲得設備信息"(GetDeviceInfo)分組可用于檢索描述目標設備的信息。在一個實施例中,設備信息是以在"數據"分組中傳輸的一個或多個鍵/值對的形式來提供的。描述設備的信息例如可以是設備名稱、序列號、操作系統版本、電池水平、可用空閑空間。也可提供另外和/或不同的文件信息。在一個實施例中,"獲得設備信息"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)表13:"獲得設備信息"分組"原子式文件寫入"(WriteFileAtomic)分組可用于在目標設備上寫入文件。"原子式文件寫入"分組保證要么整個文件被寫入,要么該文件全都不被寫入。"原子式文件寫入"分組例如可用于寫入數據庫文件。在一個實施例中,"原子式文件寫入"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)路徑可變適當格式的路徑串。表14:"原子式文件寫入"分組"文件索引(Ref)打開"(FileReference(Ref)Open)分組可用于獲得表示目標設備上的打開文件的令牌或其他標識符。在一個實施例中,原子式文件寫入"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)模式8打開文件時使用的模式(參見表16)路徑可變適當格式的路徑串。表15:"文件Ref打開"分組在一個實施例中,"模式"字段包括打開文件時使用的模式的數值指示符。表16中的"模式名稱"和"模式值"稱呼是用于一個實施例的示例。可以支持一組不同的模式。另外,可以支持不同的模式值。模式名稱模式值只讀1讀-寫2<table>tableseeoriginaldocumentpage22</column></row><table>表16:模式在"只讀"模式中,文件可被打開來僅供讀取。在"讀-寫"模式中,文件可被打開來僅供讀取和寫入。在"寫-截斷"模式中,文件可被打開來供寫入或截斷。在"讀-寫-截斷"模式中,文件可被打開來供讀取、寫入或截斷。在"寫-附加"模式中,文件可被打開來供寫入或附加。在"讀_寫-附加"模式中,文件可被打開來供讀取、寫入或附加。"文件Ref打開結果"(FileRefOpenResult)分組可用于返回文件索引令牌,該文件索引令牌可在訪問目標設備上的文件時用于這里描述的分組之中的一個或多個中。在一個實施例中,"文件Ref打開結果"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage22</column></row><table>表17:"文件Ref打開結果"分組"文件Ref讀取"(FileRefRead)分組可用于利用由于"文件Ref打開"操作而得到的文件索引來讀取文件。在一個實施例中,文件內的位置響應于"文件Ref讀取"操作而被自動推進。在一個實施例中,"文件Ref讀取"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage22</column></row><table>表18:"文件Ref讀取"分組"文件Ref寫入"(FileRefWrite)分組可用于利用由于"文件Ref打開"操作而得到的文件索引來寫入文件。在一個實施例中,文件內的位置響應于"文件Ref寫入"操作而被自動推進。在一個實施例中,"文件Ref寫入"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)文件Ref8由于"文件Ref打開"操作而得到的文件索引數據可變要寫入到文件的數據表19:"文件Ref寫入"分組"文件Ref搜尋"(FileRefSeek)分組可用于利用由于"文件Ref打開"操作而得到的文件索引來確定文件內的位置。在一個實施例中,"文件Ref搜尋"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)文件Ref8由于"文件Ref打開"操作而得到的文件索引何處8要搜尋的位置。(參見表21)偏移量8從文件開始到開始讀取的偏移量表20:"文件Ref搜尋"分組在一個實施例中,"何處"字段中的值可用于表明要如何執行搜尋。表21提供了可用于"文件Ref搜尋"分組中的"何處"值的示例。"何處"值描述0搜尋到由"偏移量"字段指定的絕對位置。1從文件的當前位置起搜尋。2從文件末尾起搜尋。表21:用于"文件Ref搜尋"分組中的"何處"值"文件Ref告知"(FileRefTell)分組可用于利用由于"文件Ref打開"操作而得到的文件索引來確定文件內的位置。在一個實施例中,"文件Ref告知"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage24</column></row><table>表22:"文件Ref告知"分組"文件Ref告知結果"(FileRefTellResult)分組可用于返回"文件Ref告知"操作的結果。在一個實施例中,"文件Ref告知結果"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage24</column></row><table>表23:"文件Ref告知結果"分組"文件Ref關閉"(FileRefClose)分組可用于利用由于"文件Ref打開"操作而得到的文件索引來關閉文件。在一個實施例中,"文件Ref關閉"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage24</column></row><table>表24:"文件Ref關閉"分組"文件Ref設定大小"(FileRefSetSize)分組可用于設定與由于"文件Ref打開"操作而得到的索引相對應的文件的大小。在一個實施例中,"文件Ref設定大小"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage24</column></row><table>。表25:"文件Ref設定大小"分組"文件Ref設定大小分組"可用于設定文件的長度。該長度可短于相應的數據,在此情況下一些數據被丟棄,或者該長度可以長于相應的數據,在此情況下超出部分可用預定的數據樣式(例如全"0")來填充。"重命名路徑"(RenamePath)分組可用于對目標設備上的目錄路徑重命名。在一個實施例中,"重命名路徑"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage25</column></row><table>表26:"重命名路徑"分組路徑串可以是具有針對目標設備的適當格式的路徑串。例如,源和目的地路徑串可以是UTF-8格式的以NULL終止的POSIX路徑串。也可支持其他格式。在一個實施例中,目的地路徑字段在"重命名路徑"分組中緊跟著源路徑字段。"設定FS塊大小"(SetFSBlockSize)分組可用于為目標設備上的文件系統設定塊大小。在一個實施例中,"設定FS塊大小"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage25</column></row><table>表27:"設定文件系統塊大小"分組塊大小可被客戶端設備文件系統所使用。例如,在64kb塊大小的情況下,當向客戶端設備寫入文件數據時,即使主機設備按更大或更小的塊發送數據,一次也將寫入64kb的數據。在一個實施例中,客戶端設備不保證數據是根據塊大小寫入的,但為了獲得性能可以利用塊大小。"設定套接字塊大小"(SetSocketBlockSize)分組可用于為目標設備和主機設備之間的數據連接設定塊大小。在一個實施例中,"設定套接字塊大小"分組具有根據以下表格的格式。<table>tableseeoriginaldocumentpage25</column></row><table>頭部40標準分組頭部(例如參見圖2)塊大小8目標和主機之間的通信的塊大小表28:"設定套接字塊大小"分組塊大小可被客戶端系統用于經由主機設備和客戶端設備之間的連接讀取和寫入數據。例如,在64kb塊大小的情況下,當從連接讀取數據時,客戶端設備可以嘗試以64kb塊的形式讀取數據。在一個實施例中,客戶端設備不保證數據是根據塊大小來處理的,但為了獲得性能可以利用塊大小。"文件Ref鎖定"(FileRefLock)分組可用于將打開文件索引標識符鎖定以免被第二應用所使用。在一個實施例中,"文件Ref鎖定"分組具有根據以下表格的格式。字段名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)文件Ref8要鎖定的文件的文件Ref。鎖定類型8要應用到文件索引標識符的鎖定的類型表29:"文件Ref鎖定"分組可以阻止對文件索引的訪問,以使得在給定的時刻,只有一個應用具有對打開的文件的訪問權限。在一個實施例中,支持共享鎖定、獨家鎖定和非阻止鎖定。在替代實施例中,支持另外和/或不同的鎖定。在一個實施例中,鎖定只是咨詢性的,應用必須查詢文件以判定該文件是否被鎖定。在一個實施例中,多個應用/進程可獲得共享鎖定。以上描述的消息和格式可用于支持完全文件通信協議。在以下示例中,分組的子集可用于說明協議的使用。也可支持許多其他操作。圖6是用于將數據傳送到客戶端設備的技術的一個實施例的流程圖。在圖6的示例中,主機設備可以判定客戶端設備是否已連接到主機設備(610)。如上所述,主機設備和客戶端設備之間的連接可以是有線的或無線的。主機設備可以利用任何適當的技術來檢測客戶端設備的存在性。例如,如果客戶端設備經由有線連接與主機設備相連接,則主機設備可被配置為檢測客戶端設備與有線接口的物理連接。如果客戶端設備經由無線連接與主機設備相連接,則主機設備可被配置為對配對或其他類型的無線連接過程的完成做出響應。在一個實施例中,如果沒有連接客戶端設備(610),則主機設備可以等待連接客戶端設備。在另一實施例中,主機設備可以僅在經由接口接收到請求的情況下做出響應。例如,有線接口可包括供用戶按壓以發起客戶端設備和主機設備之間的通信的按鈕。又例如,客戶端設備可以具有允許用戶請求與主機設備通信的用戶接口。響應于客戶端設備的連接(610),主機設備可以收集關于客戶端設備的信息(620)。對關于客戶端設備的信息的收集可以通過發送上述分組中的一個或多個來實現。例如,主機設備可以發送"獲得設備信息"分組和/或"讀取目錄"分組。客戶端設備可以通過將所請求的信息提供給主機設備來對(這一個或多個)分組做出響應。在從客戶端設備收集到足夠的信息后,主機設備可以判定客戶端設備是否是新設備(630)。g卩,主機設備可以判定客戶端設備以前是否曾連接到主機設備。如果客戶端設備是新設備,則主機設備可以執行注冊過程(635)。注冊過程可以允許主機設備保存關于客戶端設備的信息,該信息可用于例如認證、加速連接和/或備份目的。主機設備可以認證客戶端設備(640)。認證可通過例如在主機設備和客戶端設備之間交換密鑰或其他標識符來實現。也可使用其他認證技術。在一個實施例中,認證是利用存在于主機設備和客戶端設備上的對應同步服務來執行的。在認證之后,主機設備可利用這里描述的分組來將數據傳送到客戶端設備(650)。例如,為了向客戶端設備添加新文件(例如,在客戶端設備上加載新的媒體文件),主機設備可以使用"寫入文件"分組來使得數據被寫入到客戶端設備上的文件中。在單個會話中可以使用任意數目的數據傳送分組。圖7是用于在主機設備和客戶端設備之間同步數據的技術的一個實施例的流程圖。圖7的示例僅利用了以上論述的分組類型的子集。然而,圖7的示例代表了利用這里闡述的協議和消息可在主機設備和客戶端設備之間發生的會話。在以下示例中,"->"表明相應分組是從主機設備發送到客戶端設備的,"<-"表明相應分組是從客戶端設備發送到主機設備的。分組類型首先被列出,然后分組中的一個或多個字段被列出并帶有示例值,其中"<...>"表明在圖7的示例中沒有示出另外的字段。分組的數據部分(如果有的話)由"Data=..."來指示。首先給出分組的列表,然后在分組列表之后提供對會話的說明。-〉GetDeviceInfo<-Data<Model=ABC123,FilesystemSize=1234,<...執行可選的注冊和/或認證->FileRefOpen<Path='/DeviceData.xmr,Mode=Read><-FileRefOpenResult<FileRef=408>->FileRefRead<FileRef=408,Length=8192><-Data<Data=<..->FileRefClose<FileRef=408><-Status<Status=SUCCESS>畫〉MakeDirectory<Path='/media'><-Status<Status=PATHEXISTS〉->GetFileInfo<Path='/media/filel.mp3,><-Data<Data=<...->FileRefOpen<Path=Vmedia/filel.mp3',mode=WriteTrucate><-FileRefOpenResult<FileRef=831>->FileRefWrite<FileRef=831,Data=<...》<-Status<Status=SUCCESS>->FileRefWrite<FileRef=831,Data=<...》->FileRefClose<FileRef831><-Status<Status=SUCCESS>->GetFileInfo<Path='/media/file2.mp3'〉<-Status<Status=PATH—DOES—NOT—EXIST>->FileRefOpen<Path='/media/file2,mp3',mode=WriteTrucate><-FileRefOpenResult<FileRef=831>->FileRefWrite<FileRef=831,Data=<...<-Status<Status=SUCCESS>->FileRefWrite<FileRef=831,Data=<...<-Status<Status=SUCCESS>-〉FileRefClose<FileRef831><-Status<Status=SUCCESS>在圖7的示例中,主機設備可以判定客戶端設備是否已經連接到主機設備(710)。如上所述,主機設備和客戶端設備之間的連接可以是有線的或者無線的。主機設備可以利用任何適當的技術來檢測客戶端設備的存在性。例如,如果客戶端設備經由有線連接與主機設備相連接,則主機設備可被配置為檢測客戶端設備與有線接口的物理連接。如果客戶端設備經由無線連接與主機設備相連接,則主機設備可被配置為對配對或其他類型的無線連接過程的完成做出響應。在一個實施例中,如果沒有連接客戶端設備(710),則主機設備可以等待連接客戶端設備。在另一實施例中,主機設備可以僅在經由接口接收到請求的情況下做出響應。例如,有線接口可包括供用戶按壓以發起客戶端設備和主機設備之間的通信的按鈕。又例如,客戶端設備可以具有允許用戶請求與主機設備通信的用戶接口。響應于客戶端設備的連接(710),主機設備可以收集關于客戶端設備的信息(720)。對關于客戶端設備的信息的收集可以通過從主機設備向客戶端設備發送"獲得設備信息"分組以及從客戶端設備向主機設備發送"數據"分組來實現。如上所述,主機設備可通過這種方式獲取關于客戶端設備的任何類型的信息。在圖7的示例中,客戶端設備至少向主機設備提供型號標識符和文件系統大小。也可提供另外和/或不同的數據。可選地,在從客戶端設備收集到足夠的信息后,主機設備可以判定客戶端設備是否是新設備(730)。如果客戶端設備是新設備,則主機設備可以執行可選的注冊過程(735)。主機設備可以認證客戶端設備(740)。認證可通過例如在主機設備和客戶端設備之間交換密鑰或其他標識符來實現。也可使用其他認證技術。在一個實施例中,認證是利用存在于主機設備和客戶端設備上的對應同步服務來執行的。在認證之后,主機設備可以開始主機設備和客戶端設備之間的數據同步。客戶端設備可以請求與客戶端設備上的路徑相對應的文件Ref值并且讀取該路徑中的數據(750)。這可通過利用例如以上列出的"文件Ref打開"、"文件Ref打開結果"、"文件Ref讀取"、"數據"分組來實現。如果所請求的目錄不存在,則可以創建該目錄(750)。當已獲取所請求的數據時,可以關閉文件Ref。這可通過使用以上列出的"文件Ref關閉"和"狀態"分組來實現。"制作目錄"分組可用于判定是否存在目標路徑。例如,利用以上列出的分組,具有目標"/media"的"制作目錄"分組可用于判定是否存在"media"目錄。如果存在"media"目錄,則來自客戶端設備的該"狀態"分組可以利用"PATH—EXISTS"狀態來表明"media"目錄的存在。可以為要更新的第一文件(例如,Vmedia/filel.mp3')請求文件信息。"獲得文件信息"分組可用于請求與要更新的第一文件有關的信息(770)。客戶端設備可以使用"數據"分組來返回與要更新的第一文件有關的數據。主機設備隨后可請求在更新第一文件時使用的文件Ref值。這可利用"文件Ref打開"分組來實現,來自客戶端設備的響應則在"文件Ref打開結果"分組中。主機設備可以使用文件Ref值來將數據寫入到客戶端設備上的文件(775)。這可利用"文件Ref寫入"分組來實現,來自客戶端設備的確認則由"狀態"分組攜帶。當對文件的寫入完成時,主機設備可以使用"文件Ref關閉"分組來釋放文件Ref,這可由來自客戶端設備的"狀態"分組加以確認。"制作目錄"分組可用于判定是否存在用于要更新的第二文件的目標路徑。例如,利用以上列出的分組,具有目標"Vmedia/file2.mp3'"的"獲得文件信息"分組可用于判定是否存在"file2.mp3"文件并且獲得與該文件有關的信息(780)。如果例如不存在"file2.mp3"文件,則來自客戶端設備的"狀態"分組可返回"PATH—DOES—NOT—EXIST"狀態。主機設備隨后可請求在更新第二文件時使用的文件Ref值。這可利用"文件Ref打開"分組來實現,來自客戶端設備的響應則在"文件Ref打開結果"分組中。主機設備可以使用文件Ref值來將數據寫入到客戶端設備上的文件(785)。這可利用"文件Ref寫入"分組來實現,來自客戶端設備的確認則由"狀態"分組攜帶。當對文件的寫入完成時,主機設備可以使用"文件Ref關閉"分組來釋放文件Ref,這可由來自客戶端設備的"狀態"分組加以確認。以類似的方式可以更新任意數目的文件。如果同步未完成(790),則可以如上所述地更新另外的文件。如果同步完成(790),則可以終止同步會話。本公開的另一方面涉及復用式數據流協議。這種協議的使用使得設備上的多個應用(或者同一應用)能夠與另一設備上的一個或多個應用維持任意數目的多個并發會話,并且隨著應用動態地引起會話的創建或者其會話的關閉,并發會話的數目可隨時間而變化。這種協議可以按獨立于一個設備和另一設備(例如,主機)兩者上使用的接口(例如,USB接口或BLUETOOTH接口)的傳輸的方式來實現,并且在同一個共同的鏈路/接口(例如,USB接口)上可以維持多個獨立連接。在一個實施例中,建立單個USB會話,并且在該單個USB會話上隧傳(tunnel)了任意且可改變數目的多個并發會話。在一個實施例中,特定接口例如USB應當支持成31幀,或者某種成幀協議應當被添加,例如COBS(恒定開銷字節填充)或PPP/SLIP風格的成幀。多個獨立連接可被同時用于不同目的(例如,諸如媒體文件之類的文件可被傳送,同時諸如地址簿中的聯絡人之類的結構化數據可在設備之間被交換和/或同步,同時其他數據(例如,電子郵件或設置信息或軟件窗口小部件)也在設備之間被交換)。支持多個獨立連接的能力對于具有多任務操作系統(OS)的設備尤其有用,這種操作系統允許多個應用同時運行,但這種os并非必要的。圖14B示出了利用本發明一個實施例任意數目的多個"客戶端"應用(例如,用于同步結構化數據的同步軟件、用于傳送文件的文件傳送軟件、備份軟件等等)如何能夠在諸如USB(有線或無線)或BLUETOOTH之類的非網絡接口上維持多個并發連接或會話。圖14A示出了在現有技術中實際上在每個設備上僅有一個客戶端應用(或者靜態的、固定數目的客戶端應用)能夠使用設備之間的USB連接。在圖14A的互連的系統1401中,主機上的客戶端應用1402使用PTP(圖片傳送協議)1403通過其USB接口1405和連接1407來發送和接收數據,并且設備上的客戶端應用1411使用PTP協議(未示出)通過設備的USB接口1409來發送和接收數據。連接1407以及USB接口1405和1409僅支持單個連接或會話。與之不同,互連的系統1421通過連接1429以及USB接口1427和1431支持多個獨立且并發的連接或會話。主機設備上的多個客戶端應用1423可以與多個客戶端應用1435中其各自的對應物維持獨立且并發的連接或會話。例如,在圖8所示的系統的情況下,設備801上的文件傳送軟件807可以與主機803上的媒體軟件831(例如,iTmies)(或者與文件傳送軟件833)具有打開且維持的連接,同時設備801上的同步軟件805可以與主機上的同步軟件835維持打開的連接(其獨立于軟件807和831之間的連接)。多個獨立且并發的連接可以通過在主機和設備兩者上使用類TCP協議來實現,其中具有類TCP頭部的類TCP分組通過非網絡接口(例如USB接口1427和1431)傳輸。類TCP分組被主機上的接口TCP(TCPoverinterface)1425軟件和設備上的接口TCP1431軟件所處理。接口TCP1425軟件可以與圖8中的接口TCP軟件821相同或相似,接口TCP1431軟件可以與圖8中的接口TCP軟件841相同或相似。類TCP分組在類TCP頭部中指定與建立了連接的相應源(例如,發送方)和目的地(例如,接收方)應用相關聯的相應的源和目的地端口,并且對這些端口的指定允許了維持獨立且并發的連接。這里描述的方法還提供了一種機制,用于在連接被突然或意外斷開的情況下(例如,當用戶將設備從其USB線纜或支座上拔掉以便應答由無線蜂窩電話接收到的電話呼叫,從而使設備與主機斷開連接時)得體地恢復。類TCP協議在會話被切斷時向源和目的地應用提供通知,并且該通知可被應用用來處理通知并清掃其狀態并且實現對數據的任何期望校正。類TCP協議可以允許源和目的地應用通過全部或部分忽略發生故障的連接會話(例如,通過刪除部分接收的文件或部分接收的結構化數據集并且設定差錯消息或狀態消息,該差錯消息或狀態消息將使得兩個設備在重新連接時在這些源和目的地應用之間建立新的連接以便交換在先前發生故障的連接會話中嘗試交換的數據),來從斷開的通信中迅速且得體地恢復。類TCP協議還可結合在類TCP協議上方運行的文件傳送協議使用,并且文件傳送協議可用于在兩個設備之間提供文件傳送,并且利用分組(例如,類TCP分組)傳送的文件可以在接收方被重建,并且可在(利用多個類TCP分組接收的)所有數據都已被接收到之后被核實(或者它可以在部分文件被接收到之后被部分地核實)。可以利用傳統的校驗和操作或散列操作來核實文件。許多不同類型的軟件可結合這個類TCP協議使用,例如任何結合雙向字節流工作的協議可被層疊在這個類TCP協議上方。這些不同類型的軟件可以包括telnet(例如,用于交互式telnet會話)、rsync、用于遠程調試另一設備上的應用的gdboverIP,等等。另外,在這個類TCP協議上方運行的軟件可實現事務型協議,包括對原子事務的使用。這個類TCP協議允許了在這個類TCP協議上方運行的一層或多層軟件提供其服務和功能,而不要求它們負責與在另一系統上運行的另一軟件建立和維持連接。應當理解,術語"設備"和"主機"是可互換使用的;換言之,"設備"既適用于設備也適用于主機。主機是設備,并且設備可以被認為是主機。然而,在某些實施例中,會話可僅由主機發起并且是從主機到設備的,在這種情況下主機不可與設備互換。還應當理解,這里描述的類TCP協議是提供一種支持獨立連接的復用和流控制的可靠傳輸機制的通信協議的示例,提供類似機制的其他協議也可作為替代用于本發明的至少某些實施例中。還應當明白,在本發明的至少某些實施例中,諸如TCP硬件加速器之類的硬件可用于完全或部分替換這里描述的軟件。圖8示出了通過(設備上的)接口823和(主機上的)接口847連接的互連的設備801和主機803的示例。這些接口可以被認為是非網絡接口,例如USB或BLUETOOTH接口。換言之,用于外圍設備(例如,鼠標、鍵盤、存儲設備)但不用于連接到計算機網絡(例如LAN(局域網)或因特網)的接口被用于連接主機803和設備801。設備801包括被設計來連接到計算機網絡的接口817,主機803包括也用于連接到網絡(例如因特網)的接口845(例如WiFi或以太網或電話調制解調器)。接口817被耦合以發送/接收由TCP/IP軟件棧815處理的TCP/IP分組;接口817和TCP/IP軟件棧815為設備801提供傳統的因特網或網絡連接。接口845被耦合以發送/接收由TCP/IP軟件棧843處理的TCP/IP分組;接口845和TCP/IP軟件棧843為主機803提供傳統的因特網或網絡連接。主機803包括若干個客戶端應用831、833、835和837,這些客戶端應用可以通過接口823和847與設備801上的客戶端應用805、807和809交換數據和/或文件。圖8示出了主機803和設備801上的某些客戶端應用的示例,但在設備和主機之一或兩者之上可以有更多或更少或不同的客戶端應用。在圖8所示的示例中,主機803上的客戶端應用通過一提供軟件模塊之間的互通信的套接字API839與接口TCP軟件841和TCP/IP軟件棧843通信。套接字API839響應于對套接字API的調用而為基于流的協議的會話的每個端點提供一個打開的套接字。套接字API819在設備801上提供類似的功能,從而允許創建打開的套接字,以建立并維持TCP/IP軟件棧815和接口TCP軟件821之間的通信,并且允許客戶端應用805、807和809與TCP/IP軟件棧建立并維持通信(通過可選的關守811)。通常,一方的每個客戶端應用被配置為與另一方的相應對應物維持連接。例34如,同步軟件835被配置為與同步軟件805維持連接,以便在設備之間交換數據(例如,結構化數據或窗口小部件等等)。同步軟件835和同步軟件805的示例在2007年1月7日提交的題為"SynchronizationMethodsandSystems"的美國專利申請No.11/650,730中提供,該申請通過引用被并入在此。媒體軟件831(其可以是媒體播放器,例如iTunes)被配置為與文件傳送軟件807(其可以是設備上的媒體播放器,例如iTimes)維持連接。文件傳送軟件在某些實施例中還可以被配置為與文件傳送軟件833維持連接。文件共享軟件809被配置為與文件共享軟件837維持連接。這些連接可通過一個或多個可選的關守來維持,所述關守例如是關守811以及主機上的可能存在于客戶端應用831、833、835、837與接口TCP軟件841之間的相應關守(未示出)。在至少某些實施例中,關守幫助在需要經認證的連接的情況下在設備和主機之間創建這種連接。圖8中的關守可以與圖1所示的關守客戶端115和關守180相同或相似。用于某些應用(例如,文件共享或telenet或gdboverIP)的連接可以完全繞開設備上的關守。在下文中結合對圖9-12的描述來進一步描述TCP/IP軟件棧815、接口TCP軟件821以及接口TCP軟件841的操作。這些軟件組件支持這里描述的復用式數據流協議。設備801包括數據813,該數據813可被存儲在包括閃存、硬盤驅動器、易失性半導體存儲器等等在內的多個存儲介質中的任何一個之中。該數據可包括用于地址簿、日歷、待做事項和注釋的結構化數據,該數據可以如這里所述通過同步軟件805和同步軟件835來加以同步。另外,數據813還可包括媒體文件,例如用于音樂的MP3文件或者用于電影或其他視聽媒體的MPEG4文件。數據813還可包括其他類型的數據(例如,字處理文件等等)或者甚至包括可執行程序,例如窗口小部件、與設置信息和電子郵件或電話賬戶信息有關的數據,等等。應當明白,設備方的各種客戶端應用與包含數據813的存儲設備通信以便訪問數據。例如,文件傳送軟件807可以讀取或寫入數據813以便傳送文件。應當理解,主機設備803也包括數據存儲介質,例如閃存或硬盤驅動器或易失性存儲器設備(例如,DRAM),或者其他存儲介質,用于存儲供主機803上的客戶端應用使用的數據。圖8示出了主機設備803的一個示例,而圖13示出了主機設備的替代軟件體系結構。主機設備1301包括若干個客戶端應用,其中包括應用1303、1305和1307,其每一個通過套接字API1309耦合到TCP/IP軟件棧1313和接口TCP軟件1311。TCP/IP軟件棧1313也可通過套接字API1309耦合到接口TCP軟件1311,以便通過USB或BLUETOOTH接口1315來發送和接收分組。環回接口1317耦合到TCP/IP軟件棧1313,以便在TCP/IP軟件棧1313和接口TCP軟件1311之間為分組提供路徑。接口TCP軟件1311耦合到接口1315,接口1315類似于圖8的接口847。TCP/IP軟件棧1313耦合到接口1319,接口1319類似于圖8所示的接口817。圖13所示的主機和圖8所示的主機之間的主要差異在于通過接口847接收和發送的類TCP分組是由接口TCP軟件841而不是由TCP/IP軟件棧843處理的;另一方面,在圖13所示的主機設備的情況下,通過接口1315發送和接收的類TCP分組是由接口TCP軟件1311和TCP/IP軟件棧1313兩者處理的。圖9是示出根據本發明一個實施例用于在兩個系統(例如主機和設備)之間交換數據的方法的示例的流程圖。該方法開始于一方,并且在兩個設備之間完成數據交換之后,結束于另一方。在操作901中,從同時具有通過非網絡接口(例如USB或BLUETOOTH接口)支持的獨立會話的多個獨立應用中的至少一個接收數據流。該數據流可通過套接字接口來接收。例如,由媒體軟件831控制的媒體文件可通過套接字接口向接口TCP軟件841發送媒體文件。在操作903中,為數據流中的數據創建分組,并且這些分組包括頭部,例如分組中的類TCP頭部。例如,接口TCP軟件841可以根據數據流創建分組,并且這些分組中的每一個包括每個分組中的類TCP頭部。這些分組在操作905中通過非網絡接口(例如接口847)被發送。進而,這些分組在其他系統處通過類似的非網絡接口(例如接口823)被接收。然后,在操作909中,分組中的數據被例如接口TCP軟件821所提取。可以根據分組內的端口標識符來確定數據的目的地,這使得數據可以被發送或提供到接收設備上的目的地應用。如果數據是諸如MP3文件或電影文件等等之類的文件的一部分,則該文件在操作911中被重建并且可選地被核實。核實可以包括對整個文件使用校驗和或者散列操作,這是現有技術中已知的。如果在連接期間的任何時刻,用戶或系統導致發生斷開連接(例如,從設備中拔掉USB線纜),則兩方清掃其狀態并且關閉其套接字,從而終止兩個設備之間的類TCP連接。這樣就告知了主機上的客戶端和設備上的服務會話結束了。另外,設備上的服務或主機上的客戶端可以在任何時間關閉會話,并且另一方將被告知會話己被關閉。圖10提供了根據本發明一個實施例的初始化或設置方法的示例。在操作1001中,主機的接口TCP軟件從諸如主機上的iTunes之類的應用的接收調用,以在諸如通過套接字API提供的端口"X"之類的端口上進行連接。響應于該調用,主機的接口TCP軟件在操作1003中創建類TCP分組,例如SYNTCP分組,并且使得該分組通過非網絡接口(例如USB接口或者圖8所示的接口847)被發送。設備的接口TCP軟件通過設備的非網絡接口(例如,接口823,其可以是USB接口)接收該類TCP分組并且生成一個或多個調用,以獲得套接字并且在諸如與TCP/IP軟件棧815相關聯的環回地址上的端口之類的端口上連接該套接字。設備在操作1007中使得synackTCP分組被創建,并且接口TCP軟件使得通過設備的非網絡接口將該synack類TCP分組發送到主機的非網絡接口。如操作1009中所示,設備和主機兩者上的接口TCP軟件都可維持關于哪個端口/會話與哪個套接字相關聯的信息。圖11示出了用于將數據從主機傳送到設備的方法的一個示例。在操作1101中,主機上的應用(例如主機上的iTimes)在該應用的套接字上向主機上的接口TCP軟件發送數據。例如,在主機803的情況下,媒體軟件831通過為該應用打開的套接字向接口TCP軟件841發送數據。在操作1103中,主機上的接口TCP軟件接收該數據并且創建類TCP分組,在該分組內具有類TCP頭部和該數據中的至少一些,并且主機上的接口TCP軟件通過非網絡接口(例如USB接口或圖8所示的接口847)來發送該分組。在操作1105中,設備上的接口TCP軟件從分組中提取數據并且將該數據(有時稱為"有效載荷")發送到由分組中的端口指定的套接字上。在圖8的示例中,接口TCP軟件821提取通過接口823接收的數據并且將二ir脈"fcB必:;iiSi農拉^";+、1々/由4旦來/r"tE^b士旦/it511T/^D/TD稱/f生士:^Q1《TtJiSw雙:/rt/x仏;t'j長,文丁丄,A^nri叉i寸狄i/。T議:i7El六王U丄HV丄P狄1十t戈8丄)。<土保作1107中,設備上的TCP/IP棧,例如TCP/IP軟件棧815,獲得來自設備上的接口TCP軟件的數據,并且創建帶有IP和TCP頭部的分組。此情況下的IP地址可以是TCP/IP棧的環回地址。例如,TCP/IP軟件棧815可包括環回接口(未示出),例如圖13所示的環回接口。分組將從該環回接口返回,并且TCP/IP棧在操作1107中去除TCP和IP頭部并且將數據在套接字上發送到應用。在圖11所示的應用是主機上的iTimes應用的示例中,設備上的接收方應用可以是文件傳送軟件807,該文件傳送軟件可以是設備上的媒體播放器的一部分。圖12示出了用于將數據從設備傳送到主機的方法的示例。在操作1201中,設備上的應用,例如同步軟件805或者媒體播放器軟件,通過用于該應用的套接字將數據發送到TCP/IP桟軟件或設備,例如TCP/IP軟件棧815。在操作1203中,TCP/IP軟件棧將數據分解為分組,并且將TCP和IP頭部與數據包括在一起以便創建分組。IP頭部中的IP地址可以是環回地址,以使得分組被返回到TCP/IP軟件棧,例如軟件棧815。在操作1205中,分組被引導到環回地址并從環回地址返回,并且被TCP/IP軟件棧所接收,TCP/IP軟件棧去除TCP和IP頭部并且將數據以數據流的形式傳送到接口TCP軟件,例如設備上的接口TCP軟件821。在操作1207中,接口TCP軟件接收來自TCP/IP軟件桟815的數據,并且創建包含分組化數據和類TCP頭部的分組,并且調用USB驅動器以利用USB接口(例如接口823)上的USB協議來發送分組。在操作1209中,這些分組被從設備的USB接口發送到主機的USB接口,例如主機上的接口847。然后,在操作1211中,主機上的接口TCP軟件,例如接口TCP軟件841,接收分組并且去除類TCP頭部,并且通過例如套接字API將數據傳送到接收方應用。圖15提供了用于在兩個設備之間交換文件的方法的示例。在此情況下,數據通常不是諸如聯絡信息等等之類的被同步的結構化數據。更確切38地說,數據構成整個文件。在操作1501中,數據以分組的形式與類TCP頭部一起通過諸如接口823或接口847之類的接口被傳送。在操作1503T,込S刀-組孤Ai力一爾玩丄H、J力一飲w個漢:r女HX,井且雙J/S個厭〃、夕T刀、^hL中提取出來以準備重新組裝文件。然后,在操作1505中,重建文件。這可以在文件的所有數據已被接收到之后發生或者可以在數據被接收的同時發生。如果在文件傳送期間連接丟失,則存儲差錯消息和/或狀態消息以表明文件未被成功傳送,以便其可在設備被重新連接時被傳送。文件可以在文件的所有數據已被接收到之后被加以核實或者可在其被接收的同時被部分核實。核實可以是可選的操作,例如操作1507,并且可以通過使用傳統的校驗和操作或散列操作來執行。圖15的方法中使用的分組可以包括作為文件傳送協議的一部分的信息。例如,分組可以包括對具有預定分組格式的分組類型和與該分組類型相關聯的分組功能的指示。分組功能可以指定文件傳送協議軟件的操作。在發生連接斷開的情況下的差錯消息或狀態消息可以至少包括在連接被中斷之前僅部分傳送的文件的標識符,以便在重新建立連接時可傳送該文件。以下是對圖8-13、圖14B和圖15所示的一個或多個實施例的實現方式的描述;此實現方式允許設備和主機經由USB通信。該實現方式可被稱為設備通信協議,該協議可用來允許諸如文件傳送軟件807(例如,用于iTunes媒體同步)和結構化數據同步(例如,同步軟件805)之類的多個服務同時與設備通信,而無需另外的USB端點。此實現方式中的通信協議是作為廠商特定接口實現的。廠商特定接口利用兩個端點,即大塊輸入(BulkInput)端點和大塊輸出(BulkOutput)端點。雖然該協議并不完全是典型的TCP,但它確實使用了類似TCP的機制來進行流控制、連接建立/終止和復用。根據此設備通信協議的接口是通過找到這樣一個接口來識別的-設備的廠商ID為Apple(0x05AC)-接口類為廠商特定(255)-接口子類為254-接口協議為2替代設定o端點數目2接口類255(廠商特定)接口子類254(廠商特定)接口協議2端點0x85-大塊輸入地址0x85(輸入)屬性0x02(大塊無同步數據端點)最大分組大小512査詢間隔0(端點永不NAK)端點0x04-大塊輸出地址0x04(輸出)屬性0x02(大塊無同步數據端點)最大分組大小512査詢間隔0(端點永不NAK)1)消息頭部所有數據都是以消息的形式發送的。每個消息開始于以下頭部。所有頭部都是按網絡字節順序的。AppleUSBMobileDeviceMessageHeader+-------+......一+.......+.......+.......+.......+.......+.......+I類型G2比特)I長度G2比特)I+-------+……誦一+.......+-------+醫......+畫......+.......+-------+存在兩個定義的消息類型O-版本消息6-TCP消息長度字段用于驗證接收到的USB數據報是正確大小的。長度包括消息頭部的大小。USB以分組的形式發送數據。對于大塊USB端點,最大分組大小由速度決定。只要你保持發送標準大小的分組,數據就被認為是幀40頭部中的長度字段應當匹配所接收的幀的大小。如果它不匹配,則幀應當被丟棄。應當記錄差錯來追蹤故障。在大多數情況下,后續的幀也會出問題,因而也必須被丟棄。込蘭左館個JW3及王。狩不U用1LP淚思術仮測丟失,并且將放棄該TCP連接。2)版本消息版本消息是在開始時交換的,用于協商要使用的協議的版本。當設備出現時,它應當等待版本消息。主機負責發送第一條版本消息。版本消息具有以下格式+.......+-......+.......+.......+.......+.....響-+I0I此消息的大小I版本(32比特)I特征G2比特)l應當為零(32比特)I版本主機->設備-請求的版本設備->主機-支持的版本特征主機->設備表明期望特征的比特字段。設備->主機表明將使用的特征的比特字段。對于此實現方式,主機應當將"版本"設定為1。特征應當為零,因為目前沒有支持的特征。將來,可以添加諸如校驗和之類的特征,而不會沖擊版本。此外,可以利用特征字段來實現校驗和,而無需定義全新的版I設備應當以所支持的版本來做出響應。設備可以僅支持一個版本,或者它可支持多個版本。如果設備支持主機所請求的版本,則設備應當以該版本來做出響應。如果設備僅支持一不同的版本,則設備應當以它支持的版本來做出響應。如果設備以所請求的版本做出響應,則設備應當將特征比特字段設定為所請求的比特,其中掩蔽掉任何不支持的特征。如果響應版本不與所請求的版本匹配,則"特征"字段應當為零。如果設備以指示出主機不理解的版本的版本消息來做出響應,則主機可能需要更新的軟件來與設備通信。如果設備以與主機支持的所請求版本不同的版本來做出響應,則主機可以發送另一版本消息,其帶有新協商的版本,并且在"特征"字段中設定了比特以請求特定的特征。設備應當準備好處理多個版本消息。3)TCP消息對于經由USB的數據通信,使用TCP消息。TCP消息是AppleUSBMobileDeviceHeader,其中協議值為6并且大小被設定為包括頭部在內的整個消息的大小。AppleUSBMobileDeviceHeader后面是TCP頭部。目前不支持可變頭部長度和TCP選項。有效載荷(如果有的話)跟在TCP頭部后面。+.......+.......+.....—+.......+-------+.......+-------+.......+I6I此消息的大小I+.......+.......+.......+.......+.......+.......+.......+畫......+Isrc端口Idst端口i序列I+-------+.......+.......+-------+-------+-------+-------+.....—+I確認IhiI標志I窗口大小I+.......+......-+.......+.......+-------+.......+畫-……+-------+I校驗和I緊急指針I+-------+.......+.......+.......+緊急指針和校驗和字段目前未被使用并且在此實現方式中應當被設定為零。由于USB被認為是可靠的,因此確認是隱含的。單純的ACK分組被發送來更新窗口。3.1)發起連接通過主機向設備發送TCPSYN分組來建立連接。dst(目的地)端口被用于確定在主機上連接哪個服務。src(源)端口/dst端口元組應當是唯一的,以將此連接與任何其他連接區分開來。如果接受連接,則設備利用SYN/ACK分組對SYN分組做出響應。如果沒有足夠的資源,或者沒有服務在所請求的端口上偵聽,則設備可以拒絕連接請求。為了拒絕連接,設備應當發送TCPRST。正常的TCP連接涉及三次握手。由于USB被認為是可靠的,因此第三分組,即從主機到設備的ACK,在此實現方式中可被丟棄(不使用)。設備一旦發送了SYN/ACK分組就認為連接己建立。主機一旦接收到SYN/ACK分組就認為連接已建立。對于SYN標志遞增序列和確認號,就像在真實(典型)TCP中那樣。窗口偏移值8被使用,但此選項未被協商。3.2)終止連接當設備或主機希望關閉連接時,它發送TCPRST。響應于TCPRST,主機或設備應當清掃與通過源和目的地TCP端口指定的連接相關聯的任何資源。FIN標志在此實現方式中未被使用。在此實現方式中沒有半關閉。3.3)發送數據序列和確認號被用于流控制。當主機或設備發送帶有有效載荷的TCP消息時,序列號按所發送的有效載荷的大小而遞增。主機和設備不被允許發送超出最后確認的數據加上最后通告的窗口的數據。流控制就是這樣實現的。假定所發送的任何數據都將被接收到。在此實現方式中不支持重發。替代實施例可以使用重發,如果需要這種特征的話。發送數據一方一旦發送了數據就可丟棄數據的本地拷貝。3.4)接收數據數據被假定是按順序到達的。如果主機或設備接收到亂序的發送(基于序列號),則主機應當關閉連接并且發送TCPRST。當主機或設備有更多緩沖器空間可用時,它可以發送帶有更新的窗口的TCPACK分組,以表明另一方可發送更多數據。本說明書中提及"一個實施例"或"實施例"指的是聯系該實施例描述的特定的特征、結構或特性被包括在本發明的至少一個實施例中。在本說明書中各處出現的短語"在一個實施例中"并不一定都指同一實施例。在以上說明書中,已經參考其具體實施例描述了本發明。然而,很明顯,在不脫離本發明的更寬精神和范圍的情況下,可以對其進行各種修改和變化。因此,說明書和附圖應當被看作說明性的而非限制性的。4權利要求1.一種計算機可讀介質,包含使得數據處理系統執行一種方法的可執行程序指令,該方法包括在第一網絡棧軟件處接收包含頭部的分組,所述分組是通過接口接收的;從所述分組中提取數據,其中所述提取是由所述第一網絡棧軟件執行的,所述接口未被設計來使用因特網協議(IP)地址,并且所述頭部包含用于流控制和定序的數據并且與用于文件傳送應用的端口相關聯,并且所述頭部允許多個應用通過所述接口維持任意數目的多個并發會話;根據所述分組中的數據來重建文件。2.如權利要求l所述的介質,其中,所述方法還包括在所述文件的所有數據已被接收之后核實所述文件,并且其中所述核實包括校驗和操作或散列操作中的至少一種。3.如權利要求2所述的介質,其中所述分組包括對具有預定分組格式的分組類型和與所述分組類型相關聯的分組功能的指示。4.如權利要求3所述的介質,其中,所述接口的標準協議不使用IP地址,并且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。5.如權利要求4所述的介質,其中,所述分組包括類傳輸控制協議(TCP)頭部,并且不包括遵從IP的頭部。6.如權利要求5所述的介質,其中,所述類TCP頭部與用于所述文件傳送應用的套接字相關聯。7.如權利要求6所述的介質,其中,所述方法還包括創建另外的分組來包含從所述分組中提取的數據,所述另外的分組包括TCP/IP頭部,其中IP頭部指定環回地址;從所述另外的分組中提取數據,并且將從所述另外的分組中提取的數據提供給所述文件傳送應用。8.如權利要求7所述的介質,其中,創建所述另外的分組和從所述另外的分組中提取數據是由TCP/IP棧軟件執行的,該TCP/IP棧軟件操作性地耦合到用于通過IP協議連接到因特網的另一接口。9.一種機器實現的方法,包括在第一網絡棧軟件處接收包含頭部的分組,所述分組是通過接口接收的;從所述分組中提取數據,其中所述提取是由所述第一網絡棧軟件執行的,所述接口未被設計來使用因特網協議(IP)地址,并且所述頭部包含用于流控制和定序的數據并且與用于文件傳送應用的端口相關聯,并且所述頭部允許多個應用通過所述接口維持任意數目的多個并發會話;根據所述分組中的數據來重建文件。10.如權利要求9所述的方法,其中,所述方法還包括在所述文件的所有數據已被接收之后核實所述文件,并且其中所述核實包括校驗和操作或散列操作中的至少一種。11.如權利要求IO所述的方法,其中所述分組包括對具有預定分組格式的分組類型和與所述分組類型相關聯的分組功能的指示。12.如權利要求ll所述的方法,其中,所述接口的標準協議不使用IP地址,并且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。13.如權利要求12所述的方法,其中,所述分組包括類傳輸控制協議(TCP)頭部,并且不包括遵從IP的頭部。14.如權利要求13所述的方法,其中,所述類TCP頭部與用于所述文件傳送應用的套接字相關聯。15.如權利要求14所述的方法,其中,所述方法還包括創建另外的分組來包含從所述分組中提取的數據,所述另外的分組包括TCP/IP頭部,其中IP頭部指定環回地址;從所述另外的分組中提取數據,并且將從所述另外的分組中提取的數據提供給所述文件傳送應用。16.如權利要求15所述的方法,其中,創建所述另外的分組和從所述另外的分組中提取數據是由TCP/IP棧軟件執行的,該TCP/IP棧軟件操作性地耦合到用于通過IP協議連接到因特網的另一接口。17.—種數據處理系統,包括用于在第一網絡棧軟件處接收包含頭部的分組的裝置,所述分組是通過接口接收的;用于從所述分組中提取數據的裝置,其中所述提取是由所述第一網絡棧軟件執行的,所述接口未被設計來使用因特網協議(IP)地址,并且所述頭部包含用于流控制和定序的數據并且與用于文件傳送應用的端口相關聯,并且所述頭部允許多個應用通過所述接口維持任意數目的多個并發會話;用于根據所述分組中的數據來重建文件的裝置。18.—種計算機可讀介質,包含要在數據處理系統上執行的可執行程序指令,該介質包括第一網絡桟軟件,用于創建分組以便通過設備上的第一接口發送并且用于從通過所述第一接口接收的分組中提取數據;第二網絡棧軟件,用于創建分組以便通過所述設備上的第二接口發送并且用于從通過所述第二接口接收的分組中提取數據,所述第二網絡棧軟件被配置為與所述第一網絡棧軟件通信,其中所述第二接口被配置為耦合到另一系統上的第三接口,所述第二網絡桟軟件被配置為通過所述第一網絡棧軟件來發送從通過所述第二接口接收的分組中提取的數據,并且所述第二網絡棧軟件被配置為利用設計用于所述第二接口的協議來發送和接收分組;文件傳送協議軟件,該文件傳送協議軟件被操作性地耦合來與所述第一網絡棧軟件通信,以接收從通過所述第二接口接收的分組中提取的數據并且根據從所述分組中提取的數據來重建文件。19.如權利要求18所述的介質,其中,所述文件傳送協議軟件在所述文件的所有數據已被接收之后通過校驗和操作或散列操作中的至少一種來核實所述文件。20.如權利要求19所述的介質,其中所述分組包括對具有預定分組格式的分組類型和與所述分組類型相關聯的分組功能的指示。21.如權利要求20所述的介質,其中,所述分組功能指定所述文件傳送協議軟件的操作。22.如權利要求20所述的介質,其中,所述接口的標準協議不使用IP地址,并且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。23.如權利要求22所述的介質,其中,所述分組包括類傳輸控制協議(TCP)頭部,并且不包括遵從IP的頭部。24.如權利要求23所述的介質,其中,所述類TCP頭部與用于所述文件傳送協議軟件的已打開的套接字相關聯。25.如權利要求24所述的介質,其中,所述第一網絡棧軟件和所述第二網絡棧軟件被配置為允許所述設備上的包括所述文件傳送協議軟件在內的多個應用通過所述第二接口維持多個并發會話,并且所述文件是音頻或視聽媒體文件。26.如權利要求25所述的介質,其中,所述第一接口被設計為耦合到因特網并且所述第二接口未被設計來使用因特網協議(IP)地址,并且所述第一網絡棧軟件包括TCP/IP棧并且所述第二網絡棧軟件包括不創建IP頭部的類TCP棧。27.如權利要求26所述的介質,其中,響應于未能傳送完整文件,生成差錯消息,該差錯消息指定所述文件。全文摘要描述了用于基于事務的通信的文件協議。在一個實施例中,一種提供文件傳送協議的方法包括接收包含頭部的分組,這些分組是通過接口在第一網絡棧軟件處接收的;以及從這些分組中提取數據并且根據這些分組中的數據來重建文件。提取可由第一網絡棧軟件執行,并且接口未被設計來使用因特網協議(IP)地址,并且頭部包含用于流控制和定序的數據并且與用于文件傳送應用的端口相關聯,并且頭部允許多個應用通過該接口(其可以是遵從USB或遵從BLUETOOTH的接口)維持多個并發會話。還描述了系統、計算機可讀介質、軟件體系結構和其他方法。文檔編號H04L29/06GK101682634SQ200880019274公開日2010年3月24日申請日期2008年5月8日優先權日2007年6月8日發明者保羅·欽,柯蒂斯·C·加洛韋,約書亞·維韋斯特·格雷斯勒,約翰·安德魯·賴特,肖恩·基思申請人:蘋果公司