Architecture is the art and science of designing and building large structures. Large systems, whether buildings, bridges, novels, hardware, or software, require architectures to manage their size and complexity. Architectures are primarily concerned with structures and the interrelationship of the components that are used to build those structures.
Software architecture, defining systems in terms of components, relationships and rules or conditions, provides a structure for software and manages the size and complexity of large software systems.
Classification of software architectures into models can be used to explore the operational characteristics of software. An example of a model is a component-based model. Java-centric component architectures and ActiveX/DCOM architectures are specific examples of component architectures.
The following posts explore software architecture:
Component-Based Model Architectures
Generating Acknowledgments For Data Outside The Window
I described in a previous post that TCP was required to generate an acknowledgment in response to incorrect incoming acknowledgments. In particular, TCP sends an acknowledgment whenever the remote side acknowledges data that lies beyond the current output window. Procedure tcpackit generates such acknowledgments.
To prevent infinite loops, tcpackit does not respond to a RESET segment. For all others, it allocates a network buffer, fills in the TCP and IP headers, sets the ACK bit (i.e., bit TCPF_ACK in field tcp_code), and calls ipsend to forward the datagram on toward its