HDLC
HDLCは、High-Level Data Link Controlの略です。ハイレベルデータリンク制御手順とも呼ばれます。ISOによって標準化されたデータリンク層のプロトコルで、専用線や回線交換で使用されています。
ポイントツーマルチポイントにおける通信が可能ですが、現在では、ABM(Asynchronous Balanced Mode)を使ったポイントツーポイントでの通信で使用されています。
HDLCは、各種のプロトコルの原型になっており、X.25、ISDNのレイヤ2プロトコル、フレームリレーやPPPの手順の原型となっています。
同期方式としてフラグ同期を使用し、フレームの先頭と最後にフラグシーケンス「01111110」の8ビットが付加されてフレームが送信させるようになっています。
また、誤り検出のため、16ビットのFCSフィールドが定義されており、検出方式には、CRC方式を採用されています。この仕組みにより、複数ビットに及ぶバースト誤りも検出することができます。
下の図は、HDLCフレームのフォーマットです。

フィールド名 | 説明 |
フラグシーケンス | フレームの始まりと終わりを示す「01111110」。送信側では5つの連続した1が出現した場合、6ビット目に強制的に0を挿入するようになっています。受信側では、この0は取り除き上位層に渡します。 |
アドレス部 | アドレスフィールド |
制御部 | 制御フィールド |
FCS | フレームチェックシーケンス。誤り検出の為に使用されます。 |
上図を見れば気づくと思いますが、HDLCヘッダには、ネットワーク層プロトコルを識別するための情報が入っていません。これを補完する為に、HDLCは各ベンダーごとに独自の実装を行っています。そのため、ベンダー間の通信ができないのが一般的です。
例えば、Ciscoルータでは、Cisco HDLCを採用しており、ISO標準のフレームフォーマットとは、少し違います。

HDLCは、ベンダーごとに仕様が異なっている場合があるので、ベンダー間の通信では、PPPなどの別のプロトコルでカプセル化を行う必要があります。
Cisco HDLC
HDLCは、IBMが開発したSDLCをベースにISOよって標準化されたデータリンク層のプロトコルです。このISOによって標準化されたHDLCをISO HDLCと言います。一般的にHDLCは、同期シリアル回線で使用されます。
下の図を見て下さい。ISO HDLCでは、ヘッダ内にネットワーク層のプロトコルを示すフィールドがありません。そのため、ISO HDLCでは、単一のネットワーク層のプロトコルしか使用することができません。

ISO HDLCでは、マルチプロトコル環境をサポートしていない為、これを補完する為に、HDLCは各ベンダーごとに独自の実装を行っています。Ciscoでは、独自フィールドを追加したCisco HDLCを採用しています。

そのため、HDLCでは、ベンダー間の通信ができないのが一般的です。
つまり、HDLCを利用する場合、そのベンダー専用の機器を用意しなければなりません。その為、WANリンクの両端の機器が異なるベンダー機器の場合は、PPPが利用することになります。
CiscoルータのSerialインターフェイスのデフォルトのカプセル化は、Cisco独自のHDLCです。「show interfaces serial」コマンドで確認することができます。
Router#show interfaces serial 0
●Serialのカプセル化(Cisco2500)
Serial0 is up, line protocol is up
Hardware is HD64570
Internet address is 192.168.2.1/24
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 1/255
Encapsulation HDLC, loopback not set, keepalive set (10 sec)
Last input 00:00:09, output 00:00:06, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0 (size/max/drops); Total output drops: 0
Queueing strategy: weighted fair
Output queue: 0/64/0 (size/threshold/drops)
Conversations 0/1 (active/max active)
Reserved Conversations 0/0 (allocated/max allocated)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
5 packets input, 367 bytes, 0 no buffer
Received 5 broadcasts, 0 runts, 0 giants
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
8 packets output, 757 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
0 output buffer failures, 0 output buffers swapped out
2 carrier transitions
DCD=up DSR=up DTR=up RTS=up CTS=up