| 
 | Please Whitelist This Site?I know everyone hates ads. But please understand that I am providing premium content for free that takes hundreds of hours of time to research and write. I don't want to go to a pay-only model like some sites, but when more and more people block ads, I end up working for free. And I have a family to support, just like you. :)
 If you like The TCP/IP Guide, please consider the download version. It's priced very economically and you can read all of it in a convenient format without ads. If you want to use this site for free, I'd be grateful if you could add the site to the whitelist for Adblock. To do so, just open the Adblock menu and select "Disable on tcpipguide.com". Or go to the Tools menu and select "Adblock Plus Preferences...". Then click "Add Filter..." at the bottom, and add this string: "@@||tcpipguide.com^$document". Then just click OK. Thanks for your understanding! Sincerely, Charles KozierokAuthor and Publisher, The TCP/IP Guide
 | 
 
 
   
  
    | 
  
| NOTE: Using software to mass-download the site degrades the server and is prohibited. If you want to read The TCP/IP Guide offline, please consider licensing it. Thank you.
 |  |  | 
| 
 
 
 | 
 
|  | The TCP/IP Guide 9  TCP/IP Application Layer Protocols, Services and Applications (OSI Layers 5, 6 and 7)
 9  TCP/IP Key Applications and Application Protocols
 9  TCP/IP File and Message Transfer Applications and Protocols (FTP, TFTP, Electronic Mail, USENET, HTTP/WWW, Gopher)
 9  TCP/IP World Wide Web (WWW, "The Web") and the Hypertext Transfer Protocol (HTTP)
 9  TCP/IP Hypertext Transfer Protocol (HTTP)
 9  HTTP Entities, Transfers, Coding Methods and Content Management
 |  
 HTTP Data Length Issues, "Chunked" Transfers and Message Trailers
 (Page 2 of 3)
 Using "Chunked" Transfers The problem of unknown message length 
could be resolved by buffering the entire resource before transmission. 
However, this would be wasteful of server memory and would delay the 
transmission of the entity unnecessarilyno part could be sent 
until the entire entity was ready. Instead, a special transfer encoding 
method was developed to handle this particular problem of unsafe 
transport: not knowing the length of a file. The method is called chunking. When this technique is used, instead 
of sending an entity as a raw sequence of bytes, it is broken into, 
well, chunks. J 
This allows HTTP to send a dynamically-generated resource, such as output 
from a script, a piece at a time as the data becomes available from 
the software processing it. To indicate that this method has been used, 
the special header Transfer-Encoding: chunked is 
placed in the message. A special format is also used for the body of 
the HTTP message to delineate the chunks: <chunk-1-length><chunk-1-data>
 <chunk-2-length>
 <chunk-2-data>
 ...
 0
 <message-trailers>
 Basically, instead of putting the 
whole entity in the body and indicating its length in a Content-Length 
header, each chunk is placed in the body sequentially, each preceded 
by the length of the chunk. The length is specified in hexadecimal, 
and represented using ASCII characters. All chunk lengths and chunk 
data are terminated with a CRLF sequence. The recipient 
knows it has received the last chunk when it sees a chunk-length of 
zero. |  Key Concept: Since HTTP/1.1 uses persistent connections that allow multiple requests and responses to be sent over a TCP connection, clients and servers need some way to identify where one message ends and the next begins. The easier solution is to use the Content-Length header to indicate the size of a message, but this only works when the length of a message can be easily determined in advance. For dynamic content or other cases where message length cannot be easily computed before sending the data, the special chunked transfer encoding can be used, where the message body is sent as a sequence of chunks, each preceded by the length of the chunk.
 | 
 Message Trailers
 When chunked transfer encoding is 
used, the sender of the message may also choose to specify one or more 
message trailers. These are the same as entity 
headers, describing the contents of the 
message body, but appear after the entity instead of before it. They 
provide flexibility in the same way that chunking itself doesthey 
allow a device to include an HTTP header that may contain information 
that was not available when the HTTP message transmission began. A good 
example would be an integrity check field calculated based on the byte 
values of the entire entity. Trailers are optional, and not always 
be needed. When they are used, they are processed just like regular 
entity headers. To give the recipient of a message a heads up 
that trailers have been used, the special Trailer header should 
be included at the start of the message, which lists the names of each 
header that appears as a trailer. 
 
 | 
 | If you find The TCP/IP Guide useful, please consider making a small Paypal donation to help the site, using one of the buttons below. You can also donate a custom amount using the far right button (not less than $1 please, or PayPal gets most/all of your money!) In lieu of a larger donation, you may wish to consider purchasing a download license of The TCP/IP Guide. Thanks for your support! |  
|  | 
 | 
 
 
 Home - 
Table Of Contents - Contact Us
 
 The TCP/IP Guide (http://www.TCPIPGuide.com)
 Version 3.0 - Version Date: September 20, 2005
 
 © Copyright 2001-2005 Charles M. Kozierok. All Rights Reserved.
 Not responsible for any loss resulting from the use of this site.
 |