新四季網

復用式數據流協議的製作方法

2023-05-03 04:42:36 1


專利名稱::復用式數據流協議的製作方法
技術領域:
:本發明的實施例涉及在設備之間傳輸數據。更具體而言,本發明的實施例涉及用於在一個或多個主機電子設備和一斷續連接的客戶端設備之間高效傳輸數據的技術。
背景技術:
:隨著行動裝置(例如,行動電話、數位音樂播放器、數字個人助理)的普及度增大,單個行動裝置提供的功能已經增加了。與這種功能的增加相關聯的是這樣一種動機,即,提供同步服務,以便例如反映出在行動裝置或者主機設備上對數據做出的改變。另外,可能需要在兩個設備之間交換包括一個或多個文件在內的數據。例如,在兩個設備之間可交換音樂或視頻文件。已經開發出各種技術來在行動裝置和主機設備之間同步數據和/或交換數據。當前的技術通常或者是可能需要一些不必要開銷的基於全功能文件系統的技術,或者可能是提供有限功能的專用技術。這些技術使用現有的接口,例如USB。設備之間的現有接口,例如每個設備上的USB接口,難以允許設備附接到USB(通用串行總線)接口或埠並隨後任意且突然地從USB接口移除/斷開,尤其在設備是存儲設備的情況下更是如此。另外,USB未被設計來在USB的標準通信協議中支持網際網路協議(IP)地址;USB並不被認為是網絡接口。USB也未被設計來為試圖通過USB接口發送數據或等待接收數據的獨立應用支持任意數目(實際上是無限數目)的多個並發獨立會話,並且對於至少某些系統,在USB接口上支持的接口或會話的數目是靜態的並且不能隨時間而改變。對於至少某些系統,USB接口可以支持多個並發"接口",這多個並發"接口"可被認為是多個會話,但其數目是固定的,並且對於一個設備,接口是靜態的(並且不能改變)。另一方面,USB是常見且有用的接口,從而經常會希望使用這種接口來連接兩個系統,例如主機和客戶端設備。
發明內容這裡描述了復用式數據流協議。在一個實施例中,一種用於提供復用式數據流協議的方法包括對數據流進行分組化以提供帶有頭部的分組,並且通過接口將這些分組發送到另一設備,該接口未被設計來使用網際網路協議(IP)地址(或其他網絡地址),例如是USB接口。該方法還可包括在網絡棧軟體處接收帶有頭部的分組並從分組中提取數據,其中分組是通過該接口接收的。頭部可包含用於數據的定序和流控制的數據,並且可包含分組中的數據(有效載荷)的源和目的地(例如分別是發送方應用和接收方應用)的標識符。通過使用一種在頭部中使用此數據的類TCP(TCP-like)協議,頭部允許了多個獨立應用通過該接口維持多個並發會話。頭部可以是類似傳輸控制協議(TCP)的頭部,並且可以不包括類IP頭部。該接口(例如USB接口)的標準協議在至少某些實施例中不使用IP位址。該方法可逐應用地提供流控制。類TCP頭部可用於實現一種類TCP協議,用於流控制、定序、復用、連接建立/終止、確認以及可選的差錯校驗(例如,校驗和)和可選的重發。此方法允許了接口(例如USB接口)對突然的且時間任意的(例如,意外的)連接斷開得體地做出響應。例如,如果設備是帶有無線蜂窩電話的手持式計算機並通過其USB接口連接到主機設備(其可以是桌面型或膝上型計算機或其他數據處理系統)的9USB接口,並且如果設備和主機正在交換數據(例如,傳送MP3文件或其他文件或者交換數據以同步兩個系統或在一個系統上備份另一個系統)並且如果在兩個系統相連接並且通過其USB接口交換數據的同時接收到無線蜂窩電話,則該方法允許突然斷開連接,以便允許用戶應答該電話呼叫。該方法可包括使用一個或多個傳統的套接字API(應用程式接口),這種套接字API允許了不同軟體模塊之間的進程間/應用間通信。該方法還可包括傳統的TCP/IP棧軟體組件,該TCP/IP棧軟體組件通過設備和/或主機上的傳統網絡連接(例如WiFi或乙太網連接/接口或蜂窩電話連接)來處理分組並且還處理分組以便通過非網絡接口發送。該TCP/IP棧軟體在至少某些實施例中可以通過套接字API與接口TCP軟體組件通信,接口TCP軟體組件創建類TCP頭部,用於通過非網絡接口(例如USB接口)發送。在一個實施例中,一種計算機可讀介質包括第二網絡棧軟體,用於創建分組以便通過設備上的第二接口(例如USB接口)發送並且從通過第二接口接收的分組中提取數據;以及第一網絡棧軟體,用於創建分組以便通過設備上的第一接口(例如WiFi或乙太網接口或無線蜂窩電話接口)發送並且從通過第一接口接收的分組中提取數據。第一網絡棧軟體可以是TCP/IP棧,其被配置為與第二網絡棧軟體通信,第二網絡棧軟體可以是接口TCP軟體棧,該接口TCP軟體棧創建類TCP分組並且使得這些類TCP分組通過非網絡接口(例如第二接口)被發送。第二網絡棧軟體可被配置為通過第一網絡棧軟體來把從通過第二接口接收的分組中提取的數據發送到多個接收方軟體應用,這多個接收方軟體應用被允許通過第二接口維持多個並發會話。第一接口被設計為耦合到網際網路,而第二接口未被設計來使用網際網路協議(IP)地址,並且第一網絡棧軟體包括TCP/IP棧,而第二網絡棧軟體包括不創建IP頭部的類TCP棧。第二網絡桟軟體被配置為從通過第二接口接收的分組中提取數據並且通過第一網絡棧軟體將該數據發送到設備上的多個應用之一。由第二網絡棧軟體創建的頭部可包括用於流控制和定序的數據以及接收方(例如"目的地")應用和發送方(例如"源")應用的埠標識符。由第二網絡棧軟體從分組中提取的數據可以被提供給第一網絡棧軟體,第一網絡棧軟體向該數據的至少一部分添加TCP/IP頭部以創建另外的分組,然後第一網絡棧軟體從這些另外的分組中去除TCIP/IP頭部,並隨後將數據提供給接收方應用。TCP/IP頭部可包括與環回接口(loopbackinterface)相對應的IP位址,該環回接口與第一網絡棧軟體操作性地耦合。本說明書還描述了設備、系統、計算機可讀介質、軟體體系結構和其他方法。在另一實施例中,設備之間(例如主機和設備之間)的通信鏈路是遵從通用串行總線(USB)的有線或無線接口。在另一實施例中,設備之間的通信鏈路是遵從BLUETOOTH的無線接口。在另一實施例中,通信鏈路是不為網絡接口的接口。在一個實施例中,客戶端設備是智慧型電話。在另一實施例中,客戶端設備是媒體回放設備。在一個實施例中,主機設備是桌面型計算機系統。在另一實施例中,主機設備是膝上型計算機系統。在另一實施例中,主機設備是掌上型或超便攜型計算機系統。在附圖中以示例方式而非限制方式示出了本發明,在附圖中相似的標號指代類似的要素。圖1是可利用這裡描述的技術通信的主機電子設備和客戶端電子設備的框圖。圖2是諸如主機設備之類的數據處理系統的一個實施例的框圖。圖3是諸如客戶端設備、手持式計算機或其他類型的數據處理系統之類的數據處理系統的一個實施例的框圖。圖4是可用於主機電子設備和客戶端電子設備之間的通信中的分組頭部的表格。圖5是可用於主機電子設備和客戶端電子設備之間的通信中的分組類型的表格。圖6是用於將數據傳送到客戶端設備的技術的一個實施例的流程圖。圖7是用於在主機設備和客戶端設備之間同步數據的技術的一個實施例的流程圖。圖8示出了用於連接被稱為主機和設備的兩個數據處理系統的軟體體系結構的示例。圖9是示出根據本發明一個實施例用於在兩個系統之間交換數據的方法的示例的流程圖;該數據可以是文件(例如,MP3文件、視頻文件、圖片等等)或者結構化數據(例如地址簿中的聯絡信息,或者書籤/收藏夾,或者日曆數據,或者注釋,或者待做事項,等等)或者其他類型的數據(例如,諸如窗口小部件之類的可執行軟體,等等)。圖10示出了根據本發明一個實施例的初始化方法的流程圖。圖11是示出根據本發明一個實施例用於將數據從主機傳送到設備的方法的示例的流程圖。圖12是示出根據本發明一個實施例用於將數據從設備傳送到主機的方法的示例的流程圖。圖13示出了主機系統的替代軟體體系結構的示例。圖14A示出了通過兩個USB接口使用圖片傳送協議(PTP)進行的連接的現有技術示例。圖14B示出了根據本發明一個實施例的連接的示例。圖15是示出根據一個實施例用於在系統之間交換文件的方法的示例的流程圖。具體實施例方式在以下描述中,闡述了許多具體細節。然而,沒有這些具體細節也可實現本發明的實施例。在其他情況下,沒有詳細示出公知的電路、結構和技術,以避免使這裡的描述難以理解。這裡描述的是用於在端點之間傳送文件和其他數據的協議。在一個實施例中,端點是主機電子設備和客戶端電子設備。主機電子設備例如可以是桌面型計算機系統或膝上型計算機系統。客戶端電子設備例如可以是膝上型計算機系統、個人數字助理、具備蜂窩電話能力的設備(例如,蜂窩電話或智慧型電話)。在一個實施例中,端點之間的連接利用了可靠的流傳輸,例如傳輸控制協議(TCP)流連接。也可支持其他流連接。在一個實施例中,通信是利用具有頭部和主體的分組來實現的。這裡在一個實施例中描述了標準的最低限度頭部,但頭部也可包含另外的特定於分組的結構化數據。分組數據可包括非結構化數據,或者可以是空的。圖1是可利用這裡描述的技術通信的主機電子設備和客戶端電子設備的框圖。圖1的框圖提供了可用於在主機設備100和客戶端設備150之間通信的組件的概念性圖示。在一個示例中,主機設備100是計算機系統(例如,桌面型或膝上型計算機系統),客戶端設備150是行動裝置(例如,PDA或智慧型電話)。主機設備100和客戶端設備150可以經由現有技術已知的任何類型的通信技術來通信。例如,通信鏈路145可以是物理線纜(例如,遵從通用串行總線的線纜),或者無線通信鏈路(例如,遵從Bluetooth⑧或遵從IEEE802.11)。Bluetooth(g)是BluetoothSIG公司擁有的註冊商標。應用110可以是可被主機設備IOO執行的任何類型的應用。例如,應用110可以是可從加利福尼亞州庫珀蒂諾的Apple公司獲得的iTunes。應用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的13說明書第7/39頁更多信息在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控制器。這裡描述的本發明的一些方面至少部分可用軟體實現。g卩,這些技術可以在計算機系統或其他數據處理系統中響應於其處理器或處理系統執行存儲器(例如,存儲器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收發機被傳輸到媒體播放器。媒體例如可以是音樂或其他音頻、靜止圖片或運動圖片中的一種或多種。17可攜式媒體播放器可包括媒體選擇設備,例如來自加利福尼亞州庫珀蒂諾的Apple公司的iPod⑧或iPodNano⑧媒體播放器上的點撥輪(clickwheel)輸入設備、觸控螢幕輸入設備、按鈕設備、可移動點選輸入設備或其他輸入設備。媒體選擇設備可用於對存儲在存儲設備和/或遠程存儲設備上的媒體進行選擇。在至少某些實施例中,可攜式媒體播放器可包括顯示設備,該顯示設備耦合到媒體處理系統,用於顯示通過輸入設備選擇並且通過揚聲器或(一個或多個)耳機或在顯示設備上或者既在顯示設備上又在揚聲器或(一個或多個)耳機上呈送的媒體的標題或其他指示符。可攜式媒體播放器的示例在已公布的美國專利申請No.2003/0095096和2004/00224638中有所記載,這兩者都通過引用併入在此。在某些實施例中,數據處理系統300可以以類似於具有平板狀輸入設備的手持式計算機的小外形參數來實現,該輸入設備可以是與液晶顯示器相集成的多點觸控輸入面板設備。這種設備的示例在2006年10月24日提交的題為"AUTOMATEDRESPONSETOANDSENSINGOFUSERACTIVITYINPORTABLEDEVICES"的美國專利申請No.11/586,862中提供,該申請被轉讓給了與本申請相同的受讓人。特此通過引用將上述申請併入在此。在以下描述中,描述了用於同步和非同步處理操作的各種軟體組件。應當理解,在至少某些實施例中,對於一種類型的數據處理系統,這各種軟體組件可被存儲在圖2所示的存儲器220和/或存儲器230中,並且在例如圖3所示的系統的情況下,這各種不同的軟體組件可被存儲在存儲器330中,存儲器330可包括易失性存儲器以及非易失性存儲器,例如快閃記憶體或磁性硬碟驅動器。在伴隨著設備之間的適當互連,利用其各自的示例性實施例描述了主機設備和客戶端設備之後,現在描述示例性的分組格式、分組類型、功能和數據流。與以上描述一樣,以下描述提供了通信協議的示例性實施例。也可支持對這種協議的變化。圖4中的表格示出了分組頭部格式的一個實施例。也可使用其他格式。雖然描述了特定的大小和長度,但是也可支持其他欄位名稱、長度和/或描述。在一個實施例中,分組數據可以以小端(little-endian)或大端(big-endian)格式通過連接發送。在一個實施例中,任一設備可以以任一格式發送數據。接收方設備在必要時可負責交換數據順序。在一個實施例中,每個分組必須使用一致的字節順序(endianness)。在一個實施例中,預定的(例如,固定的)籤名值(例如,0x4141504c36414643)可用於所有分組頭部。籤名可允許接收方設備確定從發送方設備發送來的數據的字節順序。在一個實施例中,籤名欄位的長度是8位元組;然而,也可支持其他籤名欄位大小。分組頭部還可包括表明包括頭部在內的整個分組的長度的欄位。在一個實施例中,分組長度欄位可以是8個字節;然而,也可支持其他分組長度欄位大小,例如支持不同的最大分組大小。分組頭部還可包括表明分組序列號的欄位。分組序列號可用於對在主機設備IOO和客戶端設備150之間傳輸的分組排序。在一個實施例中,分組序列號欄位可以是8個字節;然而,也可支持其他分組序列號欄位大小。分組頭部還包括用於分組類型的欄位。分組類型欄位包括分組中的消息的類型的數值指示符,這表明了分組的功能。分組類型和分組類型值的一個示例性列表在圖5中提供。也可支持其他分組標籤、其他分組功能和/或其他分組類型值。在一個實施例中,分組類型欄位可以是8個字節;然而,也可支持其他分組類型欄位大小。圖5中的表格示出可用於在端點之間通信的一組分組的一個實施例。也可使用其他和/或不同的分組。雖然描述了特定的分組類型標識符和分組名稱,但也可支持其他分組類型標識符、分組名稱和/或描述。圖5中列出的分組的各種實施例在下文中更詳細描述。這些分組描述只是提供了可以提供的一個實施例的示例。在一個實施例中,每個分組包括標準分組頭部。該頭部可以具有如圖4所示的格式。"狀態"(Status)分組可用於響應於請求分組而提供狀態信息。狀態分組還可用於在故障或其他差錯狀況的情況下提供差錯信息。在一個實施例中,狀態分組具有根據以下表格的格式-tableseeoriginaldocumentpage20表3:"狀態"分組"數據"(Data)分組可用於在主機電子設備和客戶端電子設備之間攜帶數據。在一個實施例中,數據分組可以具有任何大小。S卩,數據分組可以是頭部加上要傳輸的數據的長度。在替代實施例中,數據分組可以是固定長度的,從而如果要傳輸的數據超過了數據分組的有效載荷容量,則可利用一個或多個另外的數據分組。在一個實施例中,數據分組具有根據以下表格的格式。tableseeoriginaldocumentpage20表4:"數據"分組"讀取目錄"(ReadDirectory)分組可用於讀取目標設備上的目錄。在一個實施例中,"讀取目錄"分組具有根據以下表格的格式。路徑串可以是具有針對目標設備的適當格式的路徑串。例如,對於UTF-8格式的UNIX(POSIX)路徑串,路徑串可以是以NULL終止的可攜式作業系統接口。也可支持其他格式。POSIX標準家族被正式稱為IEEEStd.1003,並且國際標準名稱是ISO/IEC9945。tableseeoriginaldocumentpage20表5:"讀取目錄"分組"讀取文件"(ReadFile)分組可用於讀取目標設備上的完整文件。在一個實施例中,結果在"狀態"分組或"數據"分組中提供。在一個實施例中,"讀取文件"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)偏移量8從文件開始到所請求數據的偏移量。長度8要從文件中讀取的數據的長度。路徑可變適當格式的路徑串。表6:"讀取文件"分組"寫入文件"(WriteFile)分組可用於向目標設備寫入完整文件。在一個實施例中,"寫入文件"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)路徑可變適當格式的路徑串。,C,7V7T教薪頓要寫乂敗斧微薪。表7:"寫入文件"分組"寫入部分"(WritePart)分組可用於向目標設備上的文件的一部分寫入數據。"寫入部分"分組可以是無狀態的,因為當來自分組的數據被寫入時,與該數據和/或文件相關聯的狀態數據未被維持。在一個實施例中,"寫入部分"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)偏移量8從文件開始到寫入開始的偏移量。路徑可變適當格式的路徑串。教薪頓要寫乂淑做教薪。表8:"寫入部分"分組"截斷(截)文件"(Truncate(Trunc)File)分組可用於設定文件的長度。長度可以短於相應的數據,在此情況下一些數據被丟棄,或者長度可以長於相應的數據,在此情況下超出部分可用預定的數據樣式(例如全"0")來填充。在一個實施例中,"截文件"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)tableseeoriginaldocumentpage22。表9:"截文件"分組"去除路徑"(RemovePath)分組可用於刪除目標設備上的文件或目錄。在一個實施例中,"去除路徑"分組具有根據以下表格的格式。tableseeoriginaldocumentpage22表10:"去除路徑"分組"製作目錄"(MakeDirectory)分組可用於在目標設備上創建目錄。在一個實施例中,"去除路徑"分組具有根據以下表格的格式。tableseeoriginaldocumentpage22表ll:"製作目錄"分組"獲得文件信息"(GetFileInfo)分組可用於檢索描述目標設備上文件的信息。在一個實施例中,文件信息是以在"數據"分組中傳輸的一個或多個鍵/值對的形式來提供的。描述文件的信息例如可以是文件大小、最後修改日期、許可權限。也可提供另外和/或不同的文件信息。在一個實施例中,"獲得文件信息"分組具有根據以下表格的格式。tableseeoriginaldocumentpage22表12:"獲得文件信息"分組"獲得設備信息"(GetDeviceInfo)分組可用於檢索描述目標設備的信息。在一個實施例中,設備信息是以在"數據"分組中傳輸的一個或多個鍵/值對的形式來提供的。描述設備的信息例如可以是設備名稱、序列號、作業系統版本、電池水平、可用空閒空間。也可提供另外和/或不同的文件信息。在一個實施例中,"獲得設備信息"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)表13:"獲得設備信息"分組"原子式文件寫入"(WriteFileAtomic)分組可用於在目標設備上寫入文件。"原子式文件寫入"分組保證要麼整個文件被寫入,要麼該文件全都不被寫入。"原子式文件寫入"分組例如可用於寫入資料庫文件。在一個實施例中,"原子式文件寫入"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)路徑可變適當格式的路徑串。表14:"原子式文件寫入"分組"文件索引(Ref)打開"(FileReference(Ref)Open)分組可用於獲得表示目標設備上的打開文件的令牌或其他標識符。在一個實施例中,"原子式文件寫入"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)模式8打開文件時使用的模式(參見表16)黎彌可變適當格式的路徑串。表15:"文件Ref打開"分組在一個實施例中,"模式"欄位包括打開文件時使用的模式的數值指示符。表16中的"模式名稱"和"模式值"稱呼是用於一個實施例的示例。可以支持一組不同的模式。另外,可以支持不同的模式值。模式名稱模式值只讀1讀-寫2寫-截斷3讀-寫-截斷4寫-附加5tableseeoriginaldocumentpage24表16:模式在"只讀"模式中,文件可被打開來僅供讀取。在"讀-寫"模式中,文件可被打開來僅供讀取和寫入。在"寫-截斷"模式中,文件可被打開來供寫入或截斷。在"讀-寫-截斷"模式中,文件可被打開來供讀取、寫入或截斷。在"寫-附加"模式中,文件可被打開來供寫入或附加。在"讀-寫-附加"模式中,文件可被打開來供讀取、寫入或附加。"文件Ref打開結果"(FileRefOpenResult)分組可用於返回文件索引令牌,該文件索引令牌可在訪問目標設備上的文件時用於這裡描述的分組之中的一個或多個中。在一個實施例中,"文件Ref打開結果"分組具有根據以下表格的格式。tableseeoriginaldocumentpage24表17:"文件Ref打開結果"分組"文件Ref讀取"(FileRefRead)分組可用於利用由於"文件Ref打開"操作而得到的文件索引來讀取文件。在一個實施例中,文件內的位置響應於"文件Ref讀取"操作而被自動推進。在一個實施例中,"文件Ref讀取"分組具有根據以下表格的格式。tableseeoriginaldocumentpage24表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告知"分組具有根據以下表格的格式。欄位名稱以字節為單位的長度描述頭部40標準分組頭部(例如參見圖2)25其位置將被返回的文件索引。表22:"文件Ref告知"分組"文件Ref告知結果"(FileRefTellResult)分組可用於返回"文件Ref告知"操作的結果。在一個實施例中,"文件Ref告知結果"分組具有根據以下表格的格式。tableseeoriginaldocumentpage26表23:"文件Ref告知結果"分組"文件Ref關閉"(FileRefClose)分組可用於利用由於"文件Ref打開"操作而得到的文件索引來關閉文件。在一個實施例中,"文件Ref關閉"分組具有根據以下表格的格式。tableseeoriginaldocumentpage26表24:"文件Ref關閉"分組"文件Ref設定大小"(FileRefSetSize)分組可用於設定與由於"文件Ref打開"操作而得到的索引相對應的文件的大小。在一個實施例中,"文件Ref設定大小"分組具有根據以下表格的格式。tableseeoriginaldocumentpage26表25:"文件Ref設定大小"分組"文件Ref設定大小分組"可用於設定文件的長度。該長度可短於相應的數據,在此情況下一些數據被丟棄,或者該長度可以長於相應的數據,在此情況下超出部分可用預定的數據樣式(例如全"0")來填充。"重命名路徑"(RenamePath)分組可用於對目標設備上的目錄路徑重命名。在一個實施例中,"重命名路徑"分組具有根據以下表格的格tableseeoriginaldocumentpage27表26:"重命名路徑"分組路徑串可以是具有針對目標設備的適當格式的路徑串。例如,源和目的地路徑串可以是UTF-8格式的以NULL終止的POSIX路徑串。也可支持其他格式。在一個實施例中,目的地路徑欄位在"重命名路徑"分組中緊跟著源路徑欄位。"設定FS塊大小"(SetFSBlockSize)分組可用於為目標設備上的文件系統設定塊大小。在一個實施例中,"設定FS塊大小"分組具有根據以下表格的格式。tableseeoriginaldocumentpage27表27:"設定文件系統塊大小"分組塊大小可被客戶端設備文件系統所使用。例如,在64kb塊大小的情況下,當向客戶端設備寫入文件數據時,即使主機設備按更大或更小的塊發送數據,一次也將寫入64kb的數據。在一個實施例中,客戶端設備不保證數據是根據塊大小寫入的,但為了獲得性能可以利用塊大小。"設定套接字塊大小"(SetSocketBlockSize)分組可用於為目標設備和主機設備之間的數據連接設定塊大小。在一個實施例中,"設定套接字塊大小"分組具有根據以下表格的格式。tableseeoriginaldocumentpage27表28:"設定套接字塊大小"分組塊大小可被客戶端系統用於經由主機設備和客戶端設備之間的連接讀取和寫入數據。例如,在64kb塊大小的情況下,當從連接讀取數據時,客戶端設備可以嘗試以64kb塊的形式讀取數據。在一個實施例中,客戶端設備不保證數據是根據塊大小來處理的,但為了獲得性能可以利用塊大小。"文件Ref鎖定"(FileRefLock)分組可用於將打開文件索引標識符鎖定以免被第二應用所使用。在一個實施例中,"文件Ref鎖定"分組具有根據以下表格的格式。tableseeoriginaldocumentpage28表29:"文件Ref鎖定"分組可以阻止對文件索引的訪問,以使得在給定的時刻,只有一個應用具有對打開的文件的訪問權限。在一個實施例中,支持共享鎖定、獨家鎖定和非阻止鎖定。在替代實施例中,支持另外和/或不同的鎖定。在一個實施例中,鎖定只是諮詢性的,應用必須査詢文件以判定該文件是否被鎖定。在一個實施例中,多個應用/進程可獲得共享鎖定。以上描述的消息和格式可用於支持完全文件通信協議。在以下示例中,分組的子集可用於說明協議的使用。也可支持許多其他操作。圖6是用於將數據傳送到客戶端設備的技術的一個實施例的流程圖。在圖6的示例中,主機設備可以判定客戶端設備是否已連接到主機設備(610)。如上所述,主機設備和客戶端設備之間的連接可以是有線的或無線的。主機設備可以利用任何適當的技術來檢測客戶端設備的存在性。例如,如果客戶端設備經由有線連接與主機設備相連接,則主機設備可被配置為檢測客戶端設備與有線接口的物理連接。如果客戶端設備經由無線連接與主機設備相連接,則主機設備可被配置為對配對或其他類型的無線連接過程的完成做出響應。在一個實施例中,如果沒有連接客戶端設備(610),則主機設備可以等待連接客戶端設備。在另一實施例中,主機設備可以僅在經由接口接收到請求的情況下做出響應。例如,有線接口可包括供用戶按壓以發起客戶端設備和主機設備之間的通信的按鈕。又例如,客戶端設備可以具有允許用戶請求與主機設備通信的用戶接口。響應於客戶端設備的連接(610),主機設備可以收集關於客戶端設備的信息(620)。對關於客戶端設備的信息的收集可以通過發送上述分組中的一個或多個來實現。例如,主機設備可以發送"獲得設備信息"分組和/或"讀取目錄"分組。客戶端設備可以通過將所請求的信息提供給主機設備來對(這一個或多個)分組做出響應。在從客戶端設備收集到足夠的信息後,主機設備可以判定客戶端設備是否是新設備(630)。§卩,主機設備可以判定客戶端設備以前是否曾連接到主機設備。如果客戶端設備是新設備,則主機設備可以執行註冊過程(635)。註冊過程可以允許主機設備保存關於客戶端設備的信息,該信息可用於例如認證、加速連接和/或備份目的。主機設備可以認證客戶端設備(640)。認證可通過例如在主機設備和客戶端設備之間交換密鑰或其他標識符來實現。也可使用其他認證技術。在一個實施例中,認證是利用存在於主機設備和客戶端設備上的對應同步服務來執行的。在認證之後,主機設備可利用這裡描述的分組來將數據傳送到客戶端設備(650)。例如,為了向客戶端設備添加新文件(例如,在客戶端設備上加載新的媒體文件),主機設備可以使用"寫入文件"分組來使得數據被寫入到客戶端設備上的文件中。在單個會話中可以使用任意數目的數據傳送分組。圖7是用於在主機設備和客戶端設備之間同步數據的技術的一個實施例的流程圖。圖7的示例僅利用了以上論述的分組類型的子集。然而,圖7的示例代表了利用這裡闡述的協議和消息可在主機設備和客戶端設備之間發生的會話。在以下示例中,"->"表明相應分組是從主機設備發送到客戶端設備的,"<-"表明相應分組是從客戶端設備發送到主機設備的。分組類型首先被列出,然後分組中的一個或多個欄位被列出並帶有示例值,其中""表明在圖7的示例中沒有示出另外的欄位。分組的數據部分(如果有的話)由"Data=..."來指示。首先給出分組的列表,然後在分組列表之後提供對會話的說明。->GetDeviceInfo<-Data<Model=ABC123,FilesystemSize=1234,FileRefOpen<-FileRefOpenResult->FileRefRead<-DataFileRefClose<-StatusMakeDirectory<-Status->GetFileInfo<-Data<Data=FileRefOpen<-FileRefOpenResultFileRefWrite<FileRef=831,Data=<...》<-StatusFileRefWrite<FileRef=831,Data=<".<-Status->FileRefClose〈FileRef831〉<-Status->FileRefOpen<-FileRefOpenResultFileRefWrite<FileRef=831,Data=<...<-Status<Status=SUCCESS〉-〉FileRefWrite<FileRef=831,Data=<...<-Status->FileRefClose<-Status在圖7的示例中,主機設備可以判定客戶端設備是否已經連接到主機設備(710)。如上所述,主機設備和客戶端設備之間的連接可以是有線的或者無線的。主機設備可以利用任何適當的技術來檢測客戶端設備的存在性。例如,如果客戶端設備經由有線連接與主機設備相連接,則主機設備可被配置為檢測客戶端設備與有線接口的物理連接。如果客戶端設備經由無線連接與主機設備相連接,則主機設備可被配置為對配對或其他類型的無線連接過程的完成做出響應。在一個實施例中,如果沒有連接客戶端設備(710),則主機設備可以等待連接客戶端設備。在另一實施例中,主機設備可以僅在經由接口接收到請求的情況下做出響應。例如,有線接口可包括供用戶按壓以發起客戶端設備和主機設備之間的通信的按鈕。又例如,客戶端設備可以具有允許用戶請求與主機設備通信的用戶接口。響應於客戶端設備的連接(710),主機設備可以收集關於客戶端設備的信息(720)。對關於客戶端設備的信息的收集可以通過從主機設備向客戶端設備發送"獲得設備信息"分組以及從客戶端設備向主機設備發送"數據"分組來實現。如上所述,主機設備可通過這種方式獲取關於客戶端設備的任何類型的信息。在圖7的示例中,客戶端設備至少向主機設備提供型號標識符和文件系統大小。也可提供另外和/或不同的數據。可選地,在從客戶端設備收集到足夠的信息後,主機設備可以判定客戶端設備是否是新設備(730)。如果客戶端設備是新設備,則主機設備可以執行可選的註冊過程(735)。主機設備可以認證客戶端設備(740)。認證可通過例如在主機設備和客戶端設備之間交換密鑰或其他標識符來實現。也可使用其他認證技術。在一個實施例中,認證是利用存在於主機設備和客戶端設備上的對應同步服務來執行的。在認證之後,主機設備可以開始主機設備和客戶端設備之間的數據同步。客戶端設備可以請求與客戶端設備上的路徑相對應的文件Ref值並且讀取該路徑中的數據(750)。這可通過利用例如以上列出的"文件Ref打開"、"文件Ref打開結果"、"文件Ref讀取"、"數據"分組來實現。如果所請求的目錄不存在,則可以創建該目錄(750)。當已獲取所請求的數據時,可以關閉文件Ref。這可通過使用以上列出的"文件Ref關閉"和"狀態"分組來實現。"製作目錄"分組可用於判定是否存在目標路徑。例如,利用以上列出的分組,具有目標"/media"的"製作目錄"分組可用於判定是否存在"media"目錄。如果存在"media"目錄,則來自客戶端設備的該"狀態"分組可以利用"PATH—EXISTS"狀態來表明"media"目錄的存在。可以為要更新的第一文件(例如,7media/filel.mp3')請求文件信息。"獲得文件信息"分組可用於請求與要更新的第一文件有關的信息(770)。客戶端設備可以使用"數據"分組來返回與要更新的第一文件有關的數據。主機設備隨後可請求在更新第一文件時使用的文件Ref值。這可利用"文件Ref打開"分組來實現,來自客戶端設備的響應則在"文件Ref打開結果"分組中。主機設備可以使用文件Ref值來將數據寫入到客戶端設備上的文件(775)。這可利用"文件Ref寫入"分組來實現,來自客戶端設備的確認則由"狀態"分組攜帶。當對文件的寫入完成時,主機設備可以使用"文件Ref關閉"分組來釋放文件Ref,這可由來自客戶端設備的"狀態"分組加以確認。"製作目錄"分組可用於判定是否存在用於要更新的第二文件的目標路徑。例如,利用以上列出的分組,具有目標"'/media/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應當支持成幀,或者某種成幀協議應當被添加,例如COBS(恆定開銷字節填充)或PPP/SLIP風格的成幀。多個獨立連接可被同時用於不同目的(例如,諸如媒體文件之類的文件可被傳送,同時諸如地址簿中的聯絡人之類的結構化用同時運行,但這種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(例如,iTunes)(或者與文件傳送軟體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)。通常,一方的每個客戶端應用被配置為與另一方的相應對應物維持連接。例如,同步軟體835被配置為與同步軟體805維持連接,以便在設備之間交換數據(例如,結構化數據或窗口小部件等等)。同步軟體835和同步軟體805的示例在2007年1月7日提交的題為"SynchronizationMethodsandSystems"的美國專利申請No.11/650,730中提供,該申請通過引用被併入在此。媒體軟體831(其可以是媒體播放器,例如iTunes)被配置為與文件傳送軟體807(其可以是設備上的媒體播放器,例如iTimes)維持連接。文件傳送軟體在某些實施例中還可以被配置為與文^H專送軟體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還可包括其他類型的數據(例如,字處理文件等等)或者甚至包括可執行程序,例如窗口小部f^與設置信息和電子郵件或電話帳戶信息有關的數據,等等。應當明白,設備方的各種客戶端應用與包含數據813的存儲設備通信以便訪問數據。例如,文件傳送軟體807可以讀取或寫入數據813以便傳送文件。應當理解,主機設備803也包括數據存儲介質,例如快閃記憶體或硬碟驅動器或易失性存儲器設備(例如,DRAM),或者其他存儲介質,用於存儲供主t幾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中,主機上的應用(例如主機上的iTmies)在該應用的套接字上向主機上的接口TCP軟體發送數據。例如,在主機803的情況下,媒體軟體831通過為該應用打開的套接字向接口TCP軟體841發送數據。在操作1103中,主機上的接口TCP軟體接收該數據並且創建類TCP分組,在該分組內具有類TCP頭部和該數據中的至少一些,並且主機上的接口TCP軟體通過非網絡接口(例如USB接口或圖8所示的接口847)來發送該分組。在操作1105中,設備上的接口TCP軟體從分組中提取數據並且將該數據(有時稱為"有效載荷")發送到由分組中的埠指定的套接字上。在圖8的示例中,接口TCP軟體821提取通過接口823接收的數據並且將該數據發送到套接字上,這將使得數據被提供到TCP/IP軟體棧815。在操作1107中,設備上的TCP/IP棧,例如TCP/IP軟體棧815,獲得來自設備上的接口TCP軟體的數據,並且創建帶有IP和TCP頭部的分組。此情況下的IP位址可以是TCP/IP棧的環回地址。例如,TCP/IP軟體棧815可包括環回接口(未示出),例如圖B所示的環回接口。分組將從該環回接口返回,並且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提供了用於在兩個設備之間交換文件的方法的示例。在此情況下,數據通常不是諸如聯絡信息等等之類的被同步的結構化數據。更確切地說,數據構成整個文件。在操作1501中,數據以分組的形式與類TCP頭部一起通過諸如接口823或接口847之類的接口被傳送。在操作1503中,這些分組通過另一系統上的另一接口被接收,並且數據被從多個分組中提取出來以準備重新組裝文件。然後,在操作1505中,重建文件。這可以在文件的所有數據已被接收到之後發生或者可以在數據被接收的同時發生。如果在文件傳送期間連接丟失,貝'J存儲差錯消息和/或狀態消息以表明文件未被成功傳送,以便其可在設備被重新連接時被傳送。文件可以在文件的所有數據已被接收到之後被加以核實或者可在其被接收的同時被部分核實。核實可以是可選的操作,例如操作1507,並且可以通過使用傳統的校驗和操作或散列操作來執行。圖15的方法中使用的分組可以包括作為文件傳送協議的一部分的信息。例如,分組可以包括對具有預定分組格式的分組類型和與該分組類型相關聯的分組功能的指示。分組功能可以指定文件傳送協議軟體的操作。在發生連接斷開的情況下的差錯消息或狀態消息可以至少包括在連接被中斷之前僅部分傳送的文件的標識符,以便在重新建立連接時可傳送該文件。以下是對圖8-13、圖14B和圖15所示的一個或多個實施例的實現方式的描述;此實現方式允許設備和主機經由USB通信。該實現方式可被稱為設備通信協議,該協議可用來允許諸如文件傳送軟體807(例如,用於iTunes媒體同步)和結構化數據同步(例如,同步軟體805)之類的多個服務同時與設備通信,而無需另外的USB端點。此實現方式中的通信協議是作為廠商特定接口實現的。廠商特定接口利用兩個端點,即大塊輸入(BulkInput)端點和大塊輸出(BulkOutput)端點。雖然該協議並不完全是典型的TCP,但它確實使用了類似TCP的機制來進行流控制、連接建立/終止和復用。根據此設備通信協議的接口是通過找到這樣一個接口來識別的-設備的廠商ID為Apple(0x05AC)-接口類為廠商特定(255)-接口子類為254-接口協議為2接口#1-廠商特定替代設定0端點數目2接口類255(廠商特定)接口子類254(廠商特定)接口協議2端點0x85-大塊輸入地址0x85(輸入)屬性0x02(大塊無同步數據端點)最大分組大小512查詢間隔0(端點永不NAK)端點0x04-大塊輸出地址0x04(輸出)屬性0x02(大塊無同步數據端點)最大分組大小512查詢間隔0(端點永不NAK)1)消息頭部所有數據都是以消息的形式發送的。每個消息開始於以下頭部。所有頭部都是按網絡字節順序的。AppleUSBMobileDeviceMessageHeader+.......+.......+-------+.......+-------+.....—+-------+.......+I類型(32比特)I長度(32比特)I+-------+-------+-------+-------+-------+……—+-------+-------+存在兩個定義的消息類型O-版本消息6-TCP消息長度欄位用於驗證接收到的USB數據報是正確大小的。長度包括消息頭部的大小。USB以分組的形式發送數據。對於大塊USB端點,最大分組大小由速度決定。只要你保持發送標準大小的分組,數據就被認為是幀的一部分。為了結束幀,應當發送小於最大分組大小的分組。如果幀將正常地正好結束於兩個標準大小分組的邊界上(幀大小%最大分組大小為0),則可以發送零長度分組來表示幀的結束。頭部中的長度欄位應當匹42配所接收的幀的大小。如果它不匹配,則幀應當被丟棄。應當記錄差錯來追蹤故障。在大多數情況下,後續的幀也會出問題,因而也必須被丟棄。這些差錯不應當發生。將利用TCP消息來檢測丟失,並且將放棄該TCP連接。2)版本消息版本消息是在開始時交換的,用於協商要使用的協議的版本。當設備出現時,它應當等待版本消息。主機負責發送第一條版本消息。版本消息具有以下格式+-------+-------+.......+—……+-------+_......+-------+-------+i0i此消息的大小i+-------+-------+-------+.......+-------+-------+-------+-------+I版本(32比特)I特徵G2比特)I+-------+-------+-------+.......+-------+-------+-------+-------+l應當為零(32比特)I+-------+.......+.......+.......+版本主機-〉設備-請求的版本設備-〉主機-支持的版本特徵主機->設備表明期望特徵的比特欄位。設備->主機表明將使用的特徵的比特欄位。對於此實現方式,主機應當將"版本"設定為1。特徵應當為零,因為目前沒有支持的特徵。將來,可以添加諸如校驗和之類的特徵,而不會衝擊版本。此外,可以利用特徵欄位來實現校驗和,而無需定義全新的版本。特徵欄位是基於版本來解釋的。版本1的"特徵"欄位中的各種比特可具有與版本2中的"特徵"不同的含義。主機可以通過設定"特徵"欄位中的相應比特來請求特徵。設備應當以所支持的版本來做出響應。設備可以僅支持一個版本,或者它可支持多個版本。如果設備支持主機所請求的版本,則設備應當以該版本來做出響應。如果設備僅支持一不同的版本,則設備應當以它支持的版本來做出響應。如果設備以所請求的版本做出響應,則設備應當將特徵比特欄位設定為所請求的比特,其中掩蔽掉任何不支持的特徵。如果響應版本不與所請求的版本匹配,則"特徵"欄位應當為零。如果設備以指示出主機不理解的版本的版本消息來做出響應,則主機可能需要更新的軟體來與設備通信。如果設備以與主機支持的所請求版本不同的版本來做出響應,則主機可以發送另一版本消息,其帶有新協商的版本,並且在"特徵"欄位中設定了比特以請求特定的特徵。設備應當準備好處理多個版本消息。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。45當主機或設備有更多緩衝器空間可用時,它可以發送帶有更新的窗口的TCPACK分組,以表明另一方可發送更多數據。本說明書中提及"一個實施例"或"實施例"指的是聯繫該實施例描述的特定的特徵、結構或特性被包括在本發明的至少個實施例中。在本說明書中各處出現的短語"在一個實施例中"並不一定都指同一實施例。在以上說明書中,已經參考其具體實施例描述了本發明。然而,很明顯,在不脫離本發明的更寬精神和範圍的情況下,可以對其進行各種修改和變化。因此,說明書和附圖應當被看作說明性的而非限制性的。權利要求1.一種計算機可讀介質,包含使得數據處理系統執行一種方法的可執行程序指令,該方法包括對數據流進行分組化以產生帶有頭部的分組;通過接口將所述分組發送到另一設備,其中所述接口未被設計來使用網際網路協議(IP)地址,所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。2.如權利要求1所述的介質,其中,所述接口的標準協議不使用IP位址,並且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。3.如權利要求2所述的介質,其中,所述分組包括遵從傳輸控制協議(TCP)的頭部,並且不包括遵從IP的頭部。4.如權利要求3所述的介質,其中,所述流控制是逐應用地提供的,並且所述任意數目能夠隨時間而動態變化。5.如權利要求3所述的介質,其中,所述遵從TCP的頭部與不是IP網絡的一部分的套接字相關聯。6.如權利要求5所述的介質,其中,所述分組化是在所述數據流已被分組化並被封裝以TCP/IP頭部之後並且在所述TCP/IP頭部已被去除以提供所述數據流之後執行的,在所述TCP/IP頭部中,IP頭部指定環回地址。7.如權利要求6所述的介質,其中,所述分組化是由TCP/IP棧軟體組件執行的,並且所述數據流被操作性地耦合到用於通過IP協議連接到網際網路的接口的TCP/IP棧軟體組件分組化並封裝以TCP/IP頭部。8.—種機器實現的方法,包括對數據流進行分組化以產生帶有頭部的分組;通過接口將所述分組發送到另一設備,其中所述接口未被設計來使用網際網路協議(IP)地址,所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。9.如權利要求8所述的方法,其中,所述接口的標準協議不使用IP位址,並且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。10.如權利要求9所述的方法,其中,所述分組包括遵從傳輸控制協議(TCP)的頭部,並且不包括遵從IP的頭部。11.如權利要求IO所述的方法,其中,所述流控制是逐應用地提供的,並且所述任意數目能夠隨時間而動態變化。12.如權利要求10所述的方法,其中,所述遵從TCP的頭部與不是IP網絡的一部分的套接字相關聯。13.如權利要求12所述的方法,其中,所述分組化是在所述數據流已被分組化並被封裝以TCP/IP頭部之後並且在所述TCP/IP頭部已被去除以提供所述數據流之後執行的,在所述TCP/IP頭部中,IP頭部指定環回地址。14.如權利要求13所述的方法,其中,所述分組化是由TCP/IP棧軟體組件執行的,並且所述數據流被操作性地耦合到用於通過IP協議連接到網際網路的接口的TCP/IP棧軟體組件分組化並封裝以TCP/IP頭部。15.—種數據處理系統,包括用於對數據流進行分組化以產生帶有頭部的分組的裝置;用於通過接口將所述分組發送到另一設備的裝置,其中所述接口未被設計來使用網際網路協議(IP)地址,所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。16.—種計算機可讀介質,包含要在數據處理系統上執行的可執行程序指令,該介質包括第一網絡棧軟體,用於創建分組以便通過設備上的第一接口發送並且用於從通過所述第一接口接收的分組中提取數據;第二網絡棧軟體,用於創建分組以便通過所述設備上的第二接口發送並且從通過所述第二接口接收的分組中提取數據,所述第二網絡棧軟體被配置為與所述第一網絡棧軟體通信,其中所述第二接口被配置為耦合到另一系統上的第三接口,所述第二網絡桟軟體被配置為通過所述第一網絡棧軟體來發送從通過所述第二接口接收的分組中提取的數據,並且所述第二網絡棧軟體被配置為利用設計用於所述第二接口的協議來發送和接收分組。17.如權利要求16所述的介質,其中,所述第二網絡棧軟體被配置為通過所述第一網絡棧軟體把從通過所述第二接口接收的分組中提取的數據發送到多個接收方軟體應用,這多個接收方軟體應用被允許通過所述第二接口維持多18.如權利要求16所述的介質,其中,所述第一網絡棧軟體和所述第二網絡棧軟體被配置為允許所述設備上的多個應用通過所述第二接口維持多個並發會話。19.如權利要求18所述的介質,其中,所述第一接口被設計為耦合到網際網路並且所述第二接口未被設計來使用網際網路協議(IP)地址,並且所述第一網絡棧軟體包括TCP/IP棧並且所述第二網絡棧軟體包括不創建IP頭部的遵從TCP的棧。20.如權利要求19所述的介質,其中,所述第二網絡棧軟體被配置為從通過所述第二接口接收的分組中提取數據並且通過所述第一網絡棧軟體將該數據發送到所述設備上的所述多個應用之一。21.如權利要求20所述的介質,其中,所述第二接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種,並且所述第二接口和所述第三接口使用相同的不使用IP位址的協議。22.如權利要求21所述的介質,其中,由所述第二網絡棧軟體創建的頭部包括用於流控制和定序的數據以及接收方應用的埠標識符。23.如權利要求22所述的介質,其中,由所述第二網絡棧軟體從分組中提取的數據被提供給所述第一網絡棧軟體,所述第一網絡棧軟體向該數據添加TCP/IP頭部以創建另外的分組,然後從所述另外的分組中去除所述TCP/IP頭部,然後將該數據提供給所述接收方應用。24.如權利要求23所述的介質,其中,所述TCP/IP頭部包括與環回接口相對應的IP位址,該環回接口與所述第一網絡棧軟體操作性地耦合。25.—種計算機可讀介質,包含要在數據處理系統上執行的可執行程序指令,該介質包括第一網絡棧軟體,用於創建分組以便通過設備上的第一接口發送並且用於從通過所述第一接口接收的分組中提取數據;第二網絡棧軟體,用於創建分組以便通過所述設備上的第二接口發送並且從通過所述第二接口接收的分組中提取數據,所述第二網絡棧軟體被配置為與所述第一網絡棧軟體通信,其中所述第二接口被配置為耦合到另一系統上的第三接口,所述第二網絡棧軟體被配置為創建包含從所述第一網絡棧軟體接收的數據的分組並且被配置為通過所述第二接口來發送包含從所述第一網絡棧軟體接收的數據的分組,並且所述第二網絡棧軟體被配置為利用設計用於所述第二接口的協議來發送和接收分組。26.如權利要求25所述的介質,其中,所述第一網絡棧軟體和所述第二網絡棧軟體被配置為允許所述設備上的多個應用通過所述第二接口維持多個並發會話。27.如權利要求26所述的介質,其中,所述第一接口被設計為耦合到網際網路並且所述第二接口未被設計來使用網際網路協議(IP)地址,並且所述第一網絡棧軟體包括TCP/IP棧並且所述第二網絡棧軟體包括不創建IP頭部的遵從TCP的棧。28.如權利要求27所述的介質,其中,所述第二接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種,並且所述第二接口和所述第三接口使用相同的不使用IP位址的協議。29.如權利要求28所述的介質,其中,由所述第二網絡棧軟體創建的頭部包括用於流控制和定序的數據以及接收方應用的埠標識符。30.如權利要求29所述的介質,其中,從所述第一網絡棧軟體接收的數據在被遞送到所述第二網絡棧軟體之前曾被用TCP/IP頭部來分組化並被去分組化。31.如權利要求30所述的介質,其中,所述TCP/IP頭部包括與環回接口相對應的IP位址,該環回接口與所述第一網絡棧軟體操作性地耦合。32.—種計算機可讀介質,包含使得數據處理系統執行一種方法的可執行程序指令,該方法包括在第一網絡棧軟體處接收帶有頭部的分組,所述分組是通過接口接收的;從所述分組中提取數據,其中所述提取是由所述第一網絡棧軟體執行的,所述接口未被設計來使用網際網路協議(IP)地址,並且所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。33.如權利要求32所述的介質,其中,所述接口的標準協議不使用IP位址,並且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。34.如權利要求33所述的介質,其中,所述分組包括遵從傳輸控制協議(TCP)的頭部,並且不包括遵從IP的頭部。35.如權利要求34所述的介質,其中,所述流控制是逐應用地提供的。36.如權利要求35所述的介質,其中,所述遵從TCP的頭部與不是IP網絡的一部分的套接字相關聯。37.如權利要求36所述的介質,其中,所述方法還包括創建另外的分組來包含從所述分組中提取的數據,所述另外的分組包括TCP/IP頭部,其中IP頭部指定環回地址;從所述另外的分組中提取數據,並且將從所述另外的分組中提取的數據提供給接收方應用。38.如權利要求37所述的介質,其中,創建所述另外的分組和從所述另外的分組中提取數據是由TCP/IP棧軟體執行的,該TCP/IP棧軟體操作性地耦合到用於通過IP協議連接到網際網路的接口。39.—種機器實現的方法,包括在第一網絡棧軟體處接收帶有頭部的分組,所述分組是通過接口接收的;從所述分組中提取數據,其中所述提取是由所述第一網絡棧軟體執行的,所述接口未被設計來使用網際網路協議(IP)地址,並且所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。-40.如權利要求39所述的方法,其中,所述接口的標準協議不使用IP位址,並且所述接口是遵從通用串行總線(USB)的有線串行接口或遵從BLUETOOTH的無線接口中的一種。41.如權利要求40所述的方法,其中,所述分組包括遵從傳輸控制協議(TCP)的頭部,並且不包括遵從IP的頭部。42.如權利要求41所述的方法,其中,所述流控制是逐應用地提供的。43.如權利要求42所述的方法,其中,所述遵從TCP的頭部與不是IP網絡的一部分的套接字相關聯。44.如權利要求43所述的方法,其中,所述方法還包括創建另外的分組來包含從所述分組中提取的數據,所述另外的分組包括TCP/IP頭部,其中IP頭部指定環回地址;從所述另外的分組中提取數據,並且將從所述另外的分組中提取的數據提供給接收方應用。45.如權利要求44所述的方法,其中,創建所述另外的分組和從所述另外的分組中提取數據是由TCP/IP棧軟體執行的,該TCP/IP棧軟體操作性地耦合到用於通過IP協議連接到網際網路的接口。46.—種數據處理系統,包括用於在第一網絡棧軟體處接收帶有頭部的分組的裝置,所述分組是通過接口接收的;用於從所述分組中提取數據的裝置,其中所述提取是由所述第一網絡棧軟體執行的,所述接口未被設計來使用網際網路協議(IP)地址,並且所述頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且所述頭部允許多個應用通過所述接口維持任意數目的多個並發會話。全文摘要描述了復用式數據流協議。在一個實施例中,一種用於提供復用式數據流協議的方法包括對數據流進行分組化以提供帶有頭部的分組,並且通過未被設計來使用網際網路協議(IP)地址的接口發送分組。頭部包含用於流控制和定序的數據並且與用於應用的埠相關聯,並且頭部允許多個應用通過該接口維持任意且可變數目的多個並發會話。頭部可以是類似傳輸控制協議(TCP)的頭部並且可以不包括類IP頭部。還描述了系統、計算機可讀介質、軟體體系結構和其他方法。文檔編號H04L29/06GK101682635SQ200880019308公開日2010年3月24日申請日期2008年5月8日優先權日2007年6月8日發明者保羅·欽,柯蒂斯·C·加洛韋,約書亞·維韋斯特·格雷斯勒,約翰·安德魯·賴特申請人:蘋果公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀