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.

A Chargen client exchanging data with a Chargen server
Figure 7.40. A Chargen client exchanging data with a Chargen server

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.

Chargen data exchange, continued
Figure 7.41. Chargen data exchange, continued

The order of events are as follows:

  1. [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.

  2. [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 ...

Get Internet Core Protocols: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.