Bulk Data Transfer and Error Recovery
Figure 7.40 shows a more-complex TCP session between Greywolf (the Chargen client) and Arachnid (a Chargen server). Greywolf connects to Arachnid and receives several segments of data. Due to a variety of events, this session gets fairly complicated. As such, the discussion is continued in Figure 7.41, Figure 7.42, and Figure 7.43.

Chargen is a simple application that generates streams of character data as soon as a connection is established. Chargen sends the data as a continuous stream, with the stream being broken into segments according to the segment-sizing calculations performed during circuit setup (as described in Section 7.1.5). As such, Chargen is a good example of how TCP handles applications that send large quantities of data.

The order of events are as follows:
[Segments 0-2] The Chargen client on Greywolf allocates a TCP client port (1048), and establishes a TCP connection with the Chargen server’s well-known port (TCP port 19) on Arachnid.
[3-4] Once the circuit is established, the Chargen server on Arachnid immediately starts sending data to the Chargen client on Greywolf. Notice that Arachnid sends two segments, and then ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access