HDLC | Protocol | High Level Link Control Protocol | Frames | Working | History | ISO Standard | Modes
What is HDLC?
HDLC is a standard synchronous communication protocol that works at Data Link Layer of OSI reference model. High-level Data Link Control is a set of rules for transmitting data between nodes in layer2 of data link layer of OSI reference model. It also control the flow/pacing of data sent and correct errors by embedding information in a data frame.
HDLC protocol was defined by ISO for both point-to-point and multipoint data links. It uses half duplex or full duplex mode of communication. HDLC is a bit-oriented protocol.
HDLC protocol provides either a best effort or reliable communications path between the transmitter and receiver with acknowledged data transfer by using the services of a physical layer. The type of service provided depends upon the HDLC modes used for data transfer.
History of HDLC
HDLC protocol was developed by the International Organization for Standardization (ISO) for point-to-point communication. Later on it was adapted by the International Telecommunication Union (ITU) for X.25 Link Access protocol. HDLC was developed from SDLC (Synchronous Data Link Connection) standard proposed in 1970s by IBM.
ISO standard for HDLC
The original ISO standards for HDLC are as follows:
- ISO 3309-1979 – Frame Structure
- ISO 4335-1979 – Elements of Procedure
- ISO 6159-1980 – Unbalanced Classes of Procedure
- ISO 6256-1981 – Balanced Classes of Procedure
The current standard for HDLC is ISO/IEC 13239:2002, which replaces all of those standards.
Modes of Data Transfer in HDLC | HDLC Modes
Every data communication is either from the sender to receiver or vice-versa. The frames include only one address either sender or receiver. The primary terminal i.e. Sender is not assigned an address. There is a distinction between commands sent by sender to receiver, and responses sent by a receiver to the sender, but this is not shown in the encoding; commands and responses have no difference except the direction in which they are transmitted.
Normal Response Mode (NRM):
The sender give permission to receivers to transmit one frame at a time. The operation is performed over half-duplex communication links, as long as the sender is aware that it may not transmit when it has given permission to a receiver. That is the reason why Normal response mode allows the secondary-to-primary link to be shared without contention.
Asynchronous Response Mode (ARM):
The operation is performed over full-duplex communication links. While retaining the sender/receiver distinction, it allows the receiver to transmit at any time.
Asynchronous Balanced Mode (ABM):
It adds the concept of a combined terminal which can act as both a sender and a receiver. Unfortunately, this mode of operation has some implementation subtleties.
At the time of data transfer each and every piece of data is encapsulated in an HDLC frame by adding header and trailer. The header contains HDLC address and HDLC control field. The trailer is added at the end of the frame which contains a Cyclic Redundancy Check (CRC). CRC detects errors that may occur during transmission. The frames are separated by HDLC flag sequences whenever there is no data to be transmitted. HDLC flag sequences are transmitted between each frame.
How HDLC Protocol Work?
HDLC is a bit-stream protocol (bit streams are not broken into individual characters) that uses a 32-bit checksum for error correction and supports full-duplex communication. HDLC frames consist of a flag byte followed by address and control information, data bits, and a CRC byte. A control field at the start of a frame is used for establishing and terminating data link connections.
Information Frames (I-Frames):
I-Frame carries information about data along with the original data. Data is stored in information field and instructions are stored in control field.
- 1st bit is always 0 that indicates it is an I-Frame.
- 2nd, 3rd and 4th bits are called N(S) tells the sequence numbers of the frames. The numbers lies between (000-111) 0 to 7.
- 5th bit is P/F. P indicates Poll and F indicates Final. P is 1 when frame is sent from sender to receiver and F is 1 when frame is sent from receiver to sender.
- 6th, 7th and 8th bits are called N(R) contain the sequence number of frame that is expected in return in two way communication.
- If last frame received will be error-free then only the sequence number of N(R) will change otherwise it will ask to resubmit the previous frame.
Supervisory Frames (S-Frames):
S-Frame are used for data flow and error control whenever piggybacking is impossible or inappropriate, such as when a user does not have data to send. S-frames doesn’t contain information fields.
- 1st and 2nd bit are always 1 and 0 respectively to indicate S-Frames.
- 3rd and 4th fields are called code that can have values 00(Receive Ready),01(Reject),10(Receive Not Ready) or 11(Selective Reject)
- 5th bit is P/F. P=1 when frame is sent to receiver and F=1 when frame is sent to sender back.
- 6th, 7th and 8th bits are called N(R) represents ACK or NAK value i.e. whether the received frame had error or it was error-free.
Unnumbered Frames (U-Frames):
U-Frames are used for miscellaneous purposes such as link management. Depending on the type, U-frames may have an information field. They are reserved for system management. It is used for session management and control information between 2 connected devices.
- 1st and 2nd bits are always 11 in control field that indicates U-Frames.
- There is no N(S) or N(R) bits.
- Information field contain system management information.
- 3rd, 4th bits code are called hit and 6th, 7th and 8th code are called bit.
- 5th bit is P/F.
- The five bits of code fields can generate 32 U-frames.