欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)處理方法和系統(tǒng)與流程

文檔序號(hào):11964635閱讀:214來源:國(guó)知局
數(shù)據(jù)處理方法和系統(tǒng)與流程
數(shù)據(jù)處理方法和系統(tǒng)本申請(qǐng)是申請(qǐng)日為2008年5月8日申請(qǐng)?zhí)枮?00880019308.3(國(guó)際申請(qǐng)?zhí)枺篜CT/US2008/005946)發(fā)明名稱為“復(fù)用式數(shù)據(jù)流協(xié)議”的發(fā)明專利申請(qǐng)的分案申請(qǐng)。技術(shù)領(lǐng)域本發(fā)明的實(shí)施例涉及在設(shè)備之間傳輸數(shù)據(jù)。更具體而言,本發(fā)明的實(shí)施例涉及用于在一個(gè)或多個(gè)主機(jī)電子設(shè)備和一斷續(xù)連接的客戶端設(shè)備之間高效傳輸數(shù)據(jù)的技術(shù)。

背景技術(shù):
隨著移動(dòng)設(shè)備(例如,移動(dòng)電話、數(shù)字音樂播放器、數(shù)字個(gè)人助理)的普及度增大,單個(gè)移動(dòng)設(shè)備提供的功能已經(jīng)增加了。與這種功能的增加相關(guān)聯(lián)的是這樣一種動(dòng)機(jī),即,提供同步服務(wù),以便例如反映出在移動(dòng)設(shè)備或者主機(jī)設(shè)備上對(duì)數(shù)據(jù)做出的改變。另外,可能需要在兩個(gè)設(shè)備之間交換包括一個(gè)或多個(gè)文件在內(nèi)的數(shù)據(jù)。例如,在兩個(gè)設(shè)備之間可交換音樂或視頻文件。已經(jīng)開發(fā)出各種技術(shù)來在移動(dòng)設(shè)備和主機(jī)設(shè)備之間同步數(shù)據(jù)和/或交換數(shù)據(jù)。當(dāng)前的技術(shù)通?;蛘呤强赡苄枰恍┎槐匾_銷的基于全功能文件系統(tǒng)的技術(shù),或者可能是提供有限功能的專用技術(shù)。這些技術(shù)使用現(xiàn)有的接口,例如USB。設(shè)備之間的現(xiàn)有接口,例如每個(gè)設(shè)備上的USB接口,難以允許設(shè)備附接到USB(通用串行總線)接口或端口并隨后任意且突然地從USB接口移除/斷開,尤其在設(shè)備是存儲(chǔ)設(shè)備的情況下更是如此。另外,USB未被設(shè)計(jì)來在USB的標(biāo)準(zhǔn)通信協(xié)議中支持因特網(wǎng)協(xié)議(IP)地址;USB并不被認(rèn)為是網(wǎng)絡(luò)接口。USB也未被設(shè)計(jì)來為試圖通過USB接口發(fā)送數(shù)據(jù)或等待接收數(shù)據(jù)的獨(dú)立應(yīng)用支持任意數(shù)目(實(shí)際上是無限數(shù)目)的多個(gè)并發(fā)獨(dú)立會(huì)話,并且對(duì)于至少某些系統(tǒng),在USB接口上支持的接口或會(huì)話的數(shù)目是靜態(tài)的并且不能隨時(shí)間而改變。對(duì)于至少某些系統(tǒng),USB接口可以支持多個(gè)并發(fā)“接口”,這多個(gè)并發(fā)“接口”可被認(rèn)為是多個(gè)會(huì)話,但其數(shù)目是固定的,并且對(duì)于一個(gè)設(shè)備,接口是靜態(tài)的(并且不能改變)。另一方面,USB是常見且有用的接口,從而經(jīng)常會(huì)希望使用這種接口來連接兩個(gè)系統(tǒng),例如主機(jī)和客戶端設(shè)備。

技術(shù)實(shí)現(xiàn)要素:
這里描述了復(fù)用式數(shù)據(jù)流協(xié)議。在一個(gè)實(shí)施例中,一種用于提供復(fù)用式數(shù)據(jù)流協(xié)議的方法包括:對(duì)數(shù)據(jù)流進(jìn)行分組化以提供帶有頭部的分組,并且通過接口將這些分組發(fā)送到另一設(shè)備,該接口未被設(shè)計(jì)來使用因特網(wǎng)協(xié)議(IP)地址(或其他網(wǎng)絡(luò)地址),例如是USB接口。該方法還可包括在網(wǎng)絡(luò)棧軟件處接收帶有頭部的分組并從分組中提取數(shù)據(jù),其中分組是通過該接口接收的。頭部可包含用于數(shù)據(jù)的定序和流控制的數(shù)據(jù),并且可包含分組中的數(shù)據(jù)(有效載荷)的源和目的地(例如分別是發(fā)送方應(yīng)用和接收方應(yīng)用)的標(biāo)識(shí)符。通過使用一種在頭部中使用此數(shù)據(jù)的類TCP(TCP-like)協(xié)議,頭部允許了多個(gè)獨(dú)立應(yīng)用通過該接口維持多個(gè)并發(fā)會(huì)話。頭部可以是類似傳輸控制協(xié)議(TCP)的頭部,并且可以不包括類IP頭部。該接口(例如USB接口)的標(biāo)準(zhǔn)協(xié)議在至少某些實(shí)施例中不使用IP地址。該方法可逐應(yīng)用地提供流控制。類TCP頭部可用于實(shí)現(xiàn)一種類TCP協(xié)議,用于流控制、定序、復(fù)用、連接建立/終止、確認(rèn)以及可選的差錯(cuò)校驗(yàn)(例如,校驗(yàn)和)和可選的重發(fā)。此方法允許了接口(例如USB接口)對(duì)突然的且時(shí)間任意的(例如,意外的)連接斷開得體地做出響應(yīng)。例如,如果設(shè)備是帶有無線蜂窩電話的手持式計(jì)算機(jī)并通過其USB接口連接到主機(jī)設(shè)備(其可以是桌面型或膝上型計(jì)算機(jī)或其他數(shù)據(jù)處理系統(tǒng))的USB接口,并且如果設(shè)備和主機(jī)正在交換數(shù)據(jù)(例如,傳送MP3文件或其他文件或者交換數(shù)據(jù)以同步兩個(gè)系統(tǒng)或在一個(gè)系統(tǒng)上備份另一個(gè)系統(tǒng))并且如果在兩個(gè)系統(tǒng)相連接并且通過其USB接口交換數(shù)據(jù)的同時(shí)接收到無線蜂窩電話,則該方法允許突然斷開連接,以便允許用戶應(yīng)答該電話呼叫。該方法可包括使用一個(gè)或多個(gè)傳統(tǒng)的套接字API(應(yīng)用程序接口),這種套接字API允許了不同軟件模塊之間的進(jìn)程間/應(yīng)用間通信。該方法還可包括傳統(tǒng)的TCP/IP棧軟件組件,該TCP/IP棧軟件組件通過設(shè)備和/或主機(jī)上的傳統(tǒng)網(wǎng)絡(luò)連接(例如WiFi或以太網(wǎng)連接/接口或蜂窩電話連接)來處理分組并且還處理分組以便通過非網(wǎng)絡(luò)接口發(fā)送。該TCP/IP棧軟件在至少某些實(shí)施例中可以通過套接字API與接口TCP軟件組件通信,接口TCP軟件組件創(chuàng)建類TCP頭部,用于通過非網(wǎng)絡(luò)接口(例如USB接口)發(fā)送。在一個(gè)實(shí)施例中,一種計(jì)算機(jī)可讀介質(zhì)包括:第二網(wǎng)絡(luò)棧軟件,用于創(chuàng)建分組以便通過設(shè)備上的第二接口(例如USB接口)發(fā)送并且從通過第二接口接收的分組中提取數(shù)據(jù);以及第一網(wǎng)絡(luò)棧軟件,用于創(chuàng)建分組以便通過設(shè)備上的第一接口(例如WiFi或以太網(wǎng)接口或無線蜂窩電話接口)發(fā)送并且從通過第一接口接收的分組中提取數(shù)據(jù)。第一網(wǎng)絡(luò)棧軟件可以是TCP/IP棧,其被配置為與第二網(wǎng)絡(luò)棧軟件通信,第二網(wǎng)絡(luò)棧軟件可以是接口TCP軟件棧,該接口TCP軟件棧創(chuàng)建類TCP分組并且使得這些類TCP分組通過非網(wǎng)絡(luò)接口(例如第二接口)被發(fā)送。第二網(wǎng)絡(luò)棧軟件可被配置為通過第一網(wǎng)絡(luò)棧軟件來把從通過第二接口接收的分組中提取的數(shù)據(jù)發(fā)送到多個(gè)接收方軟件應(yīng)用,這多個(gè)接收方軟件應(yīng)用被允許通過第二接口維持多個(gè)并發(fā)會(huì)話。第一接口被設(shè)計(jì)為耦合到因特網(wǎng),而第二接口未被設(shè)計(jì)來使用因特網(wǎng)協(xié)議(IP)地址,并且第一網(wǎng)絡(luò)棧軟件包括TCP/IP棧,而第二網(wǎng)絡(luò)棧軟件包括不創(chuàng)建IP頭部的類TCP棧。第二網(wǎng)絡(luò)棧軟件被配置為從通過第二接口接收的分組中提取數(shù)據(jù)并且通過第一網(wǎng)絡(luò)棧軟件將該數(shù)據(jù)發(fā)送到設(shè)備上的多個(gè)應(yīng)用之一。由第二網(wǎng)絡(luò)棧軟件創(chuàng)建的頭部可包括用于流控制和定序的數(shù)據(jù)以及接收方(例如“目的地”)應(yīng)用和發(fā)送方(例如“源”)應(yīng)用的端口標(biāo)識(shí)符。由第二網(wǎng)絡(luò)棧軟件從分組中提取的數(shù)據(jù)可以被提供給第一網(wǎng)絡(luò)棧軟件,第一網(wǎng)絡(luò)棧軟件向該數(shù)據(jù)的至少一部分添加TCP/IP頭部以創(chuàng)建另外的分組,然后第一網(wǎng)絡(luò)棧軟件從這些另外的分組中去除TCIP/IP頭部,并隨后將數(shù)據(jù)提供給接收方應(yīng)用。TCP/IP頭部可包括與環(huán)回接口(loopbackinterface)相對(duì)應(yīng)的IP地址,該環(huán)回接口與第一網(wǎng)絡(luò)棧軟件操作性地耦合。本說明書還描述了設(shè)備、系統(tǒng)、計(jì)算機(jī)可讀介質(zhì)、軟件體系結(jié)構(gòu)和其他方法。在另一實(shí)施例中,設(shè)備之間(例如主機(jī)和設(shè)備之間)的通信鏈路是遵從通用串行總線(USB)的有線或無線接口。在另一實(shí)施例中,設(shè)備之間的通信鏈路是遵從BLUETOOTH的無線接口。在另一實(shí)施例中,通信鏈路是不為網(wǎng)絡(luò)接口的接口。在一個(gè)實(shí)施例中,客戶端設(shè)備是智能電話。在另一實(shí)施例中,客戶端設(shè)備是媒體回放設(shè)備。在一個(gè)實(shí)施例中,主機(jī)設(shè)備是桌面型計(jì)算機(jī)系統(tǒng)。在另一實(shí)施例中,主機(jī)設(shè)備是膝上型計(jì)算機(jī)系統(tǒng)。在另一實(shí)施例中,主機(jī)設(shè)備是掌上型或超便攜型計(jì)算機(jī)系統(tǒng)。附圖說明在附圖中以示例方式而非限制方式示出了本發(fā)明,在附圖中相似的標(biāo)號(hào)指代類似的要素。圖1是可利用這里描述的技術(shù)通信的主機(jī)電子設(shè)備和客戶端電子設(shè)備的框圖。圖2是諸如主機(jī)設(shè)備之類的數(shù)據(jù)處理系統(tǒng)的一個(gè)實(shí)施例的框圖。圖3是諸如客戶端設(shè)備、手持式計(jì)算機(jī)或其他類型的數(shù)據(jù)處理系統(tǒng)之類的數(shù)據(jù)處理系統(tǒng)的一個(gè)實(shí)施例的框圖。圖4是可用于主機(jī)電子設(shè)備和客戶端電子設(shè)備之間的通信中的分組頭部的表格。圖5是可用于主機(jī)電子設(shè)備和客戶端電子設(shè)備之間的通信中的分組類型的表格。圖6是用于將數(shù)據(jù)傳送到客戶端設(shè)備的技術(shù)的一個(gè)實(shí)施例的流程圖。圖7是用于在主機(jī)設(shè)備和客戶端設(shè)備之間同步數(shù)據(jù)的技術(shù)的一個(gè)實(shí)施例的流程圖。圖8示出了用于連接被稱為主機(jī)和設(shè)備的兩個(gè)數(shù)據(jù)處理系統(tǒng)的軟件體系結(jié)構(gòu)的示例。圖9是示出根據(jù)本發(fā)明一個(gè)實(shí)施例用于在兩個(gè)系統(tǒng)之間交換數(shù)據(jù)的方法的示例的流程圖;該數(shù)據(jù)可以是文件(例如,MP3文件、視頻文件、圖片等等)或者結(jié)構(gòu)化數(shù)據(jù)(例如地址簿中的聯(lián)絡(luò)信息,或者書簽/收藏夾,或者日歷數(shù)據(jù),或者注釋,或者待做事項(xiàng),等等)或者其他類型的數(shù)據(jù)(例如,諸如窗口小部件之類的可執(zhí)行軟件,等等)。圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的初始化方法的流程圖。圖11是示出根據(jù)本發(fā)明一個(gè)實(shí)施例用于將數(shù)據(jù)從主機(jī)傳送到設(shè)備的方法的示例的流程圖。圖12是示出根據(jù)本發(fā)明一個(gè)實(shí)施例用于將數(shù)據(jù)從設(shè)備傳送到主機(jī)的方法的示例的流程圖。圖13示出了主機(jī)系統(tǒng)的替代軟件體系結(jié)構(gòu)的示例。圖14A示出了通過兩個(gè)USB接口使用圖片傳送協(xié)議(PTP)進(jìn)行的連接的現(xiàn)有技術(shù)示例。圖14B示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的連接的示例。圖15是示出根據(jù)一個(gè)實(shí)施例用于在系統(tǒng)之間交換文件的方法的示例的流程圖。具體實(shí)施方式在以下描述中,闡述了許多具體細(xì)節(jié)。然而,沒有這些具體細(xì)節(jié)也可實(shí)現(xiàn)本發(fā)明的實(shí)施例。在其他情況下,沒有詳細(xì)示出公知的電路、結(jié)構(gòu)和技術(shù),以避免使這里的描述難以理解。這里描述的是用于在端點(diǎn)之間傳送文件和其他數(shù)據(jù)的協(xié)議。在一個(gè)實(shí)施例中,端點(diǎn)是主機(jī)電子設(shè)備和客戶端電子設(shè)備。主機(jī)電子設(shè)備例如可以是桌面型計(jì)算機(jī)系統(tǒng)或膝上型計(jì)算機(jī)系統(tǒng)??蛻舳穗娮釉O(shè)備例如可以是膝上型計(jì)算機(jī)系統(tǒng)、個(gè)人數(shù)字助理、具備蜂窩電話能力的設(shè)備(例如,蜂窩電話或智能電話)。在一個(gè)實(shí)施例中,端點(diǎn)之間的連接利用了可靠的流傳輸,例如傳輸控制協(xié)議(TCP)流連接。也可支持其他流連接。在一個(gè)實(shí)施例中,通信是利用具有頭部和主體的分組來實(shí)現(xiàn)的。這里在一個(gè)實(shí)施例中描述了標(biāo)準(zhǔn)的最低限度頭部,但頭部也可包含另外的特定于分組的結(jié)構(gòu)化數(shù)據(jù)。分組數(shù)據(jù)可包括非結(jié)構(gòu)化數(shù)據(jù),或者可以是空的。圖1是可利用這里描述的技術(shù)通信的主機(jī)電子設(shè)備和客戶端電子設(shè)備的框圖。圖1的框圖提供了可用于在主機(jī)設(shè)備100和客戶端設(shè)備150之間通信的組件的概念性圖示。在一個(gè)示例中,主機(jī)設(shè)備100是計(jì)算機(jī)系統(tǒng)(例如,桌面型或膝上型計(jì)算機(jī)系統(tǒng)),客戶端設(shè)備150是移動(dòng)設(shè)備(例如,PDA或智能電話)。主機(jī)設(shè)備100和客戶端設(shè)備150可以經(jīng)由現(xiàn)有技術(shù)已知的任何類型的通信技術(shù)來通信。例如,通信鏈路145可以是物理線纜(例如,遵從通用串行總線的線纜),或者無線通信鏈路IEEE802.11)。是BluetoothSIG公司擁有的注冊(cè)商標(biāo)。應(yīng)用110可以是可被主機(jī)設(shè)備100執(zhí)行的任何類型的應(yīng)用。例如,應(yīng)用110可以是可從加利福尼亞州庫珀蒂諾的Apple公司獲得的iTunes。應(yīng)用110可包括可被傳輸?shù)娇蛻舳嗽O(shè)備150和/或與客戶端設(shè)備150同步的功能和/或數(shù)據(jù)。例如,應(yīng)用110可存儲(chǔ)和/或播放可被存儲(chǔ)在客戶端設(shè)備150上或者由客戶端設(shè)備150播放的多媒體內(nèi)容。當(dāng)客戶端設(shè)備150與主機(jī)設(shè)備100通信時(shí),應(yīng)用110可以使得內(nèi)容被在主機(jī)設(shè)備100和客戶端設(shè)備150之間傳送。也可支持其他類型的應(yīng)用。關(guān)守(gatekeeper)客戶端115與應(yīng)用110交互,以控制應(yīng)用110對(duì)通信鏈路145的訪問。關(guān)守客戶端115可以基于一個(gè)或多個(gè)參數(shù)來選擇性地限制對(duì)通信鏈路145的訪問。關(guān)守客戶端115例如可在允許主機(jī)設(shè)備100和客戶端設(shè)備150之間的通信之前執(zhí)行認(rèn)證和/或核實(shí)操作。關(guān)守客戶端115還可選擇多個(gè)通信鏈路之一來用于主機(jī)設(shè)備100和客戶端設(shè)備150之間的通信。雖然圖1的示例是在有關(guān)守功能的情況下描述的,但是在沒有關(guān)守功能的情況下可提供替代實(shí)施例。關(guān)于關(guān)守客戶端115和關(guān)守180的更多信息在2007年6月22日提交的美國(guó)專利申請(qǐng)No.11/767,447(代理人案卷號(hào)18962-113001/P5408US1)中提供,該申請(qǐng)通過引用被并入在此。關(guān)守客戶端115可與鏈路驅(qū)動(dòng)器130通信以經(jīng)由鏈路接口140訪問通信鏈路145。在一個(gè)實(shí)施例中,鏈路驅(qū)動(dòng)器130與結(jié)構(gòu)化同步服務(wù)120交互,以在主機(jī)設(shè)備100和客戶端設(shè)備150之間提供同步功能。在一個(gè)實(shí)施例中,結(jié)構(gòu)化同步服務(wù)120可以利用下文中更詳細(xì)描述的命令和協(xié)議來工作。鏈路驅(qū)動(dòng)器130可以使得鏈路接口140使表示數(shù)據(jù)的信號(hào)(例如,電信號(hào)、射頻信號(hào)、紅外信號(hào)、光信號(hào))通過通信鏈路145傳輸。在客戶端設(shè)備150內(nèi),鏈路接口160是鏈路接口140的對(duì)應(yīng)物。鏈路接口160可以經(jīng)由通信鏈路145發(fā)送和/或接收信號(hào)(例如,電信號(hào)、射頻信號(hào)、紅外信號(hào)、光信號(hào))??蛻舳嗽O(shè)備150還包括關(guān)守180,關(guān)守180可在允許主機(jī)設(shè)備100上的應(yīng)用110和客戶端設(shè)備150上的媒體同步服務(wù)190之間的通信之前執(zhí)行認(rèn)證、核實(shí)和/或其他授權(quán)功能。在一個(gè)實(shí)施例中,媒體同步服務(wù)190可支持下文中更詳細(xì)描述的消息和協(xié)議,以允許對(duì)數(shù)據(jù)195的訪問(例如,讀取、寫入、修改、更新)。數(shù)據(jù)195表示存儲(chǔ)在客戶端設(shè)備150上的任何類型的數(shù)據(jù)。數(shù)據(jù)195可以是一個(gè)或多個(gè)數(shù)據(jù)庫、表格和/或其他存儲(chǔ)單元。數(shù)據(jù)195例如可以是媒體文件(例如,音頻和/或視頻數(shù)據(jù)文件)、元數(shù)據(jù)、聯(lián)絡(luò)信息、歷史信息(例如,呼叫記錄、軟件版本信息)和/或狀態(tài)信息(例如,電池容量、序列號(hào)、總存儲(chǔ)器、可用存儲(chǔ)器)??蛻舳嗽O(shè)備150還可包括結(jié)構(gòu)化數(shù)據(jù)服務(wù)185,結(jié)構(gòu)化數(shù)據(jù)服務(wù)185可維護(hù)客戶端設(shè)備150上的數(shù)據(jù)??衫媒Y(jié)構(gòu)化同步服務(wù)120和結(jié)構(gòu)化數(shù)據(jù)服務(wù)185來同步和/或維護(hù)的數(shù)據(jù)的示例可包括書簽、聯(lián)絡(luò)信息、日歷信息等等。結(jié)構(gòu)化同步服務(wù)120可以與同步軟件805(在圖8中)相同或相似,結(jié)構(gòu)化同步服務(wù)185可以與同步軟件835(在圖8中)相同或相似。在一個(gè)實(shí)施例中,主機(jī)設(shè)備100和客戶端設(shè)備150之間為了允許應(yīng)用110訪問數(shù)據(jù)190而進(jìn)行的通信可利用下文中更詳細(xì)描述的特定數(shù)據(jù)分組格式通過結(jié)構(gòu)化同步服務(wù)120和媒體同步服務(wù)190來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,通信鏈路145可以是主機(jī)設(shè)備100和客戶端設(shè)備150之間遵從通用串行總線(USB)的有線通信鏈路。在一個(gè)實(shí)施例中,主機(jī)設(shè)備100和客戶端設(shè)備150之間的連接利用了遵從USB的物理連接上的TCP流連接來傳輸下文中描述的分組。圖2是諸如主機(jī)設(shè)備之類的數(shù)據(jù)處理系統(tǒng)的一個(gè)實(shí)施例的框圖。注意,雖然圖2示出了計(jì)算機(jī)系統(tǒng)的各種組件,但其并不意圖表示互連這些組件的任何特定體系結(jié)構(gòu)或方式,因?yàn)檫@種細(xì)節(jié)與本發(fā)明并沒有密切關(guān)系。還應(yīng)當(dāng)明白,個(gè)人數(shù)字助理(PDA)、蜂窩電話、媒體播放器(例如,iPod)、組合這些設(shè)備的多個(gè)方面或功能的設(shè)備(組合在一個(gè)設(shè)備中的媒體播放器與PDA和蜂窩電話)、網(wǎng)絡(luò)計(jì)算機(jī)、嵌入在另外的設(shè)備內(nèi)的處理設(shè)備、以及其他具有更少組件或者可能更多組件的數(shù)據(jù)處理系統(tǒng)也可用于實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,并且可以是這里描述的數(shù)據(jù)處理系統(tǒng)中的一個(gè)或多個(gè)。圖2所示的計(jì)算機(jī)系統(tǒng)例如可以是來自Apple公司的Macintosh計(jì)算機(jī)或者來自Microsoft公司的運(yùn)行Windows操作軟件的計(jì)算機(jī)。計(jì)算機(jī)系統(tǒng)200包括總線205,總線205耦合到形成處理系統(tǒng)210的一個(gè)或多個(gè)微處理器。總線205還耦合到存儲(chǔ)器220和非易失性存儲(chǔ)器230,非易失性存儲(chǔ)器230在某些實(shí)施例中可以是磁性硬盤驅(qū)動(dòng)器,或者在其他實(shí)施例中可以是閃存??偩€205還耦合到顯示控制器和顯示器240以及一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備250。另外,總線205可耦合到可選的擴(kuò)展塢260并且耦合到一個(gè)或多個(gè)無線收發(fā)機(jī)270,無線收發(fā)機(jī)270可以是遵從的收發(fā)機(jī)或者遵從WiFi的收發(fā)機(jī)或者紅外收發(fā)機(jī)。無線收發(fā)機(jī)270如圖2所示是可選的。處理系統(tǒng)210還可以可選地耦合到緩存215。處理系統(tǒng)210可包括一個(gè)或多個(gè)微處理器,例如來自Intel或IBM的微處理器??偩€205以現(xiàn)有技術(shù)中已知的方式將這各種組件互連在一起。通常,輸入/輸出設(shè)備250通過輸入/輸出控制器耦合到系統(tǒng)。存儲(chǔ)器220可以實(shí)現(xiàn)為動(dòng)態(tài)RAM(DRAM),動(dòng)態(tài)RAM提供對(duì)數(shù)據(jù)的快速訪問,但為了刷新或維護(hù)存儲(chǔ)器220中的數(shù)據(jù)其不斷地需要電力。非易失性存儲(chǔ)器230可以是磁性硬盤驅(qū)動(dòng)器或者其他的即使在系統(tǒng)斷電之后仍保存數(shù)據(jù)的非易失性存儲(chǔ)器。雖然圖2示出了非易失性存儲(chǔ)器230是直接耦合到數(shù)據(jù)處理系統(tǒng)中的其余組件的本地設(shè)備,但應(yīng)當(dāng)明白,其他實(shí)施例可以利用遠(yuǎn)離系統(tǒng)的非易失性存儲(chǔ)器,例如網(wǎng)絡(luò)存儲(chǔ)設(shè)備,其通過網(wǎng)絡(luò)接口(例如調(diào)制解調(diào)器或以太網(wǎng)接口)耦合到數(shù)據(jù)處理系統(tǒng)。正如現(xiàn)有技術(shù)中公知的,總線205可包括通過各種橋接器、控制器和/或適配器相互連接的一條或多條總線,這是現(xiàn)有技術(shù)中已知的。在一個(gè)實(shí)施例中,I/O控制器250可包括用于控制遵從USB的外圍設(shè)備的遵從USB的適配器,以及用于遵從IEEE-1394的外圍設(shè)備的IEEE-1394控制器。這里描述的本發(fā)明的一些方面至少部分可用軟件實(shí)現(xiàn)。即,這些技術(shù)可以在計(jì)算機(jī)系統(tǒng)或其他數(shù)據(jù)處理系統(tǒng)中響應(yīng)于其處理器或處理系統(tǒng)執(zhí)行存儲(chǔ)器(例如,存儲(chǔ)器220、非易失性存儲(chǔ)器230或圖3所示的存儲(chǔ)器330)中包含的指令序列而實(shí)現(xiàn)。在各種實(shí)施例中,硬件電路可與軟件指令結(jié)合使用以實(shí)現(xiàn)本發(fā)明。從而,這些技術(shù)并不限于硬件電路和軟件的任何特定組合或者數(shù)據(jù)處理系統(tǒng)所執(zhí)行的指令的任何特定來源。此外,在這里的描述的各處,各種功能和操作被描述為由軟件代碼執(zhí)行或者由軟件代碼引起,以便簡(jiǎn)化描述。然而,這種表述的含義是這些功能是由于處理系統(tǒng)執(zhí)行代碼而得到的。擴(kuò)展塢260和/或無線收發(fā)機(jī)270提供了物理接口,用于將圖2所示的數(shù)據(jù)處理系統(tǒng)耦合到另外的數(shù)據(jù)處理系統(tǒng),例如圖3所示的數(shù)據(jù)處理系統(tǒng),或者耦合到與圖2所示的系統(tǒng)類似的另外的數(shù)據(jù)處理系統(tǒng)。擴(kuò)展塢260可提供一個(gè)數(shù)據(jù)處理系統(tǒng)和另一數(shù)據(jù)處理系統(tǒng)之間的機(jī)械和電氣連接,以允許在兩個(gè)系統(tǒng)之間執(zhí)行同步處理。在其他實(shí)施例中,無線收發(fā)機(jī)270可提供兩個(gè)系統(tǒng)之間的射頻(RF)連接,以便在無需在兩個(gè)系統(tǒng)之間提供機(jī)械連接的情況下進(jìn)行同步處理。圖3是諸如客戶端設(shè)備、手持式計(jì)算機(jī)或其他類型的數(shù)據(jù)處理系統(tǒng)(例如圖2所示的系統(tǒng)或者與圖3所示類似的系統(tǒng))之類的數(shù)據(jù)處理系統(tǒng)的一個(gè)實(shí)施例的框圖。數(shù)據(jù)處理系統(tǒng)300包括處理系統(tǒng)310,處理系統(tǒng)310可以是一個(gè)或多個(gè)微處理器,或者可以是片上系統(tǒng)集成電路。系統(tǒng)300還包括用于存儲(chǔ)數(shù)據(jù)和供處理系統(tǒng)310執(zhí)行的程序的存儲(chǔ)器330。系統(tǒng)300還包括音頻輸入/輸出子系統(tǒng)340,音頻輸入/輸出子系統(tǒng)340可包括麥克風(fēng)和揚(yáng)聲器,用于例如通過揚(yáng)聲器和麥克風(fēng)回放音樂或提供電話功能。顯示控制器和顯示設(shè)備350為用戶提供可視用戶接口;該數(shù)字接口可包括與運(yùn)行OSX操作系統(tǒng)軟件時(shí)在Macintosh計(jì)算機(jī)上所示類似的圖形用戶接口。系統(tǒng)300還包括一個(gè)或多個(gè)無線收發(fā)機(jī),例如WiFi收發(fā)機(jī)、紅外收發(fā)機(jī)、遵從的收發(fā)機(jī)和/或無線蜂窩電話收發(fā)機(jī)。未示出的其他組件在某些實(shí)施例中也可作為系統(tǒng)300的一部分,并且在某些實(shí)施例中,在數(shù)據(jù)處理系統(tǒng)中可使用比圖3所示要少的組件。數(shù)據(jù)處理系統(tǒng)300還包括一個(gè)或多個(gè)輸入設(shè)備360,設(shè)置這些輸入設(shè)備360是為了允許用戶向系統(tǒng)300提供輸入。這些輸入設(shè)備可以是小鍵盤或者鍵盤或者觸摸面板或者多點(diǎn)觸控面板(multi-touchpanel)。數(shù)據(jù)處理系統(tǒng)300還包括可選的輸入/輸出設(shè)備370,輸入/輸出設(shè)備370可以是擴(kuò)展塢(例如圖2所示的擴(kuò)展塢260)的連接器。一條或多條總線(未示出)可用于互連各種組件,這是現(xiàn)有技術(shù)中已知的。數(shù)據(jù)處理系統(tǒng)300可以是手持式計(jì)算機(jī)或個(gè)人數(shù)字助理(PDA),或者具有類似PDA的功能的蜂窩電話,或者包括蜂窩電話的手持式計(jì)算機(jī),或者媒體播放器(例如iPod),或者組合這些設(shè)備的多個(gè)方面或功能的設(shè)備,例如組合在一個(gè)設(shè)備中的媒體播放器與PDA和蜂窩電話。在其他實(shí)施例中,數(shù)據(jù)處理系統(tǒng)300可以是網(wǎng)絡(luò)計(jì)算機(jī)或者嵌入在另外的設(shè)備內(nèi)的處理設(shè)備,或者具有比圖3所示更少的組件或者可能更多的組件的其他類型的數(shù)據(jù)處理系統(tǒng)。這里描述的本發(fā)明的至少某些實(shí)施例可以是諸如便攜式音樂和/或視頻媒體播放器之類的數(shù)字媒體播放器的一部分,該數(shù)字媒體播放器可包括用于呈送媒體的媒體處理系統(tǒng)、用于存儲(chǔ)媒體的存儲(chǔ)設(shè)備,并且還可包括與天線系統(tǒng)和媒體處理系統(tǒng)相耦合的射頻(RF)收發(fā)機(jī)(例如,用于蜂窩電話的RF收發(fā)機(jī))。在某些實(shí)施例中,存儲(chǔ)在遠(yuǎn)程存儲(chǔ)設(shè)備上的媒體可通過RF收發(fā)機(jī)被傳輸?shù)矫襟w播放器。媒體例如可以是音樂或其他音頻、靜止圖片或運(yùn)動(dòng)圖片中的一種或多種。便攜式媒體播放器可包括媒體選擇設(shè)備,例如來自加利福尼亞州庫珀蒂諾的Apple公司的或輸入設(shè)備、觸摸屏輸入設(shè)備、按鈕設(shè)備、可移動(dòng)點(diǎn)選輸入設(shè)備或其他輸入設(shè)備。媒體選擇設(shè)備可用于對(duì)存儲(chǔ)在存儲(chǔ)設(shè)備和/或遠(yuǎn)程存儲(chǔ)設(shè)備上的媒體進(jìn)行選擇。在至少某些實(shí)施例中,便攜式媒體播放器可包括顯示設(shè)備,該顯示設(shè)備耦合到媒體處理系統(tǒng),用于顯示通過輸入設(shè)備選擇并且通過揚(yáng)聲器或(一個(gè)或多個(gè))耳機(jī)或在顯示設(shè)備上或者既在顯示設(shè)備上又在揚(yáng)聲器或(一個(gè)或多個(gè))耳機(jī)上呈送的媒體的標(biāo)題或其他指示符。便攜式媒體播放器的示例在已公布的美國(guó)專利申請(qǐng)No.2003/0095096和2004/00224638中有所記載,這兩者都通過引用并入在此。在某些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)300可以以類似于具有平板狀輸入設(shè)備的手持式計(jì)算機(jī)的小外形參數(shù)來實(shí)現(xiàn),該輸入設(shè)備可以是與液晶顯示器相集成的多點(diǎn)觸控輸入面板設(shè)備。這種設(shè)備的示例在2006年10月24日提交的題為“AUTOMATEDRESPONSETOANDSENSINGOFUSERACTIVITYINPORTABLEDEVICES”的美國(guó)專利申請(qǐng)No.11/586,862中提供,該申請(qǐng)被轉(zhuǎn)讓給了與本申請(qǐng)相同的受讓人。特此通過引用將上述申請(qǐng)并入在此。在以下描述中,描述了用于同步和非同步處理操作的各種軟件組件。應(yīng)當(dāng)理解,在至少某些實(shí)施例中,對(duì)于一種類型的數(shù)據(jù)處理系統(tǒng),這各種軟件組件可被存儲(chǔ)在圖2所示的存儲(chǔ)器220和/或存儲(chǔ)器230中,并且在例如圖3所示的系統(tǒng)的情況下,這各種不同的軟件組件可被存儲(chǔ)在存儲(chǔ)器330中,存儲(chǔ)器330可包括易失性存儲(chǔ)器以及非易失性存儲(chǔ)器,例如閃存或磁性硬盤驅(qū)動(dòng)器。在伴隨著設(shè)備之間的適當(dāng)互連,利用其各自的示例性實(shí)施例描述了主機(jī)設(shè)備和客戶端設(shè)備之后,現(xiàn)在描述示例性的分組格式、分組類型、功能和數(shù)據(jù)流。與以上描述一樣,以下描述提供了通信協(xié)議的示例性實(shí)施例。也可支持對(duì)這種協(xié)議的變化。圖4中的表格示出了分組頭部格式的一個(gè)實(shí)施例。也可使用其他格式。雖然描述了特定的大小和長(zhǎng)度,但是也可支持其他字段名稱、長(zhǎng)度和/或描述。在一個(gè)實(shí)施例中,分組數(shù)據(jù)可以以小端(little-endian)或大端(big-endian)格式通過連接發(fā)送。在一個(gè)實(shí)施例中,任一設(shè)備可以以任一格式發(fā)送數(shù)據(jù)。接收方設(shè)備在必要時(shí)可負(fù)責(zé)交換數(shù)據(jù)順序。在一個(gè)實(shí)施例中,每個(gè)分組必須使用一致的字節(jié)順序(endianness)。在一個(gè)實(shí)施例中,預(yù)定的(例如,固定的)簽名值(例如,0x4141504c36414643)可用于所有分組頭部。簽名可允許接收方設(shè)備確定從發(fā)送方設(shè)備發(fā)送來的數(shù)據(jù)的字節(jié)順序。在一個(gè)實(shí)施例中,簽名字段的長(zhǎng)度是8字節(jié);然而,也可支持其他簽名字段大小。分組頭部還可包括表明包括頭部在內(nèi)的整個(gè)分組的長(zhǎng)度的字段。在一個(gè)實(shí)施例中,分組長(zhǎng)度字段可以是8個(gè)字節(jié);然而,也可支持其他分組長(zhǎng)度字段大小,例如支持不同的最大分組大小。分組頭部還可包括表明分組序列號(hào)的字段。分組序列號(hào)可用于對(duì)在主機(jī)設(shè)備100和客戶端設(shè)備150之間傳輸?shù)姆纸M排序。在一個(gè)實(shí)施例中,分組序列號(hào)字段可以是8個(gè)字節(jié);然而,也可支持其他分組序列號(hào)字段大小。分組頭部還包括用于分組類型的字段。分組類型字段包括分組中的消息的類型的數(shù)值指示符,這表明了分組的功能。分組類型和分組類型值的一個(gè)示例性列表在圖5中提供。也可支持其他分組標(biāo)簽、其他分組功能和/或其他分組類型值。在一個(gè)實(shí)施例中,分組類型字段可以是8個(gè)字節(jié);然而,也可支持其他分組類型字段大小。圖5中的表格示出可用于在端點(diǎn)之間通信的一組分組的一個(gè)實(shí)施例。也可使用其他和/或不同的分組。雖然描述了特定的分組類型標(biāo)識(shí)符和分組名稱,但也可支持其他分組類型標(biāo)識(shí)符、分組名稱和/或描述。圖5中列出的分組的各種實(shí)施例在下文中更詳細(xì)描述。這些分組描述只是提供了可以提供的一個(gè)實(shí)施例的示例。在一個(gè)實(shí)施例中,每個(gè)分組包括標(biāo)準(zhǔn)分組頭部。該頭部可以具有如圖4所示的格式?!盃顟B(tài)”(Status)分組可用于響應(yīng)于請(qǐng)求分組而提供狀態(tài)信息。狀態(tài)分組還可用于在故障或其他差錯(cuò)狀況的情況下提供差錯(cuò)信息。在一個(gè)實(shí)施例中,狀態(tài)分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)狀態(tài)8表示所請(qǐng)求操作的狀態(tài)的狀態(tài)代碼。表3:“狀態(tài)”分組“數(shù)據(jù)”(Data)分組可用于在主機(jī)電子設(shè)備和客戶端電子設(shè)備之間攜帶數(shù)據(jù)。在一個(gè)實(shí)施例中,數(shù)據(jù)分組可以具有任何大小。即,數(shù)據(jù)分組可以是頭部加上要傳輸?shù)臄?shù)據(jù)的長(zhǎng)度。在替代實(shí)施例中,數(shù)據(jù)分組可以是固定長(zhǎng)度的,從而如果要傳輸?shù)臄?shù)據(jù)超過了數(shù)據(jù)分組的有效載荷容量,則可利用一個(gè)或多個(gè)另外的數(shù)據(jù)分組。在一個(gè)實(shí)施例中,數(shù)據(jù)分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)數(shù)據(jù)可變所請(qǐng)求的數(shù)據(jù)/要傳輸?shù)臄?shù)據(jù)。表4:“數(shù)據(jù)”分組“讀取目錄”(ReadDirectory)分組可用于讀取目標(biāo)設(shè)備上的目錄。在一個(gè)實(shí)施例中,“讀取目錄”分組具有根據(jù)以下表格的格式。路徑串可以是具有針對(duì)目標(biāo)設(shè)備的適當(dāng)格式的路徑串。例如,對(duì)于UTF-8格式的UNIX(POSIX)路徑串,路徑串可以是以NULL終止的便攜式操作系統(tǒng)接口。也可支持其他格式。POSIX標(biāo)準(zhǔn)家族被正式稱為IEEEStd.1003,并且國(guó)際標(biāo)準(zhǔn)名稱是ISO/IEC9945。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。表5:“讀取目錄”分組“讀取文件”(ReadFile)分組可用于讀取目標(biāo)設(shè)備上的完整文件。在一個(gè)實(shí)施例中,結(jié)果在“狀態(tài)”分組或“數(shù)據(jù)”分組中提供。在一個(gè)實(shí)施例中,“讀取文件”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)偏移量8從文件開始到所請(qǐng)求數(shù)據(jù)的偏移量。長(zhǎng)度8要從文件中讀取的數(shù)據(jù)的長(zhǎng)度。路徑可變適當(dāng)格式的路徑串。表6:“讀取文件”分組“寫入文件”(WriteFile)分組可用于向目標(biāo)設(shè)備寫入完整文件。在一個(gè)實(shí)施例中,“寫入文件”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。數(shù)據(jù)可變要寫入到文件的數(shù)據(jù)。表7:“寫入文件”分組“寫入部分”(WritePart)分組可用于向目標(biāo)設(shè)備上的文件的一部分寫入數(shù)據(jù)?!皩懭氩糠帧狈纸M可以是無狀態(tài)的,因?yàn)楫?dāng)來自分組的數(shù)據(jù)被寫入時(shí),與該數(shù)據(jù)和/或文件相關(guān)聯(lián)的狀態(tài)數(shù)據(jù)未被維持。在一個(gè)實(shí)施例中,“寫入部分”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)偏移量8從文件開始到寫入開始的偏移量。路徑可變適當(dāng)格式的路徑串。數(shù)據(jù)可變要寫入到文件的數(shù)據(jù)。表8:“寫入部分”分組“截?cái)啵ń兀┪募保═runcate(Trunc)File)分組可用于設(shè)定文件的長(zhǎng)度。長(zhǎng)度可以短于相應(yīng)的數(shù)據(jù),在此情況下一些數(shù)據(jù)被丟棄,或者長(zhǎng)度可以長(zhǎng)于相應(yīng)的數(shù)據(jù),在此情況下超出部分可用預(yù)定的數(shù)據(jù)樣式(例如全“0”)來填充。在一個(gè)實(shí)施例中,“截文件”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)長(zhǎng)度8文件長(zhǎng)度。路徑可變適當(dāng)格式的路徑串。表9:“截文件”分組“去除路徑”(RemovePath)分組可用于刪除目標(biāo)設(shè)備上的文件或目錄。在一個(gè)實(shí)施例中,“去除路徑”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。表10:“去除路徑”分組“制作目錄”(MakeDirectory)分組可用于在目標(biāo)設(shè)備上創(chuàng)建目錄。在一個(gè)實(shí)施例中,“去除路徑”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。表11:“制作目錄”分組“獲得文件信息”(GetFileInfo)分組可用于檢索描述目標(biāo)設(shè)備上文件的信息。在一個(gè)實(shí)施例中,文件信息是以在“數(shù)據(jù)”分組中傳輸?shù)囊粋€(gè)或多個(gè)鍵/值對(duì)的形式來提供的。描述文件的信息例如可以是文件大小、最后修改日期、許可權(quán)限。也可提供另外和/或不同的文件信息。在一個(gè)實(shí)施例中,“獲得文件信息”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。表12:“獲得文件信息”分組“獲得設(shè)備信息”(GetDeviceInfo)分組可用于檢索描述目標(biāo)設(shè)備的信息。在一個(gè)實(shí)施例中,設(shè)備信息是以在“數(shù)據(jù)”分組中傳輸?shù)囊粋€(gè)或多個(gè)鍵/值對(duì)的形式來提供的。描述設(shè)備的信息例如可以是設(shè)備名稱、序列號(hào)、操作系統(tǒng)版本、電池水平、可用空閑空間。也可提供另外和/或不同的文件信息。在一個(gè)實(shí)施例中,“獲得設(shè)備信息”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)表13:“獲得設(shè)備信息”分組“原子式文件寫入”(WriteFileAtomic)分組可用于在目標(biāo)設(shè)備上寫入文件?!霸邮轿募懭搿狈纸M保證要么整個(gè)文件被寫入,要么該文件全都不被寫入?!霸邮轿募懭搿狈纸M例如可用于寫入數(shù)據(jù)庫文件。在一個(gè)實(shí)施例中,“原子式文件寫入”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)路徑可變適當(dāng)格式的路徑串。表14:“原子式文件寫入”分組“文件索引(Ref)打開”(FileReference(Ref)Open)分組可用于獲得表示目標(biāo)設(shè)備上的打開文件的令牌或其他標(biāo)識(shí)符。在一個(gè)實(shí)施例中,“原子式文件寫入”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)模式路徑8可變打開文件時(shí)使用的模式(參見表16)適當(dāng)格式的路徑串。表15:“文件Ref打開”分組在一個(gè)實(shí)施例中,“模式”字段包括打開文件時(shí)使用的模式的數(shù)值指示符。表16中的“模式名稱”和“模式值”稱呼是用于一個(gè)實(shí)施例的示例??梢灾С忠唤M不同的模式。另外,可以支持不同的模式值。模式名稱模式值只讀1讀-寫2寫-截?cái)?讀-寫-截?cái)?寫-附加5讀-寫-附加6表16:模式在“只讀”模式中,文件可被打開來僅供讀取。在“讀-寫”模式中,文件可被打開來僅供讀取和寫入。在“寫-截?cái)唷蹦J街?,文件可被打開來供寫入或截?cái)?。在“讀-寫-截?cái)唷蹦J街?,文件可被打開來供讀取、寫入或截?cái)?。在“?附加”模式中,文件可被打開來供寫入或附加。在“讀-寫-附加”模式中,文件可被打開來供讀取、寫入或附加?!拔募ef打開結(jié)果”(FileRefOpenResult)分組可用于返回文件索引令牌,該文件索引令牌可在訪問目標(biāo)設(shè)備上的文件時(shí)用于這里描述的分組之中的一個(gè)或多個(gè)中。在一個(gè)實(shí)施例中,“文件Ref打開結(jié)果”分組具有根據(jù)以下表格的格式。表17:“文件Ref打開結(jié)果”分組“文件Ref讀取”(FileRefRead)分組可用于利用由于“文件Ref打開”操作而得到的文件索引來讀取文件。在一個(gè)實(shí)施例中,文件內(nèi)的位置響應(yīng)于“文件Ref讀取”操作而被自動(dòng)推進(jìn)。在一個(gè)實(shí)施例中,“文件Ref讀取”分組具有根據(jù)以下表格的格式。表18:“文件Ref讀取”分組“文件Ref寫入”(FileRefWrite)分組可用于利用由于“文件Ref打開”操作而得到的文件索引來寫入文件。在一個(gè)實(shí)施例中,文件內(nèi)的位置響應(yīng)于“文件Ref寫入”操作而被自動(dòng)推進(jìn)。在一個(gè)實(shí)施例中,“文件Ref寫入”分組具有根據(jù)以下表格的格式。表19:“文件Ref寫入”分組“文件Ref搜尋”(FileRefSeek)分組可用于利用由于“文件Ref打開”操作而得到的文件索引來確定文件內(nèi)的位置。在一個(gè)實(shí)施例中,“文件Ref搜尋”分組具有根據(jù)以下表格的格式。表20:“文件Ref搜尋”分組在一個(gè)實(shí)施例中,“何處”字段中的值可用于表明要如何執(zhí)行搜尋。表21提供了可用于“文件Ref搜尋”分組中的“何處”值的示例。表21:用于“文件Ref搜尋”分組中的“何處”值“文件Ref告知”(FileRefTell)分組可用于利用由于“文件Ref打開”操作而得到的文件索引來確定文件內(nèi)的位置。在一個(gè)實(shí)施例中,“文件Ref告知”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)文件Ref8其位置將被返回的文件索引。表22:“文件Ref告知”分組“文件Ref告知結(jié)果”(FileRefTellResult)分組可用于返回“文件Ref告知”操作的結(jié)果。在一個(gè)實(shí)施例中,“文件Ref告知結(jié)果”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)偏移量8所請(qǐng)求的文件索引的當(dāng)前位置偏移量。表23:“文件Ref告知結(jié)果”分組“文件Ref關(guān)閉”(FileRefClose)分組可用于利用由于“文件Ref打開”操作而得到的文件索引來關(guān)閉文件。在一個(gè)實(shí)施例中,“文件Ref關(guān)閉”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)文件Ref8要關(guān)閉的文件的文件Ref。表24:“文件Ref關(guān)閉”分組“文件Ref設(shè)定大小”(FileRefSetSize)分組可用于設(shè)定與由于“文件Ref打開”操作而得到的索引相對(duì)應(yīng)的文件的大小。在一個(gè)實(shí)施例中,“文件Ref設(shè)定大小”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)文件Ref8要關(guān)閉的文件的文件Ref。文件大小8文件的以字節(jié)為單位的新大小。表25:“文件Ref設(shè)定大小”分組“文件Ref設(shè)定大小分組”可用于設(shè)定文件的長(zhǎng)度。該長(zhǎng)度可短于相應(yīng)的數(shù)據(jù),在此情況下一些數(shù)據(jù)被丟棄,或者該長(zhǎng)度可以長(zhǎng)于相應(yīng)的數(shù)據(jù),在此情況下超出部分可用預(yù)定的數(shù)據(jù)樣式(例如全“0”)來填充?!爸孛窂健保≧enamePath)分組可用于對(duì)目標(biāo)設(shè)備上的目錄路徑重命名。在一個(gè)實(shí)施例中,“重命名路徑”分組具有根據(jù)以下表格的格式。表26:“重命名路徑”分組路徑串可以是具有針對(duì)目標(biāo)設(shè)備的適當(dāng)格式的路徑串。例如,源和目的地路徑串可以是UTF-8格式的以NULL終止的POSIX路徑串。也可支持其他格式。在一個(gè)實(shí)施例中,目的地路徑字段在“重命名路徑”分組中緊跟著源路徑字段?!霸O(shè)定FS塊大小”(SetFSBlockSize)分組可用于為目標(biāo)設(shè)備上的文件系統(tǒng)設(shè)定塊大小。在一個(gè)實(shí)施例中,“設(shè)定FS塊大小”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)塊大小8文件系統(tǒng)操作的塊大小表27:“設(shè)定文件系統(tǒng)塊大小”分組塊大小可被客戶端設(shè)備文件系統(tǒng)所使用。例如,在64kb塊大小的情況下,當(dāng)向客戶端設(shè)備寫入文件數(shù)據(jù)時(shí),即使主機(jī)設(shè)備按更大或更小的塊發(fā)送數(shù)據(jù),一次也將寫入64kb的數(shù)據(jù)。在一個(gè)實(shí)施例中,客戶端設(shè)備不保證數(shù)據(jù)是根據(jù)塊大小寫入的,但為了獲得性能可以利用塊大小。“設(shè)定套接字塊大小”(SetSocketBlockSize)分組可用于為目標(biāo)設(shè)備和主機(jī)設(shè)備之間的數(shù)據(jù)連接設(shè)定塊大小。在一個(gè)實(shí)施例中,“設(shè)定套接字塊大小”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)塊大小8目標(biāo)和主機(jī)之間的通信的塊大小表28:“設(shè)定套接字塊大小”分組塊大小可被客戶端系統(tǒng)用于經(jīng)由主機(jī)設(shè)備和客戶端設(shè)備之間的連接讀取和寫入數(shù)據(jù)。例如,在64kb塊大小的情況下,當(dāng)從連接讀取數(shù)據(jù)時(shí),客戶端設(shè)備可以嘗試以64kb塊的形式讀取數(shù)據(jù)。在一個(gè)實(shí)施例中,客戶端設(shè)備不保證數(shù)據(jù)是根據(jù)塊大小來處理的,但為了獲得性能可以利用塊大小?!拔募ef鎖定”(FileRefLock)分組可用于將打開文件索引標(biāo)識(shí)符鎖定以免被第二應(yīng)用所使用。在一個(gè)實(shí)施例中,“文件Ref鎖定”分組具有根據(jù)以下表格的格式。字段名稱以字節(jié)為單位的長(zhǎng)度描述頭部40標(biāo)準(zhǔn)分組頭部(例如參見圖2)文件Ref8要鎖定的文件的文件Ref。鎖定類型8要應(yīng)用到文件索引標(biāo)識(shí)符的鎖定的類型表29:“文件Ref鎖定”分組可以阻止對(duì)文件索引的訪問,以使得在給定的時(shí)刻,只有一個(gè)應(yīng)用具有對(duì)打開的文件的訪問權(quán)限。在一個(gè)實(shí)施例中,支持共享鎖定、獨(dú)家鎖定和非阻止鎖定。在替代實(shí)施例中,支持另外和/或不同的鎖定。在一個(gè)實(shí)施例中,鎖定只是咨詢性的,應(yīng)用必須查詢文件以判定該文件是否被鎖定。在一個(gè)實(shí)施例中,多個(gè)應(yīng)用/進(jìn)程可獲得共享鎖定。以上描述的消息和格式可用于支持完全文件通信協(xié)議。在以下示例中,分組的子集可用于說明協(xié)議的使用。也可支持許多其他操作。圖6是用于將數(shù)據(jù)傳送到客戶端設(shè)備的技術(shù)的一個(gè)實(shí)施例的流程圖。在圖6的示例中,主機(jī)設(shè)備可以判定客戶端設(shè)備是否已連接到主機(jī)設(shè)備(610)。如上所述,主機(jī)設(shè)備和客戶端設(shè)備之間的連接可以是有線的或無線的。主機(jī)設(shè)備可以利用任何適當(dāng)?shù)募夹g(shù)來檢測(cè)客戶端設(shè)備的存在性。例如,如果客戶端設(shè)備經(jīng)由有線連接與主機(jī)設(shè)備相連接,則主機(jī)設(shè)備可被配置為檢測(cè)客戶端設(shè)備與有線接口的物理連接。如果客戶端設(shè)備經(jīng)由無線連接與主機(jī)設(shè)備相連接,則主機(jī)設(shè)備可被配置為對(duì)配對(duì)或其他類型的無線連接過程的完成做出響應(yīng)。在一個(gè)實(shí)施例中,如果沒有連接客戶端設(shè)備(610),則主機(jī)設(shè)備可以等待連接客戶端設(shè)備。在另一實(shí)施例中,主機(jī)設(shè)備可以僅在經(jīng)由接口接收到請(qǐng)求的情況下做出響應(yīng)。例如,有線接口可包括供用戶按壓以發(fā)起客戶端設(shè)備和主機(jī)設(shè)備之間的通信的按鈕。又例如,客戶端設(shè)備可以具有允許用戶請(qǐng)求與主機(jī)設(shè)備通信的用戶接口。響應(yīng)于客戶端設(shè)備的連接(610),主機(jī)設(shè)備可以收集關(guān)于客戶端設(shè)備的信息(620)。對(duì)關(guān)于客戶端設(shè)備的信息的收集可以通過發(fā)送上述分組中的一個(gè)或多個(gè)來實(shí)現(xiàn)。例如,主機(jī)設(shè)備可以發(fā)送“獲得設(shè)備信息”分組和/或“讀取目錄”分組??蛻舳嗽O(shè)備可以通過將所請(qǐng)求的信息提供給主機(jī)設(shè)備來對(duì)(這一個(gè)或多個(gè))分組做出響應(yīng)。在從客戶端設(shè)備收集到足夠的信息后,主機(jī)設(shè)備可以判定客戶端設(shè)備是否是新設(shè)備(630)。即,主機(jī)設(shè)備可以判定客戶端設(shè)備以前是否曾連接到主機(jī)設(shè)備。如果客戶端設(shè)備是新設(shè)備,則主機(jī)設(shè)備可以執(zhí)行注冊(cè)過程(635)。注冊(cè)過程可以允許主機(jī)設(shè)備保存關(guān)于客戶端設(shè)備的信息,該信息可用于例如認(rèn)證、加速連接和/或備份目的。主機(jī)設(shè)備可以認(rèn)證客戶端設(shè)備(640)。認(rèn)證可通過例如在主機(jī)設(shè)備和客戶端設(shè)備之間交換密鑰或其他標(biāo)識(shí)符來實(shí)現(xiàn)。也可使用其他認(rèn)證技術(shù)。在一個(gè)實(shí)施例中,認(rèn)證是利用存在于主機(jī)設(shè)備和客戶端設(shè)備上的對(duì)應(yīng)同步服務(wù)來執(zhí)行的。在認(rèn)證之后,主機(jī)設(shè)備可利用這里描述的分組來將數(shù)據(jù)傳送到客戶端設(shè)備(650)。例如,為了向客戶端設(shè)備添加新文件(例如,在客戶端設(shè)備上加載新的媒體文件),主機(jī)設(shè)備可以使用“寫入文件”分組來使得數(shù)據(jù)被寫入到客戶端設(shè)備上的文件中。在單個(gè)會(huì)話中可以使用任意數(shù)目的數(shù)據(jù)傳送分組。圖7是用于在主機(jī)設(shè)備和客戶端設(shè)備之間同步數(shù)據(jù)的技術(shù)的一個(gè)實(shí)施例的流程圖。圖7的示例僅利用了以上論述的分組類型的子集。然而,圖7的示例代表了利用這里闡述的協(xié)議和消息可在主機(jī)設(shè)備和客戶端設(shè)備之間發(fā)生的會(huì)話。在以下示例中,“->”表明相應(yīng)分組是從主機(jī)設(shè)備發(fā)送到客戶端設(shè)備的,“<-”表明相應(yīng)分組是從客戶端設(shè)備發(fā)送到主機(jī)設(shè)備的。分組類型首先被列出,然后分組中的一個(gè)或多個(gè)字段被列出并帶有示例值,其中“<…>”表明在圖7的示例中沒有示出另外的字段。分組的數(shù)據(jù)部分(如果有的話)由“Data=…”來指示。首先給出分組的列表,然后在分組列表之后提供對(duì)會(huì)話的說明。->GetDeviceInfo<-Data<Model=ABC123,FilesystemSize=1234,<...>>執(zhí)行可選的注冊(cè)和/或認(rèn)證->FileRefOpen<Path='/DeviceData.xml',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='/media/file1.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>->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的示例中,主機(jī)設(shè)備可以判定客戶端設(shè)備是否已經(jīng)連接到主機(jī)設(shè)備(710)。如上所述,主機(jī)設(shè)備和客戶端設(shè)備之間的連接可以是有線的或者無線的。主機(jī)設(shè)備可以利用任何適當(dāng)?shù)募夹g(shù)來檢測(cè)客戶端設(shè)備的存在性。例如,如果客戶端設(shè)備經(jīng)由有線連接與主機(jī)設(shè)備相連接,則主機(jī)設(shè)備可被配置為檢測(cè)客戶端設(shè)備與有線接口的物理連接。如果客戶端設(shè)備經(jīng)由無線連接與主機(jī)設(shè)備相連接,則主機(jī)設(shè)備可被配置為對(duì)配對(duì)或其他類型的無線連接過程的完成做出響應(yīng)。在一個(gè)實(shí)施例中,如果沒有連接客戶端設(shè)備(710),則主機(jī)設(shè)備可以等待連接客戶端設(shè)備。在另一實(shí)施例中,主機(jī)設(shè)備可以僅在經(jīng)由接口接收到請(qǐng)求的情況下做出響應(yīng)。例如,有線接口可包括供用戶按壓以發(fā)起客戶端設(shè)備和主機(jī)設(shè)備之間的通信的按鈕。又例如,客戶端設(shè)備可以具有允許用戶請(qǐng)求與主機(jī)設(shè)備通信的用戶接口。響應(yīng)于客戶端設(shè)備的連接(710),主機(jī)設(shè)備可以收集關(guān)于客戶端設(shè)備的信息(720)。對(duì)關(guān)于客戶端設(shè)備的信息的收集可以通過從主機(jī)設(shè)備向客戶端設(shè)備發(fā)送“獲得設(shè)備信息”分組以及從客戶端設(shè)備向主機(jī)設(shè)備發(fā)送“數(shù)據(jù)”分組來實(shí)現(xiàn)。如上所述,主機(jī)設(shè)備可通過這種方式獲取關(guān)于客戶端設(shè)備的任何類型的信息。在圖7的示例中,客戶端設(shè)備至少向主機(jī)設(shè)備提供型號(hào)標(biāo)識(shí)符和文件系統(tǒng)大小。也可提供另外和/或不同的數(shù)據(jù)??蛇x地,在從客戶端設(shè)備收集到足夠的信息后,主機(jī)設(shè)備可以判定客戶端設(shè)備是否是新設(shè)備(730)。如果客戶端設(shè)備是新設(shè)備,則主機(jī)設(shè)備可以執(zhí)行可選的注冊(cè)過程(735)。主機(jī)設(shè)備可以認(rèn)證客戶端設(shè)備(740)。認(rèn)證可通過例如在主機(jī)設(shè)備和客戶端設(shè)備之間交換密鑰或其他標(biāo)識(shí)符來實(shí)現(xiàn)。也可使用其他認(rèn)證技術(shù)。在一個(gè)實(shí)施例中,認(rèn)證是利用存在于主機(jī)設(shè)備和客戶端設(shè)備上的對(duì)應(yīng)同步服務(wù)來執(zhí)行的。在認(rèn)證之后,主機(jī)設(shè)備可以開始主機(jī)設(shè)備和客戶端設(shè)備之間的數(shù)據(jù)同步??蛻舳嗽O(shè)備可以請(qǐng)求與客戶端設(shè)備上的路徑相對(duì)應(yīng)的文件Ref值并且讀取該路徑中的數(shù)據(jù)(750)。這可通過利用例如以上列出的“文件Ref打開”、“文件Ref打開結(jié)果”、“文件Ref讀取”、“數(shù)據(jù)”分組來實(shí)現(xiàn)。如果所請(qǐng)求的目錄不存在,則可以創(chuàng)建該目錄(750)。當(dāng)已獲取所請(qǐng)求的數(shù)據(jù)時(shí),可以關(guān)閉文件Ref。這可通過使用以上列出的“文件Ref關(guān)閉”和“狀態(tài)”分組來實(shí)現(xiàn)。“制作目錄”分組可用于判定是否存在目標(biāo)路徑。例如,利用以上列出的分組,具有目標(biāo)“/media”的“制作目錄”分組可用于判定是否存在“media”目錄。如果存在“media”目錄,則來自客戶端設(shè)備的該“狀態(tài)”分組可以利用“PATH_EXISTS”狀態(tài)來表明“media”目錄的存在??梢詾橐碌牡谝晃募ɡ?,'/media/file1.mp3')請(qǐng)求文件信息?!矮@得文件信息”分組可用于請(qǐng)求與要更新的第一文件有關(guān)的信息(770)??蛻舳嗽O(shè)備可以使用“數(shù)據(jù)”分組來返回與要更新的第一文件有關(guān)的數(shù)據(jù)。主機(jī)設(shè)備隨后可請(qǐng)求在更新第一文件時(shí)使用的文件Ref值。這可利用“文件Ref打開”分組來實(shí)現(xiàn),來自客戶端設(shè)備的響應(yīng)則在“文件Ref打開結(jié)果”分組中。主機(jī)設(shè)備可以使用文件Ref值來將數(shù)據(jù)寫入到客戶端設(shè)備上的文件(775)。這可利用“文件Ref寫入”分組來實(shí)現(xiàn),來自客戶端設(shè)備的確認(rèn)則由“狀態(tài)”分組攜帶。當(dāng)對(duì)文件的寫入完成時(shí),主機(jī)設(shè)備可以使用“文件Ref關(guān)閉”分組來釋放文件Ref,這可由來自客戶端設(shè)備的“狀態(tài)”分組加以確認(rèn)?!爸谱髂夸洝狈纸M可用于判定是否存在用于要更新的第二文件的目標(biāo)路徑。例如,利用以上列出的分組,具有目標(biāo)“'/media/file2.mp3'”的“獲得文件信息”分組可用于判定是否存在“file2.mp3”文件并且獲得與該文件有關(guān)的信息(780)。如果例如不存在“file2.mp3”文件,則來自客戶端設(shè)備的“狀態(tài)”分組可返回“PATH_DOES_NOT_EXIST”狀態(tài)。主機(jī)設(shè)備隨后可請(qǐng)求在更新第二文件時(shí)使用的文件Ref值。這可利用“文件Ref打開”分組來實(shí)現(xiàn),來自客戶端設(shè)備的響應(yīng)則在“文件Ref打開結(jié)果”分組中。主機(jī)設(shè)備可以使用文件Ref值來將數(shù)據(jù)寫入到客戶端設(shè)備上的文件(785)。這可利用“文件Ref寫入”分組來實(shí)現(xiàn),來自客戶端設(shè)備的確認(rèn)則由“狀態(tài)”分組攜帶。當(dāng)對(duì)文件的寫入完成時(shí),主機(jī)設(shè)備可以使用“文件Ref關(guān)閉”分組來釋放文件Ref,這可由來自客戶端設(shè)備的“狀態(tài)”分組加以確認(rèn)。以類似的方式可以更新任意數(shù)目的文件。如果同步未完成(790),則可以如上所述地更新另外的文件。如果同步完成(790),則可以終止同步會(huì)話。本公開的另一方面涉及復(fù)用式數(shù)據(jù)流協(xié)議。這種協(xié)議的使用使得設(shè)備上的多個(gè)應(yīng)用(或者同一應(yīng)用)能夠與另一設(shè)備上的一個(gè)或多個(gè)應(yīng)用維持任意數(shù)目的多個(gè)并發(fā)會(huì)話,并且隨著應(yīng)用動(dòng)態(tài)地引起會(huì)話的創(chuàng)建或者其會(huì)話的關(guān)閉,并發(fā)會(huì)話的數(shù)目可隨時(shí)間而變化。這種協(xié)議可以按獨(dú)立于一個(gè)設(shè)備和另一設(shè)備(例如,主機(jī))兩者上使用的接口(例如,USB接口或BLUETOOTH接口)的傳輸?shù)姆绞絹韺?shí)現(xiàn),并且在同一個(gè)共同的鏈路/接口(例如,USB接口)上可以維持多個(gè)獨(dú)立連接。在一個(gè)實(shí)施例中,建立單個(gè)USB會(huì)話,并且在該單個(gè)USB會(huì)話上隧傳(tunnel)了任意且可改變數(shù)目的多個(gè)并發(fā)會(huì)話。在一個(gè)實(shí)施例中,特定接口例如USB應(yīng)當(dāng)支持成幀,或者某種成幀協(xié)議應(yīng)當(dāng)被添加,例如COBS(恒定開銷字節(jié)填充)或PPP/SLIP風(fēng)格的成幀。多個(gè)獨(dú)立連接可被同時(shí)用于不同目的(例如,諸如媒體文件之類的文件可被傳送,同時(shí)諸如地址簿中的聯(lián)絡(luò)人之類的結(jié)構(gòu)化數(shù)據(jù)可在設(shè)備之間被交換和/或同步,同時(shí)其他數(shù)據(jù)(例如,電子郵件或設(shè)置信息或軟件窗口小部件)也在設(shè)備之間被交換)。支持多個(gè)獨(dú)立連接的能力對(duì)于具有多任務(wù)操作系統(tǒng)(OS)的設(shè)備尤其有用,這種操作系統(tǒng)允許多個(gè)應(yīng)用同時(shí)運(yùn)行,但這種OS并非必要的。圖14B示出了利用本發(fā)明一個(gè)實(shí)施例任意數(shù)目的多個(gè)“客戶端”應(yīng)用(例如,用于同步結(jié)構(gòu)化數(shù)據(jù)的同步軟件、用于傳送文件的文件傳送軟件、備份軟件等等)如何能夠在諸如USB(有線或無線)或BLUETOOTH之類的非網(wǎng)絡(luò)接口上維持多個(gè)并發(fā)連接或會(huì)話。圖14A示出了在現(xiàn)有技術(shù)中實(shí)際上在每個(gè)設(shè)備上僅有一個(gè)客戶端應(yīng)用(或者靜態(tài)的、固定數(shù)目的客戶端應(yīng)用)能夠使用設(shè)備之間的USB連接。在圖14A的互連的系統(tǒng)1401中,主機(jī)上的客戶端應(yīng)用1402使用PTP(圖片傳送協(xié)議)1403通過其USB接口1405和連接1407來發(fā)送和接收數(shù)據(jù),并且設(shè)備上的客戶端應(yīng)用1411使用PTP協(xié)議(未示出)通過設(shè)備的USB接口1409來發(fā)送和接收數(shù)據(jù)。連接1407以及USB接口1405和1409僅支持單個(gè)連接或會(huì)話。與之不同,互連的系統(tǒng)1421通過連接1429以及USB接口1427和1431支持多個(gè)獨(dú)立且并發(fā)的連接或會(huì)話。主機(jī)設(shè)備上的多個(gè)客戶端應(yīng)用1423可以與多個(gè)客戶端應(yīng)用1435中其各自的對(duì)應(yīng)物維持獨(dú)立且并發(fā)的連接或會(huì)話。例如,在圖8所示的系統(tǒng)的情況下,設(shè)備801上的文件傳送軟件807可以與主機(jī)803上的媒體軟件831(例如,iTunes)(或者與文件傳送軟件833)具有打開且維持的連接,同時(shí)設(shè)備801上的同步軟件805可以與主機(jī)上的同步軟件835維持打開的連接(其獨(dú)立于軟件807和831之間的連接)。多個(gè)獨(dú)立且并發(fā)的連接可以通過在主機(jī)和設(shè)備兩者上使用類TCP協(xié)議來實(shí)現(xiàn),其中具有類TCP頭部的類TCP分組通過非網(wǎng)絡(luò)接口(例如USB接口1427和1431)傳輸。類TCP分組被主機(jī)上的接口TCP(TCPoverinterface)1425軟件和設(shè)備上的接口TCP1431軟件所處理。接口TCP1425軟件可以與圖8中的接口TCP軟件821相同或相似,接口TCP1431軟件可以與圖8中的接口TCP軟件841相同或相似。類TCP分組在類TCP頭部中指定與建立了連接的相應(yīng)源(例如,發(fā)送方)和目的地(例如,接收方)應(yīng)用相關(guān)聯(lián)的相應(yīng)的源和目的地端口,并且對(duì)這些端口的指定允許了維持獨(dú)立且并發(fā)的連接。這里描述的方法還提供了一種機(jī)制,用于在連接被突然或意外斷開的情況下(例如,當(dāng)用戶將設(shè)備從其USB線纜或支座上拔掉以便應(yīng)答由無線蜂窩電話接收到的電話呼叫,從而使設(shè)備與主機(jī)斷開連接時(shí))得體地恢復(fù)。類TCP協(xié)議在會(huì)話被切斷時(shí)向源和目的地應(yīng)用提供通知,并且該通知可被應(yīng)用用來處理通知并清掃其狀態(tài)并且實(shí)現(xiàn)對(duì)數(shù)據(jù)的任何期望校正。類TCP協(xié)議可以允許源和目的地應(yīng)用通過全部或部分忽略發(fā)生故障的連接會(huì)話(例如,通過刪除部分接收的文件或部分接收的結(jié)構(gòu)化數(shù)據(jù)集并且設(shè)定差錯(cuò)消息或狀態(tài)消息,該差錯(cuò)消息或狀態(tài)消息將使得兩個(gè)設(shè)備在重新連接時(shí)在這些源和目的地應(yīng)用之間建立新的連接以便交換在先前發(fā)生故障的連接會(huì)話中嘗試交換的數(shù)據(jù)),來從斷開的通信中迅速且得體地恢復(fù)。類TCP協(xié)議還可結(jié)合在類TCP協(xié)議上方運(yùn)行的文件傳送協(xié)議使用,并且文件傳送協(xié)議可用于在兩個(gè)設(shè)備之間提供文件傳送,并且利用分組(例如,類TCP分組)傳送的文件可以在接收方被重建,并且可在(利用多個(gè)類TCP分組接收的)所有數(shù)據(jù)都已被接收到之后被核實(shí)(或者它可以在部分文件被接收到之后被部分地核實(shí))??梢岳脗鹘y(tǒng)的校驗(yàn)和操作或散列操作來核實(shí)文件。許多不同類型的軟件可結(jié)合這個(gè)類TCP協(xié)議使用,例如任何結(jié)合雙向字節(jié)流工作的協(xié)議可被層疊在這個(gè)類TCP協(xié)議上方。這些不同類型的軟件可以包括telnet(例如,用于交互式telnet會(huì)話)、rsync、用于遠(yuǎn)程調(diào)試另一設(shè)備上的應(yīng)用的gdboverIP,等等。另外,在這個(gè)類TCP協(xié)議上方運(yùn)行的軟件可實(shí)現(xiàn)事務(wù)型協(xié)議,包括對(duì)原子事務(wù)的使用。這個(gè)類TCP協(xié)議允許了在這個(gè)類TCP協(xié)議上方運(yùn)行的一層或多層軟件提供其服務(wù)和功能,而不要求它們負(fù)責(zé)與在另一系統(tǒng)上運(yùn)行的另一軟件建立和維持連接。應(yīng)當(dāng)理解,術(shù)語“設(shè)備”和“主機(jī)”是可互換使用的;換言之,“設(shè)備”既適用于設(shè)備也適用于主機(jī)。主機(jī)是設(shè)備,并且設(shè)備可以被認(rèn)為是主機(jī)。然而,在某些實(shí)施例中,會(huì)話可僅由主機(jī)發(fā)起并且是從主機(jī)到設(shè)備的,在這種情況下主機(jī)不可與設(shè)備互換。還應(yīng)當(dāng)理解,這里描述的類TCP協(xié)議是提供一種支持獨(dú)立連接的復(fù)用和流控制的可靠傳輸機(jī)制的通信協(xié)議的示例,提供類似機(jī)制的其他協(xié)議也可作為替代用于本發(fā)明的至少某些實(shí)施例中。還應(yīng)當(dāng)明白,在本發(fā)明的至少某些實(shí)施例中,諸如TCP硬件加速器之類的硬件可用于完全或部分替換這里描述的軟件。圖8示出了通過(設(shè)備上的)接口823和(主機(jī)上的)接口847連接的互連的設(shè)備801和主機(jī)803的示例。這些接口可以被認(rèn)為是非網(wǎng)絡(luò)接口,例如USB或BLUETOOTH接口。換言之,用于外圍設(shè)備(例如,鼠標(biāo)、鍵盤、存儲(chǔ)設(shè)備)但不用于連接到計(jì)算機(jī)網(wǎng)絡(luò)(例如LAN(局域網(wǎng))或因特網(wǎng))的接口被用于連接主機(jī)803和設(shè)備801。設(shè)備801包括被設(shè)計(jì)來連接到計(jì)算機(jī)網(wǎng)絡(luò)的接口817,主機(jī)803包括也用于連接到網(wǎng)絡(luò)(例如因特網(wǎng))的接口845(例如WiFi或以太網(wǎng)或電話調(diào)制解調(diào)器)。接口817被耦合以發(fā)送/接收由TCP/IP軟件棧815處理的TCP/IP分組;接口817和TCP/IP軟件棧815為設(shè)備801提供傳統(tǒng)的因特網(wǎng)或網(wǎng)絡(luò)連接。接口845被耦合以發(fā)送/接收由TCP/IP軟件棧843處理的TCP/IP分組;接口845和TCP/IP軟件棧843為主機(jī)803提供傳統(tǒng)的因特網(wǎng)或網(wǎng)絡(luò)連接。主機(jī)803包括若干個(gè)客戶端應(yīng)用831、833、835和837,這些客戶端應(yīng)用可以通過接口823和847與設(shè)備801上的客戶端應(yīng)用805、807和809交換數(shù)據(jù)和/或文件。圖8示出了主機(jī)803和設(shè)備801上的某些客戶端應(yīng)用的示例,但在設(shè)備和主機(jī)之一或兩者之上可以有更多或更少或不同的客戶端應(yīng)用。在圖8所示的示例中,主機(jī)803上的客戶端應(yīng)用通過一提供軟件模塊之間的互通信的套接字API839與接口TCP軟件841和TCP/IP軟件棧843通信。套接字API839響應(yīng)于對(duì)套接字API的調(diào)用而為基于流的協(xié)議的會(huì)話的每個(gè)端點(diǎn)提供一個(gè)打開的套接字。套接字API819在設(shè)備801上提供類似的功能,從而允許創(chuàng)建打開的套接字,以建立并維持TCP/IP軟件棧815和接口TCP軟件821之間的通信,并且允許客戶端應(yīng)用805、807和809與TCP/IP軟件棧建立并維持通信(通過可選的關(guān)守811)。通常,一方的每個(gè)客戶端應(yīng)用被配置為與另一方的相應(yīng)對(duì)應(yīng)物維持連接。例如,同步軟件835被配置為與同步軟件805維持連接,以便在設(shè)備之間交換數(shù)據(jù)(例如,結(jié)構(gòu)化數(shù)據(jù)或窗口小部件等等)。同步軟件835和同步軟件805的示例在2007年1月7日提交的題為“SynchronizationMethodsandSystems”的美國(guó)專利申請(qǐng)No.11/650,730中提供,該申請(qǐng)通過引用被并入在此。媒體軟件831(其可以是媒體播放器,例如iTunes)被配置為與文件傳送軟件807(其可以是設(shè)備上的媒體播放器,例如iTunes)維持連接。文件傳送軟件在某些實(shí)施例中還可以被配置為與文件傳送軟件833維持連接。文件共享軟件809被配置為與文件共享軟件837維持連接。這些連接可通過一個(gè)或多個(gè)可選的關(guān)守來維持,所述關(guān)守例如是關(guān)守811以及主機(jī)上的可能存在于客戶端應(yīng)用831、833、835、837與接口TCP軟件841之間的相應(yīng)關(guān)守(未示出)。在至少某些實(shí)施例中,關(guān)守幫助在需要經(jīng)認(rèn)證的連接的情況下在設(shè)備和主機(jī)之間創(chuàng)建這種連接。圖8中的關(guān)守可以與圖1所示的關(guān)守客戶端115和關(guān)守180相同或相似。用于某些應(yīng)用(例如,文件共享或telenet或gdboverIP)的連接可以完全繞開設(shè)備上的關(guān)守。在下文中結(jié)合對(duì)圖9-12的描述來進(jìn)一步描述TCP/IP軟件棧815、接口TCP軟件821以及接口TCP軟件841的操作。這些軟件組件支持這里描述的復(fù)用式數(shù)據(jù)流協(xié)議。設(shè)備801包括數(shù)據(jù)813,該數(shù)據(jù)813可被存儲(chǔ)在包括閃存、硬盤驅(qū)動(dòng)器、易失性半導(dǎo)體存儲(chǔ)器等等在內(nèi)的多個(gè)存儲(chǔ)介質(zhì)中的任何一個(gè)之中。該數(shù)據(jù)可包括用于地址簿、日歷、待做事項(xiàng)和注釋的結(jié)構(gòu)化數(shù)據(jù),該數(shù)據(jù)可以如這里所述通過同步軟件805和同步軟件835來加以同步。另外,數(shù)據(jù)813還可包括媒體文件,例如用于音樂的MP3文件或者用于電影或其他視聽媒體的MPEG4文件。數(shù)據(jù)813還可包括其他類型的數(shù)據(jù)(例如,字處理文件等等)或者甚至包括可執(zhí)行程序,例如窗口小部件、與設(shè)置信息和電子郵件或電話賬戶信息有關(guān)的數(shù)據(jù),等等。應(yīng)當(dāng)明白,設(shè)備方的各種客戶端應(yīng)用與包含數(shù)據(jù)813的存儲(chǔ)設(shè)備通信以便訪問數(shù)據(jù)。例如,文件傳送軟件807可以讀取或?qū)懭霐?shù)據(jù)813以便傳送文件。應(yīng)當(dāng)理解,主機(jī)設(shè)備803也包括數(shù)據(jù)存儲(chǔ)介質(zhì),例如閃存或硬盤驅(qū)動(dòng)器或易失性存儲(chǔ)器設(shè)備(例如,DRAM),或者其他存儲(chǔ)介質(zhì),用于存儲(chǔ)供主機(jī)803上的客戶端應(yīng)用使用的數(shù)據(jù)。圖8示出了主機(jī)設(shè)備803的一個(gè)示例,而圖13示出了主機(jī)設(shè)備的替代軟件體系結(jié)構(gòu)。主機(jī)設(shè)備1301包括若干個(gè)客戶端應(yīng)用,其中包括應(yīng)用1303、1305和1307,其每一個(gè)通過套接字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所示的主機(jī)和圖8所示的主機(jī)之間的主要差異在于通過接口847接收和發(fā)送的類TCP分組是由接口TCP軟件841而不是由TCP/IP軟件棧843處理的;另一方面,在圖13所示的主機(jī)設(shè)備的情況下,通過接口1315發(fā)送和接收的類TCP分組是由接口TCP軟件1311和TCP/IP軟件棧1313兩者處理的。圖9是示出根據(jù)本發(fā)明一個(gè)實(shí)施例用于在兩個(gè)系統(tǒng)(例如主機(jī)和設(shè)備)之間交換數(shù)據(jù)的方法的示例的流程圖。該方法開始于一方,并且在兩個(gè)設(shè)備之間完成數(shù)據(jù)交換之后,結(jié)束于另一方。在操作901中,從同時(shí)具有通過非網(wǎng)絡(luò)接口(例如USB或BLUETOOTH接口)支持的獨(dú)立會(huì)話的多個(gè)獨(dú)立應(yīng)用中的至少一個(gè)接收數(shù)據(jù)流。該數(shù)據(jù)流可通過套接字接口來接收。例如,由媒體軟件831控制的媒體文件可通過套接字接口向接口TCP軟件841發(fā)送媒體文件。在操作903中,為數(shù)據(jù)流中的數(shù)據(jù)創(chuàng)建分組,并且這些分組包括頭部,例如分組中的類TCP頭部。例如,接口TCP軟件841可以根據(jù)數(shù)據(jù)流創(chuàng)建分組,并且這些分組中的每一個(gè)包括每個(gè)分組中的類TCP頭部。這些分組在操作905中通過非網(wǎng)絡(luò)接口(例如接口847)被發(fā)送。進(jìn)而,這些分組在其他系統(tǒng)處通過類似的非網(wǎng)絡(luò)接口(例如接口823)被接收。然后,在操作909中,分組中的數(shù)據(jù)被例如接口TCP軟件821所提取??梢愿鶕?jù)分組內(nèi)的端口標(biāo)識(shí)符來確定數(shù)據(jù)的目的地,這使得數(shù)據(jù)可以被發(fā)送或提供到接收設(shè)備上的目的地應(yīng)用。如果數(shù)據(jù)是諸如MP3文件或電影文件等等之類的文件的一部分,則該文件在操作911中被重建并且可選地被核實(shí)。核實(shí)可以包括對(duì)整個(gè)文件使用校驗(yàn)和或者散列操作,這是現(xiàn)有技術(shù)中已知的。如果在連接期間的任何時(shí)刻,用戶或系統(tǒng)導(dǎo)致發(fā)生斷開連接(例如,從設(shè)備中拔掉USB線纜),則兩方清掃其狀態(tài)并且關(guān)閉其套接字,從而終止兩個(gè)設(shè)備之間的類TCP連接。這樣就告知了主機(jī)上的客戶端和設(shè)備上的服務(wù):會(huì)話結(jié)束了。另外,設(shè)備上的服務(wù)或主機(jī)上的客戶端可以在任何時(shí)間關(guān)閉會(huì)話,并且另一方將被告知會(huì)話已被關(guān)閉。圖10提供了根據(jù)本發(fā)明一個(gè)實(shí)施例的初始化或設(shè)置方法的示例。在操作1001中,主機(jī)的接口TCP軟件從諸如主機(jī)上的iTunes之類的應(yīng)用的接收調(diào)用,以在諸如通過套接字API提供的端口“X”之類的端口上進(jìn)行連接。響應(yīng)于該調(diào)用,主機(jī)的接口TCP軟件在操作1003中創(chuàng)建類TCP分組,例如SYNTCP分組,并且使得該分組通過非網(wǎng)絡(luò)接口(例如USB接口或者圖8所示的接口847)被發(fā)送。設(shè)備的接口TCP軟件通過設(shè)備的非網(wǎng)絡(luò)接口(例如,接口823,其可以是USB接口)接收該類TCP分組并且生成一個(gè)或多個(gè)調(diào)用,以獲得套接字并且在諸如與TCP/IP軟件棧815相關(guān)聯(lián)的環(huán)回地址上的端口之類的端口上連接該套接字。設(shè)備在操作1007中使得synackTCP分組被創(chuàng)建,并且接口TCP軟件使得通過設(shè)備的非網(wǎng)絡(luò)接口將該synack類TCP分組發(fā)送到主機(jī)的非網(wǎng)絡(luò)接口。如操作1009中所示,設(shè)備和主機(jī)兩者上的接口TCP軟件都可維持關(guān)于哪個(gè)端口/會(huì)話與哪個(gè)套接字相關(guān)聯(lián)的信息。圖11示出了用于將數(shù)據(jù)從主機(jī)傳送到設(shè)備的方法的一個(gè)示例。在操作1101中,主機(jī)上的應(yīng)用(例如主機(jī)上的iTunes)在該應(yīng)用的套接字上向主機(jī)上的接口TCP軟件發(fā)送數(shù)據(jù)。例如,在主機(jī)803的情況下,媒體軟件831通過為該應(yīng)用打開的套接字向接口TCP軟件841發(fā)送數(shù)據(jù)。在操作1103中,主機(jī)上的接口TCP軟件接收該數(shù)據(jù)并且創(chuàng)建類TCP分組,在該分組內(nèi)具有類TCP頭部和該數(shù)據(jù)中的至少一些,并且主機(jī)上的接口TCP軟件通過非網(wǎng)絡(luò)接口(例如USB接口或圖8所示的接口847)來發(fā)送該分組。在操作1105中,設(shè)備上的接口TCP軟件從分組中提取數(shù)據(jù)并且將該數(shù)據(jù)(有時(shí)稱為“有效載荷”)發(fā)送到由分組中的端口指定的套接字上。在圖8的示例中,接口TCP軟件821提取通過接口823接收的數(shù)據(jù)并且將該數(shù)據(jù)發(fā)送到套接字上,這將使得數(shù)據(jù)被提供到TCP/IP軟件棧815。在操作1107中,設(shè)備上的TCP/IP棧,例如TCP/IP軟件棧815,獲得來自設(shè)備上的接口TCP軟件的數(shù)據(jù),并且創(chuàng)建帶有IP和TCP頭部的分組。此情況下的IP地址可以是TCP/IP棧的環(huán)回地址。例如,TCP/IP軟件棧815可包括環(huán)回接口(未示出),例如圖13所示的環(huán)回接口。分組將從該環(huán)回接口返回,并且TCP/IP棧在操作1107中去除TCP和IP頭部并且將數(shù)據(jù)在套接字上發(fā)送到應(yīng)用。在圖11所示的應(yīng)用是主機(jī)上的iTunes應(yīng)用的示例中,設(shè)備上的接收方應(yīng)用可以是文件傳送軟件807,該文件傳送軟件可以是設(shè)備上的媒體播放器的一部分。圖12示出了用于將數(shù)據(jù)從設(shè)備傳送到主機(jī)的方法的示例。在操作1201中,設(shè)備上的應(yīng)用,例如同步軟件805或者媒體播放器軟件,通過用于該應(yīng)用的套接字將數(shù)據(jù)發(fā)送到TCP/IP棧軟件或設(shè)備,例如TCP/IP軟件棧815。在操作1203中,TCP/IP軟件棧將數(shù)據(jù)分解為分組,并且將TCP和IP頭部與數(shù)據(jù)包括在一起以便創(chuàng)建分組。IP頭部中的IP地址可以是環(huán)回地址,以使得分組被返回到TCP/IP軟件棧,例如軟件棧815。在操作1205中,分組被引導(dǎo)到環(huán)回地址并從環(huán)回地址返回,并且被TCP/IP軟件棧所接收,TCP/IP軟件棧去除TCP和IP頭部并且將數(shù)據(jù)以數(shù)據(jù)流的形式傳送到接口TCP軟件,例如設(shè)備上的接口TCP軟件821。在操作1207中,接口TCP軟件接收來自TCP/IP軟件棧815的數(shù)據(jù),并且創(chuàng)建包含分組化數(shù)據(jù)和類TCP頭部的分組,并且調(diào)用USB驅(qū)動(dòng)器以利用USB接口(例如接口823)上的USB協(xié)議來發(fā)送分組。在操作1209中,這些分組被從設(shè)備的USB接口發(fā)送到主機(jī)的USB接口,例如主機(jī)上的接口847。然后,在操作1211中,主機(jī)上的接口TCP軟件,例如接口TCP軟件841,接收分組并且去除類TCP頭部,并且通過例如套接字API將數(shù)據(jù)傳送到接收方應(yīng)用。圖15提供了用于在兩個(gè)設(shè)備之間交換文件的方法的示例。在此情況下,數(shù)據(jù)通常不是諸如聯(lián)絡(luò)信息等等之類的被同步的結(jié)構(gòu)化數(shù)據(jù)。更確切地說,數(shù)據(jù)構(gòu)成整個(gè)文件。在操作1501中,數(shù)據(jù)以分組的形式與類TCP頭部一起通過諸如接口823或接口847之類的接口被傳送。在操作1503中,這些分組通過另一系統(tǒng)上的另一接口被接收,并且數(shù)據(jù)被從多個(gè)分組中提取出來以準(zhǔn)備重新組裝文件。然后,在操作1505中,重建文件。這可以在文件的所有數(shù)據(jù)已被接收到之后發(fā)生或者可以在數(shù)據(jù)被接收的同時(shí)發(fā)生。如果在文件傳送期間連接丟失,則存儲(chǔ)差錯(cuò)消息和/或狀態(tài)消息以表明文件未被成功傳送,以便其可在設(shè)備被重新連接時(shí)被傳送。文件可以在文件的所有數(shù)據(jù)已被接收到之后被加以核實(shí)或者可在其被接收的同時(shí)被部分核實(shí)。核實(shí)可以是可選的操作,例如操作1507,并且可以通過使用傳統(tǒng)的校驗(yàn)和操作或散列操作來執(zhí)行。圖15的方法中使用的分組可以包括作為文件傳送協(xié)議的一部分的信息。例如,分組可以包括對(duì)具有預(yù)定分組格式的分組類型和與該分組類型相關(guān)聯(lián)的分組功能的指示。分組功能可以指定文件傳送協(xié)議軟件的操作。在發(fā)生連接斷開的情況下的差錯(cuò)消息或狀態(tài)消息可以至少包括在連接被中斷之前僅部分傳送的文件的標(biāo)識(shí)符,以便在重新建立連接時(shí)可傳送該文件。以下是對(duì)圖8-13、圖14B和圖15所示的一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)方式的描述;此實(shí)現(xiàn)方式允許設(shè)備和主機(jī)經(jīng)由USB通信。該實(shí)現(xiàn)方式可被稱為設(shè)備通信協(xié)議,該協(xié)議可用來允許諸如文件傳送軟件807(例如,用于iTunes媒體同步)和結(jié)構(gòu)化數(shù)據(jù)同步(例如,同步軟件805)之類的多個(gè)服務(wù)同時(shí)與設(shè)備通信,而無需另外的USB端點(diǎn)。此實(shí)現(xiàn)方式中的通信協(xié)議是作為廠商特定接口實(shí)現(xiàn)的。廠商特定接口利用兩個(gè)端點(diǎn),即大塊輸入(BulkInput)端點(diǎn)和大塊輸出(BulkOutput)端點(diǎn)。雖然該協(xié)議并不完全是典型的TCP,但它確實(shí)使用了類似TCP的機(jī)制來進(jìn)行流控制、連接建立/終止和復(fù)用。根據(jù)此設(shè)備通信協(xié)議的接口是通過找到這樣一個(gè)接口來識(shí)別的:-設(shè)備的廠商ID為Apple(0x05AC)-接口類為廠商特定(255)-接口子類為254-接口協(xié)議為2接口#1–廠商特定替代設(shè)定0端點(diǎn)數(shù)目2接口類:255(廠商特定)接口子類:254(廠商特定)接口協(xié)議:2端點(diǎn)0x85–大塊輸入地址:0x85(輸入)屬性:0x02(大塊無同步數(shù)據(jù)端點(diǎn))最大分組大?。?12查詢間隔:0(端點(diǎn)永不NAK)端點(diǎn)0x04–大塊輸出地址:0x04(輸出)屬性:0x02(大塊無同步數(shù)據(jù)端點(diǎn))最大分組大小:512查詢間隔:0(端點(diǎn)永不NAK)1)消息頭部所有數(shù)據(jù)都是以消息的形式發(fā)送的。每個(gè)消息開始于以下頭部。所有頭部都是按網(wǎng)絡(luò)字節(jié)順序的。AppleUSBMobileDeviceMessageHeader+-------+-------+-------+-------+-------+-------+-------+-------+|類型(32比特)|長(zhǎng)度(32比特)|+-------+-------+-------+-------+-------+-------+-------+-------+存在兩個(gè)定義的消息類型:0–版本消息6–TCP消息長(zhǎng)度字段用于驗(yàn)證接收到的USB數(shù)據(jù)報(bào)是正確大小的。長(zhǎng)度包括消息頭部的大小。USB以分組的形式發(fā)送數(shù)據(jù)。對(duì)于大塊USB端點(diǎn),最大分組大小由速度決定。只要你保持發(fā)送標(biāo)準(zhǔn)大小的分組,數(shù)據(jù)就被認(rèn)為是幀的一部分。為了結(jié)束幀,應(yīng)當(dāng)發(fā)送小于最大分組大小的分組。如果幀將正常地正好結(jié)束于兩個(gè)標(biāo)準(zhǔn)大小分組的邊界上(幀大小%最大分組大小為0),則可以發(fā)送零長(zhǎng)度分組來表示幀的結(jié)束。頭部中的長(zhǎng)度字段應(yīng)當(dāng)匹配所接收的幀的大小。如果它不匹配,則幀應(yīng)當(dāng)被丟棄。應(yīng)當(dāng)記錄差錯(cuò)來追蹤故障。在大多數(shù)情況下,后續(xù)的幀也會(huì)出問題,因而也必須被丟棄。這些差錯(cuò)不應(yīng)當(dāng)發(fā)生。將利用TCP消息來檢測(cè)丟失,并且將放棄該TCP連接。2)版本消息版本消息是在開始時(shí)交換的,用于協(xié)商要使用的協(xié)議的版本。當(dāng)設(shè)備出現(xiàn)時(shí),它應(yīng)當(dāng)?shù)却姹鞠ⅰV鳈C(jī)負(fù)責(zé)發(fā)送第一條版本消息。版本消息具有以下格式:+-------+-------+-------+-------+-------+-------+-------+-------+|0|此消息的大小|+-------+-------+-------+-------+-------+-------+-------+-------+|版本(32比特)| 特征(32比特)|+-------+-------+-------+-------+-------+-------+-------+-------+|應(yīng)當(dāng)為零(32比特)|+-------+-------+-------+-------+版本主機(jī)->設(shè)備–請(qǐng)求的版本設(shè)備->主機(jī)–支持的版本特征主機(jī)->設(shè)備表明期望特征的比特字段。設(shè)備->主機(jī)表明將使用的特征的比特字段。對(duì)于此實(shí)現(xiàn)方式,主機(jī)應(yīng)當(dāng)將“版本”設(shè)定為1。特征應(yīng)當(dāng)為零,因?yàn)槟壳皼]有支持的特征。將來,可以添加諸如校驗(yàn)和之類的特征,而不會(huì)沖擊版本。此外,可以利用特征字段來實(shí)現(xiàn)校驗(yàn)和,而無需定義全新的版本。特征字段是基于版本來解釋的。版本1的“特征”字段中的各種比特可具有與版本2中的“特征”不同的含義。主機(jī)可以通過設(shè)定“特征”字段中的相應(yīng)比特來請(qǐng)求特征。設(shè)備應(yīng)當(dāng)以所支持的版本來做出響應(yīng)。設(shè)備可以僅支持一個(gè)版本,或者它可支持多個(gè)版本。如果設(shè)備支持主機(jī)所請(qǐng)求的版本,則設(shè)備應(yīng)當(dāng)以該版本來做出響應(yīng)。如果設(shè)備僅支持一不同的版本,則設(shè)備應(yīng)當(dāng)以它支持的版本來做出響應(yīng)。如果設(shè)備以所請(qǐng)求的版本做出響應(yīng),則設(shè)備應(yīng)當(dāng)將特征比特字段設(shè)定為所請(qǐng)求的比特,其中掩蔽掉任何不支持的特征。如果響應(yīng)版本不與所請(qǐng)求的版本匹配,則“特征”字段應(yīng)當(dāng)為零。如果設(shè)備以指示出主機(jī)不理解的版本的版本消息來做出響應(yīng),則主機(jī)可能需要更新的軟件來與設(shè)備通信。如果設(shè)備以與主機(jī)支持的所請(qǐng)求版本不同的版本來做出響應(yīng),則主機(jī)可以發(fā)送另一版本消息,其帶有新協(xié)商的版本,并且在“特征”字段中設(shè)定了比特以請(qǐng)求特定的特征。設(shè)備應(yīng)當(dāng)準(zhǔn)備好處理多個(gè)版本消息。3)TCP消息對(duì)于經(jīng)由USB的數(shù)據(jù)通信,使用TCP消息。TCP消息是AppleUSBMobileDeviceHeader,其中協(xié)議值為6并且大小被設(shè)定為包括頭部在內(nèi)的整個(gè)消息的大小。AppleUSBMobileDeviceHeader后面是TCP頭部。目前不支持可變頭部長(zhǎng)度和TCP選項(xiàng)。有效載荷(如果有的話)跟在TCP頭部后面。+-------+-------+-------+-------+-------+-------+-------+-------+|6|此消息的大小|+-------+-------+-------+-------+-------+-------+-------+-------+|src端口|dst端口|序列|+-------+-------+-------+-------+-------+-------+-------+-------+|確認(rèn)|hl|標(biāo)志|窗口大小|+-------+-------+-------+-------+-------+-------+-------+-------+|校驗(yàn)和|緊急指針|+-------+-------+-------+-------+緊急指針和校驗(yàn)和字段目前未被使用并且在此實(shí)現(xiàn)方式中應(yīng)當(dāng)被設(shè)定為零。由于USB被認(rèn)為是可靠的,因此確認(rèn)是隱含的。單純的ACK分組被發(fā)送來更新窗口。3.1)發(fā)起連接通過主機(jī)向設(shè)備發(fā)送TCPSYN分組來建立連接。dst(目的地)端口被用于確定在主機(jī)上連接哪個(gè)服務(wù)。src(源)端口/dst端口元組應(yīng)當(dāng)是唯一的,以將此連接與任何其他連接區(qū)分開來。如果接受連接,則設(shè)備利用SYN/ACK分組對(duì)SYN分組做出響應(yīng)。如果沒有足夠的資源,或者沒有服務(wù)在所請(qǐng)求的端口上偵聽,則設(shè)備可以拒絕連接請(qǐng)求。為了拒絕連接,設(shè)備應(yīng)當(dāng)發(fā)送TCPRST。正常的TCP連接涉及三次握手。由于USB被認(rèn)為是可靠的,因此第三分組,即從主機(jī)到設(shè)備的ACK,在此實(shí)現(xiàn)方式中可被丟棄(不使用)。設(shè)備一旦發(fā)送了SYN/ACK分組就認(rèn)為連接已建立。主機(jī)一旦接收到SYN/ACK分組就認(rèn)為連接已建立。對(duì)于SYN標(biāo)志遞增序列和確認(rèn)號(hào),就像在真實(shí)(典型)TCP中那樣。窗口偏移值8被使用,但此選項(xiàng)未被協(xié)商。3.2)終止連接當(dāng)設(shè)備或主機(jī)希望關(guān)閉連接時(shí),它發(fā)送TCPRST。響應(yīng)于TCPRST,主機(jī)或設(shè)備應(yīng)當(dāng)清掃與通過源和目的地TCP端口指定的連接相關(guān)聯(lián)的任何資源。FIN標(biāo)志在此實(shí)現(xiàn)方式中未被使用。在此實(shí)現(xiàn)方式中沒有半關(guān)閉。3.3)發(fā)送數(shù)據(jù)序列和確認(rèn)號(hào)被用于流控制。當(dāng)主機(jī)或設(shè)備發(fā)送帶有有效載荷的TCP消息時(shí),序列號(hào)按所發(fā)送的有效載荷的大小而遞增。主機(jī)和設(shè)備不被允許發(fā)送超出最后確認(rèn)的數(shù)據(jù)加上最后通告的窗口的數(shù)據(jù)。流控制就是這樣實(shí)現(xiàn)的。假定所發(fā)送的任何數(shù)據(jù)都將被接收到。在此實(shí)現(xiàn)方式中不支持重發(fā)。替代實(shí)施例可以使用重發(fā),如果需要這種特征的話。發(fā)送數(shù)據(jù)一方一旦發(fā)送了數(shù)據(jù)就可丟棄數(shù)據(jù)的本地拷貝。3.4)接收數(shù)據(jù)數(shù)據(jù)被假定是按順序到達(dá)的。如果主機(jī)或設(shè)備接收到亂序的發(fā)送(基于序列號(hào)),則主機(jī)應(yīng)當(dāng)關(guān)閉連接并且發(fā)送TCPRST。當(dāng)主機(jī)或設(shè)備有更多緩沖器空間可用時(shí),它可以發(fā)送帶有更新的窗口的TCPACK分組,以表明另一方可發(fā)送更多數(shù)據(jù)。本說明書中提及“一個(gè)實(shí)施例”或“實(shí)施例”指的是聯(lián)系該實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。在本說明書中各處出現(xiàn)的短語“在一個(gè)實(shí)施例中”并不一定都指同一實(shí)施例。在以上說明書中,已經(jīng)參考其具體實(shí)施例描述了本發(fā)明。然而,很明顯,在不脫離本發(fā)明的更寬精神和范圍的情況下,可以對(duì)其進(jìn)行各種修改和變化。因此,說明書和附圖應(yīng)當(dāng)被看作說明性的而非限制性的。本申請(qǐng)要求2007年6月22日提交的題為“MultiplexedDataStreamProtocol”的臨時(shí)美國(guó)專利申請(qǐng)No.60/945,904的申請(qǐng)日的權(quán)益。特此通過引用將該臨時(shí)申請(qǐng)并入在此。本申請(qǐng)還是2007年6月8日提交的題為“TechniquesforCommunicatingDataBetweenaHostDeviceandAnIntermittentlyAttachedMobileDevice”的美國(guó)專利申請(qǐng)No.11/760,686的部分繼續(xù)案。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
隆化县| 临朐县| 清原| 徐水县| 乌鲁木齐市| 诸城市| 长汀县| 车致| 广南县| 临洮县| 农安县| 景洪市| 横山县| 西青区| 漠河县| 富宁县| 宁国市| 宜川县| 清水河县| 曲阜市| 赞皇县| 韶关市| 察哈| 建水县| 丹棱县| 博罗县| 景宁| 十堰市| 土默特右旗| 隆尧县| 五指山市| 张家川| 灵川县| 盖州市| 盱眙县| 衡水市| 静乐县| 六盘水市| 子长县| 昂仁县| 牙克石市|