Kalid's Math and Science Pages

General Networking Themes

Have common, narrow interface

Have a single abstraction that all high and low-level components agree to implement. Take IP, for example, which is used by higher-level protocols (TCP, UDP) and low-level, link-layer protocols (Ethernet, PPP, FDDI). All of these protocols agree to support IP, which allows any of them to interact through a common interface.

This is much better than having a direct TCP to Ethernet protocol - it is too specific. What if you want to run TCP on FDDI? Rather than make a new protocol for each hardware type, have everyone agree to support one protocol, and use it as a common point.

Efficiency/Granularity Tradeoff

This tradeoff, along with time/space, shows up everywhere (specifically, in allocating CPU time). In this case, sending out huge packets is more efficient than sending small ones (better header-to-data ratio). However, some programs need to send lots of little packets for a fast response (i.e, telnet keyboard commands). With large packets, it is hard to send high-priority packets once processing has begun on a huge low-priority packet. Small packets minimize this delay.

Main idea: Bigger chunks are more efficient, but less responsive.

General principle of robustness

Be conservative in what you do, be liberal in what you accept from others. (See TCP's RFC793, section 2.10).


Send questions, comments, etc. to Kalid at <>. Last modified 01/01/2003 10:24 AM