Revision Summary Date Revision History Revision Class Comments 8/10/2007 0.1 Major Initial Availability 9/28/2007 0.2 Minor Clarified the meaning of the technical content. 10/23/2007 1.0 Major Updated and revised the technical content. 11/30/2007 1.0.1 Editorial Changed language and formatting in the technical content. 1/25/2008 1.0.2 Editorial Changed language and formatting in the technical content. 3/14/2008 1.0.3 Editorial Changed language and formatting in the technical content. 5/16/2008 1.0.4 Editorial Changed language and formatting in the technical content. 6/20/2008 1.1 Minor Clarified the meaning of the technical content. 7/25/2008 1.1.1 Editorial Changed language and formatting in the
technical content. 8/29/2008 1.1.2 Editorial Changed language and formatting in the technical content. 10/24/2008 1.1.3 Editorial Changed language and formatting in the technical content. 12/5/2008 1.2 Clarified the meaning of the technical content. 1/16/2009 2.0 Major Updated and revised the technical content. 2/27/2009 2.0.1 Editorial Changed language and formatting in the technical content. 4/10/2009 3.0 Major Updated and revised the technical content. 5/22/2009 3.1 Minor Clarified the meaning of the technical content. 7/2/2009 3.1.1 Editorial Changed language and formatting in the technical content. 8/14/2009 3.1.2 Editorial Changed language and
formatting in the technical content. 9/25/2009 3.2 Minor Clarified the meaning of the technical content. 11/6/2009 3.3 Clarified the meaning of the technical content. 12/18/2009 3.3.1 Editorial Changed language and formatting in the technical content. 1/29/2010 3.4 Minor Clarified the meaning of the technical content. 3/12/2010 3.4.1 Editorial Changed language and formatting in the technical content. 4/23/2010 4.0 Major Updated and revised the technical content. 6/4/2010 5.0 Major Updated and revised the technical content. 7/16/2010 6.0 Major Updated and revised the technical content. 8/27/2010 7.0 Major Updated and revised the technical content.
HTTP status of 200. It MAY be present in other response messages; if present, its value MUST be the same as in the corresponding request message. BITS-Error: An HRESULT value that represents the error returned from the BITS server. This header SHOULD be included only if the HTTP status code is not 200.<4> BITS-Error-Context: This specifies the context in which the error was generated. This MUST be CONTEXT_SERVER (0x5) if the error was encountered during the message processing on the server or CONTEXT_REMOTE_APPLICATION (0x7) if the error was returned from the . This header MUST be included only if BITS-Error is present. The errors that could be returned from the server to the client are described in the following table. HRESULT HTTP status code Description BG_E_SESSION_NOT_FOUND (x8020001F) 500 BITS information is not found on the server. E_ACCESSDENIED (x80070005) 403 It can be one of the following: The exists on the server and cannot be overwritten. The client is not authorized to access the URL on the server. E_ACCESSDENIED (x80070005) 501 Uploads are not enabled for the . 0 416 The client and server are out of sync, and the server cannot proceed further with the FRAGMENT message processing. The client can read the correct offset from the Ack and send another FRAGMENT. E_INVALIDARG (0x80070057) 400 The client's request was invalid in some way, including: The format was
State Description STATE_INIT This is the initial state. STATE_SIZE The client sends a HEAD request to determine the size and timestamp of the URL. STATE_SEARCH The client sends a FileSearchRequest element to the BITS Peer-Caching: Content Retrieval Protocol client role. STATE_DOWNLOAD The client sends a GET request to download a fragment of the URL. STATE_SUSPEND The client pauses and waits for the higher-layer protocol to resume. STATE_COMPLETE This is the terminal state. Figure 7: Possible transitions Timers Request Timeout This limits the amount of time taken for sending any HTTP request. The default value is 5 minutes; the legal range is any positive value. Response Timeout This timer limits the amount of time taken for receiving any HTTP response. The default value is 5 minutes; the legal range is any positive value. Initialization The higher-layer protocol passes values for the DESTINATION_URL, APPLICATION_RANGES, BPCR_ALLOWED, and optionally AUTH_CREDENTIALS. If BPCR_ALLOWED is TRUE, the client MUST initialize the BITS Peer-Caching: Content Retrieval Protocol Client Role as specified in section 3.1.3. The client initializes Table of Contents and sets the Source field of each row to NULL.
A Abstract data model back-end client 43 43 client ( 26, 43, 52) download client 52 53 51 server ( 35, 51) 49 upload client 26 26 26 upload server 36 36 36 35 36 23 ACK for CANCEL-SESSION request 24 24 23 23 23 ACK for CLOSE-SESSION request 23 23 23 23 22 22 22 22 22 20 21 21 20 20 19 19 20 19 19 15 B Back-end client abstract data model 43 43 46 46 49 message processing 48 48 43 sequencing rules 48 48 timer events 49 49 49 timers 46 45 45 38 43 39 39 36 BITSSessionManager 41 36 36 BITSSessionWrapper 36 41 41 39 40 39 40 C 55 29 14 23 23 23 23 23 43 35 15 15 15 15 15 83 Client abstract data ( 26, 43, 52) 46 initialization ( 29, 46, 54) other local events ( 49, 60) 43 Client - back-end abstract data model 43 43
46 46 49 message processing 48 48 43 sequencing rules 48 48 timer events 49 49 49 timers 46 45 45 Client - download abstract data model 52 53 triggered events 55 55 55 54 60 55 timer events 60 60 timers 54 54 Client - upload abstract data model 26 26 26 higher-layer triggered events 29 29 29 29 29 35 message processing 35 34 33 34 34 34 sequencing rules 35 34 33 34 34 34 timer events 35 35 35 timers 29 28 28 22 22 22 22 22 43 17 CREATE-SESSION request 19 19 19 42 19 19 34 D Data model - abstract back-end client 43 43 client ( 26, 43, 52) download client 52 53 51 server ( 35, 51) 49 upload client 26 26 26 upload server 36 36 36 35 36 Download client abstract data model 52 53 triggered events 55 55 55 54 60 55 55 timer events 60 60 timers 54 54 25 Download server 51 51
51 52 message processing 51 51 52 sequencing 51 51 52 52 51 E responses - HTTP-level (rules for) ( 41, 48, 50) Examples 62 69 F 16 FRAGMENT 21 21 21 21 21 42 34 G 51 9 H 52 Higher-layer triggered events 46 46 download client 55 55 55 51 49 upload client 29 29 29 29 upload server 39 39 29 35 HTTP-level error responses - rules for ( 41, 48, 50) HTTPUploader 26 32 31 30 32 31 32 30 30 33 I 79 79 11 Initialization 46 client ( 29, 46, 54) 54 51 server ( 38, 51) 49 29 38 9 L Local events 49 60 52 50 35 43 M Message flow upload mode ( 12, 13, 14, 14) upload-reply mode ( 12, 13, 14, 14) Message processing back-end client 48 48 55 download server 51 51 52 51 server application 50 50 upload client 35 34 33 34 34 34 upload server 43 43 41 42 42
42 41 Messages 23 23 22 20 19 23 22 17 19 21 24 25 20 17 25 Messages - transport 35 17 Messages - upload (syntax) ACK for CANCEL-SESSION request 24 24 23 23 ACK for CLOSE-SESSION request 23 23 23 23 ACK for FRAGMENT message 22 22 22 22 ACK for PING message 21 21 20 20 Ack response for CREATE-SESSION message 19 20 19 19 CANCEL-SESSION message 23 23 23 23 CLOSE-SESSION message 22 22 22 22 common among message types 17 17 17 CREATE-SESSION request 19 19 19 19 FRAGMENT 21 21 21 21 notification request to server application 24 24 24 24 notification response from server application 25 25 25 25 17 PING message 20 20 20 20 51 N 29 10 46 49 45 Notification request to server application 24 24 24 24 24 Notification response from server application 25 25 25 25 25 45 O Other local events client ( 49, 60) server ( 43, 52) 11 12 13 13 message flow optional in upload and modes 14 14 11 P 79 55 29
20 20 20 20 20 42 34 15 15 80 R 51 52 10 11 10 14 54 60 54 60 55 29 S Security 79 79 Sequencing back-end client 48 48 55 download server 51 51 52 51 server application 50 50 upload client 35 34 33 34 34 34 upload server 43 43 41 42 42 42 41 Server abstract data model ( 35, 51) initialization ( 38, 51) 51 notification request to application 24 24 24 24 notification response from application 25 25 25 25 other local events ( 43, 52) 35 51 52 51 Server - download 51 51 51 52 message processing 51 51 52 sequencing rules 51 51 52 52 51 Server - upload abstract data model 36 36 36 35 36 triggered events 39 39 38 43 message processing 43 43 41 42 42 42 41 sequencing 43 43 41 42 42 42 41 43 38 Server application 49 49 49 50 message processing 50
50 upload client 35 35 35 43 Timers back-end client 46 45 45 download client 54 54 51 51 49 upload client 29 28 28 38 83 17 35 17 Triggered events - higher-layer 46 46 download client 55 55 55 51 49 upload client 29 29 29 29 upload server 39 39 U Upload client abstract data model 26 26 26 triggered events 29 29 29 29 29 35 message processing 35 34 33 34 34 34 sequencing rules 35 34 33 34 34 34 timer events 35 35 35 timers 29 28 28 Upload message syntax ACK for CANCEL-SESSION request 24 24 23 23 ACK for CLOSE-SESSION request 23 23 23 23 ACK for FRAGMENT message 22 22 22 22 ACK for PING message 21 21 20 20 Ack response for CREATE-SESSION message 19 20 19 19 CANCEL-SESSION message 23 23 23 23 CLOSE-SESSION message 22 22 22 22 common among message types 17 17 17 CREATE-SESSION request 19 19 19 19 FRAGMENT 21 21 21 21