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