This document discusses the hierarchical structure of network software and protocols. It explains that networks are organized into layers, with each layer communicating with the same layer on other machines using protocols. Data is passed between layers down the hierarchy, with each layer able to add header information. The layers, protocols, and interfaces together make up the network architecture. Key issues addressed by different layers include addressing, error control, flow control, multiplexing/demultiplexing, and routing. Connection-oriented and connectionless services are described, as well as the service primitives each uses. Finally, the relationship between services and protocols is explained.