Each layer of a network reference model must solve certain common design issues: addressing, error control, flow control, multiplexing, routing, data-transfer mode, connection type, sequencing, fragmentation, congestion/QoS and security.
- Addressing: every layer needs a way to identify senders and receivers (e.g. MAC address at data link, IP address at network, port numbers at transport).
- Error control: channels are imperfect, so layers use error-detecting/correcting codes (parity, CRC, checksums) and agree on how to report and recover from errors (acknowledgements, retransmission).
- Flow control: prevents a fast sender from overwhelming a slow receiver (e.g. stop-and-wait, sliding window).
- Sequencing (ordering): messages may arrive out of order, so they are numbered and reassembled in the correct order.
- Fragmentation and reassembly: some processes cannot accept very long messages, so data is broken into smaller units and reassembled at the destination.
- Multiplexing and demultiplexing: several conversations share one connection or link to save cost; the layer must separate them again at the receiver.
- Routing: when there are many paths between source and destination, a route must be chosen (network layer).
- Data-transfer mode: simplex, half-duplex or full-duplex communication, and how many logical channels with what priority.
- Connection-oriented vs connectionless service: whether a connection is set up before data transfer (TCP) or each packet is independent (UDP).
- Congestion control and quality of service: sharing network resources fairly and meeting delay/bandwidth needs of real-time traffic.
- Security: confidentiality, authentication and integrity against attacks.
- Scalability and evolution: the design must keep working as the network grows and allow protocols in one layer to change without affecting others.