Varying needs introduce varying complexity
- Protocols address a wide variety of problems and needs.
They employ many mechanisms, in combination:
- sequence numbers,
- adaptive timeouts,
- negative acknowledgments,
- piggybacking,
- pipelining,
- sliding-windows, and
- fragmentation.
- Multiple techniques often exist in a single protocol,
with increased complexity.
- Layered protocols encourage a distinct header for each layer and
(ideally) an independence between layers.
- Much common work
(e.g. checksums and sequence numbers)
is implemented in multiple layers.
- Protocols attempting "optimal" delivery of their data will
assess current conditions of:
- bandwidth and its effect on timing,
- frame capacities as dictated by the lower layer,
- expected and observed error rates,
- expected and observed round-trip times,
- level of activity (on shared media),
- priority of data to be delivered, and
- the importance of reliable delivery.
|