There is a two-byte CRC field for error detection and several possible ways to take care of acknowledgements and retransmissions when needed. The sender might wait idle for acknowledgement but usually there is a circular buffer of sent frames waiting for acknowledgement. The receiver may ask for retransmission of a specific frame (selective reject) or all frames since a given frame (go back N) . The buffer length of eight frames might be too small, if the time to wait for an acknowledgement is long, e.g. over satellite links, but an extended numbering scheme of 128 buffers is available.
The receiving modem may ask the sending modem to wait, either explicitly or indirectly by refraining from sending acknowledgements. This type of flow control only works between the two modems. How could it be extended if there is a need of flow control between the sending and receiving computers?
A general purpose modem is going to be used over many kinds of connections. Some of these are very reliable while others are not. Moreover, some of the applications using modems are very sensitive to errors while other applications are less sensitive and might require low delays instead. For these reasons the frame length should be variable. There is no lenght field in the HDLC frame, just the end-of-frame mark. It is up to the sender of the frames to determine the suitable frame length. If many retransmissions are needed between modems, the sender should be somehow notified of this so that the frame length can be shortened. The UI (Unnumbered Information) frame type can be used when retransmissions are not wanted even if there are errors.
Some customers might want encryption at the link level (modem to modem). This is not reflected in the HDLC frame structure but might be included in the modem software (possibly as an option) if there seems to be sufficient demand for the service.