In practise this is of course transparent to the application - this is just to explain the difference. Automatic variables can be used only if they are initialized on every entry to the function and stay state independent of the current request throughout their lifetime. All information necessary for completing a request must be kept in an autonomous data object that is passed round the via the stack. The main reason for keeping the Net object separate from the Request object is that some requests require more than one Net object, for example FTP which has a Net object for the control TCP connection and a Net object for each data TCP connection. The three modes are described in more detail in the section on Internal and External Events .
Net objects represents the socket interface of a request.
A Net object is created by the Net manager from within the Request manager every time a request is passed to the Library. A request can either be issued by the application or the Library itself for example as a result of redirection, access authentication, or when a new data connection is created in a FTP request. All new Net objects are automatically associated with a group which might already exist or be created together with the new Net object. When a Net object has been created, the Request manager returns immediately to the caller and does not see the request before it has terminated either with a success or an error as result. The request can either be started immediately by the Net manager or put into a queue if the maximum number of open TCP connections is reached.