There are also hardware and software based analyzers. The network analyzers allow one to display, capture and log packets on the network. They can also be set up to filter packets on either addresses, protocol types or both. While it is possible, and usually recommended, that simple, first pass implementations of the Initialization, Transmit and Receive functions be developed, these must eventually be improved to offer both the robustness and performance required by the full system. It is in these aspects that these network tools can be invaluable.
Problems usually occur when systems are stressed or when unexpected input is encountered.
Packet generators can, and should, be able to produce both such situations under full control of the user. Equally so it is very good design practice to know what the rest of the system does under these conditions. Systems can obviously only operate within certain limits based upon resources and processor performance. Under abnormal conditions systems should deterministically degrade. Those functions that are considered critical to the system should retain their correct operation at the expense of other non-critical components.