You are on page 1of 8

BÀI TẬP LỚN MÔN TRUYỀN SỐ LIỆU

Đề tài: tìm hiểu giao thức HDLC (High-level Data Link Control).

Sinh viên thực hiện : Lưu Văn Đông.


Lớp : AT2C

Mục lục

I. Giới thiệu giao thức HDLC……………………………………3


II. Các đặc tính cơ bản của giao thức HDLC……………………4
III. Cấu trúc, khuôn dạng của frame……………………………...6
1. Cấu trúc chung……………………………………… ……..6
2. Các trường của frame……………………………………... 6
IV. Hoạt động của giao thức HDLC……………………………...11

I. Giới thiệu giao thức HDLC


Giao thức HDLC là giao thức liên kết dữ liệu mức cao, thuộc tầng 2 –tầng liên kết dữ
liệu-trong mô hình tham chiếu OSI.
Giao thức HDLC là một giao thức chuẩn hóa quốc tế và đã được định nghĩa bởi ISO để
dùng cho cả liên kết điểm- nối- điểm và đa điểm. Nó hỗ trợ hoạt động ở chế độ trong
suốt, song công hoàn toàn và ngày nay được dùng một cách rộng rãi trong các mạng đa
điểm và trong các mạng máy tính. Tiền thân của HDLC là giao thức SDLC
(Synchronuous Data Link Control). Đây là một nghi thức liên kết dữ liệu rất quan trọng,
rất nhiều nghi thức liên kết dữ liệu khác tương tự hoặc dựa trên nghi thức này. HDLC là
một nghi thức hướng đến bit.
Đặc điểm chung của giao thức HDLC là:
- Hoạt động ở chế độ full-duplex.
- Liên kết điểm-nối-điểm hoặc đa điểm.
- Truyền dẫn đồng bộ.
- Điều khiển lỗi “Continuous RQ”.
Do HDLC đã được định nghĩa như là một giao thức điều khiển liên kết số liệu tổng quát,
nên chúng ta có thể dùng nó trong một số cấu hình mạng khác nhau, như trình bày ở trên
hình 1. Trong HDLC, các frame được gửi từ trạm sơ cấp đến trạm thứ cấp được gọi là các
lệnh (command) và các frame được gửi từ thứ cấp đến sơ cấp được gọi là các đáp ứng
(response). Hai cấu hình được trình bày trong phần (a) và (b) chỉ có một trạm sơ cấp
được gọi là cấu hình không cân bằng, trong khi đó phần (c) có hai trạm sơ cấp và được
gọi là cấu hình cân bằng. Trong cấu hình cân bằng, vì mỗi trạm đều có phần sơ cấp và cả
thứ cấp, nên chúng được gọi là các trạm kết hợp.

Hình 1 Cấu hình mạng dùng HDLC:


(a) Điểm-nối-điểm với một sơ cấp và một thứ cấp
(b) Đa điểm với một sơ cấp và nhiều thứ cấp
(c) Điểm-nối-điểm với hai sơ cấp và hai thứ cấp.
II. Các đặc tính cơ bản của giao thức HDLC.
• Phân loại các trạm:
- Trạm chính, trạm sơ cấp (Primary Station)
+ Điều khiển hoạt động của liên kết.
+ Các khung (frame) phát ra được gọi là lệnh (command).
- Trạm phụ, trạm thứ cấp (Secondary Station)
+ Hoạt động dưới sự điều khiển của trạm sơ cấp.
+ Các khung phát ra được gọi là đáp ứng.
+ Trạm sơ cấp duy trì các liên kết luận lý riêng cho các trạm thứ cấp.
- Trạm kết hợp (Combined Station)
+ Kết hợp đặc điểm của cả trạm sơ cấp và trạm thứ cấp.
+ Có thể phát ra các lệnh và đáp ứng.
• Cấu hình liên kết:
- Không cân bằng (Unbalanced)
+ Bao gồm một trạm sơ cấp, một hoặc nhiều trạm thứ cấp.
+ Hỗ trợ truyền Half-Duplex và Full-Duplex.
- Cân bằng (Balanced)
+ Bao gồm 2 trạm tổ hợp.
+ Hỗ trợ truyền Half-Duplex và Full-Duplex.
• Các chế độ hoạt động của giao thức HDLC
HDLC có 3 chế độ hoạt động:
- Chế độ đáp ứng thông thường NRM (Normal Response Mode): Chế độ này được dùng
trong cấu hình không cân bằng. Trong chế độ này, trạm sơ cấp khởi động việc trao đổi dữ
liệu, trạm thứ cấp chỉ có thể truyền khi nhận được chỉ thị đặc biệt của trạm sơ cấp. Liên
kết này có thể là điểm-nối-điểm hay đa điểm. Trong trường hợp đa điểm chỉ cho phép
một trạm sơ cấp.
- Chế độ đáp ứng bất đồng bộ ARM (Asynchronous Response Mode): Chế độ này cũng
được dùng trong cấu hình không cân bằng. Nó cho phép một trạm thứ cấp xúc tiến một
hoạt động truyền mà không cần sự cho phép từ trạm sơ cấp. Chế độ này thường được
dùng trong các cấu hình điểm-nối-điểm và các liên kết song công và cho phép thứ cấp
truyền các frame một cách bất đồng bộ với sơ cấp.
- Chế độ cân bằng bất đồng bộ ABM (Asynchronous Balanced Mode): Chế độ này được
dùng chủ yến trên các liên kết song công điểm-nối-điểm cho ứng dụng truyền số liệu máy
tính-đến-máy tính và cho các kết nối giữa máy tính và mạng số liệu công cộng (PSDN).
Trong chế độ này, mỗi trạm có một trạng thái như nhau và thực hiện cả hai chức năng sơ
cấp và thứ cấp. Nó là chế độ được dùng trong giao thức nổi tiếng X.25.

III. Cấu trúc, khuôn dạng của frame


1. Cấu trúc chung.
* Các khuôn dạng của frame
Không giống như BSC, trong HDLC cả số liệu và thông tin điều khiển đều được tải trong
cùng một dạng frame chuẩn. Dạng frame này được trình bày trên hình 2 cùng với các
kiểu frame khác nhau được xác định trong vùng điều khiển của phần header. Có 3 nhóm
frame được dùng trong HDLC:
- Các frame không đánh số: Các frame này được dùng cho các chức năng như thiết lạp
liên kết và xóa liên kết. Tên được gọi là không đánh số vì chúng không chứa bất kf thông
tin báo nhận bào, nên cũng không có chỉ số tuần tự.
- Các frame thông tin: Các frame này mang các thông tin thực hay số liệu và thường được
xem như là các I-frame. Các I-frame cũng có thể được dùng để tải thông tin báo nhận liên
hệ đến luồng I-frame theo hướng ngược lại khi liên kết đang hoạt động ở chế độ ABM
hay ARM.
- Các frame quản lý: Các frame này được dùng đẻ kiểm soát lỗi và điều khiển luồng, do
đó chứa các số tuần tự truyền và nhận.
* Cấu trúc chung của một frame:
HDLC sử dụng chế độ truyền tải đồng bộ, các bit dữ liệu truyền đi được gói vào trong
các khung và sử dụng một cấu trúc khung cho tất cả các loại dữ liệu cũng như thông tin
điều khiển.
Cấu trúc khung trong giao thức HDLC có dạng như sau:

Hình 2 Cấu trúc chung của một frame


2. Các trường của Frame.
* Cờ điều khiển (Flag)
Dùng để phân cách khung (đầu và cuối), xác định điểm bắt đầu và kết thúc của khung.
Giá trị: 01111110
Có thể dùng vừa là kết thúc khung này, vừa là bắt đầu khung khác
Sử dụng kỹ thuật chèn bit (bit stuffing) để tránh xuất hiện cờ trong dữ liệu
Bit stuffing: bit 0 được chèn thêm mỗi khi xuất hiện 5 số 1 liên tiếp trong phần dữ liệu.
Ví dụ:
Phần dữ liệu ban đầu là:
111111111111011111101111110
Phần dữ liệu sau khi sử dụng kỹ thuật Bit Stuffing:
1111101111101101111101011111010
* Trường địa chỉ (Address)
Dùng để xác định trạm thứ cấp đã gửi hoặc sẽ nhận khung.
Không cần thiết trong liên kết điểm-nối-điểm nhưng vẫn được giữ để nhất quán.
Trường địa chỉ thường dài 8 bit.
Nội dung của vùng địa chỉ phụ thuộc vào chế độ hoạt động. Trong NRM, ví dụ trên
đường dây đa nhánh, mỗi trạm thứ cấp đều được gán một địa chỉ duy nhất. Bất cứ khi nào
trạm sơ cấp thông tin với một trạm thứ cấp, thì vùng địa chỉ này chứa địa chỉ của trạm thứ
cấp. Có thể có địa chỉ được xem như là địa chỉ nhóm và được gán cho một nhóm các trạm
thứ cấp. Tất cả các frame được truyền với địa chỉ nhóm kèm theo sẽ được tất cả các trạm
thứ cấp trong nhóm nhận. Tương tự, một địa chỉ broadcast (quảng bá) có thể được dùng
để truyền cho tất cả các trạm thứ cấp trên liên kết.
Khi một trạm thứ cấp gửi một thông điệp phúc đáp cho sơ cấp, vùng địa chỉ luôn chứa địa
chỉ duy nhất của thứ cấp này. Trong trường hợp các mạng lớn có nhiều trạm thứ cấp,
vùng địa chỉ có thể được mở rộng hơn 8 bit. Bit có ý nghĩa nhỏ nhất trong mỗi vùng 8 bit
được dùng để chỉ định phía sau nó có một octet (byte) nào khác không. Nếu bit này là 0
thì phía sau có một octet khác, ngược lại thì đây là octet sau cùng (hay chỉ có một octet).
Lưu ý rằng trong ABM vùng địa chỉ không được dùng theo cách này bởi chỉ có các liên
kết điểm-nối-điểm trực tiếp. Thay vì vậy, nó được dùng để dịnh hướng cho các lện và các
đáp ứng liên hệ với chúng.
Khi trường địa chỉ có giá trị là 11111111 thì đây là địa chỉ broadcast (gửi đến tất cả).
Vùng địa chỉ nhận dạng trạm thứ cấp đã gửi frame, và là vùng không cần đến trong các
liên kết điểm-nối-điểm. Tuy nhiên, đối với liên kết đa điểm thì vùng địa chỉ có thể là 8
bit_chế độ thường_ hoặc là bội số của 8 bit_chế độ mở rộng. Trong trường hợp sau, bit 1
của octet địa chỉ có giá trị thấp nhất được set là 0 và bit 1 trong octet sau cùng được set là
1. Các bit còn lại hình thành nên địa chỉ. Trong cả hai chế độ, địa chỉ có tất cả các bit đều
là 1 được dùng làm địa chỉ broadcast.
* Trường điều khiển (Control)
Trường này dùng để xác định loại khung.
Tương ứng với 3 khuôn dạng của frame có 3 loại trường điều khiển:
- Khung thông tin I-frame chứa dữ liệu cần truyền
Điều khiển dòng và điều khiển lỗi được gửi kèm trong các khung thông tin
(Piggybacking).
- Khung giám sát (S-frame, Supervisor Frame) dùng cho ARQ khi Piggybacking không
được dùng.
- Khung không số (Unnumbered frame, U-frame) bổ sung các chức năng điều khiển liên
kết.

Hình_3: 8 bit trường điều khiển được hình thành 3 loại khung.
Giao thức HDLC sử dụng một cửa sổ trượt với số thứ tự khung 3 bít. Trường seq trong
khung I để chỉ số thứ tự của khung thông tin hiện tại. Trường Next để chỉ số thứ tự của
khung thông tin mà bên gởi đang chờ nhận ( thay vì là khung đã nhận tốt như giao thứ
cửa sổ trượt đã giới thiệu ở phần trước).
Bit Poll/Final: ý nghĩa tùy theo ngữ cảnh
- Trong khung lệnh (Command Frame)
+ Ý nghĩa là bit P.
+ 1 để mời gọi (Poll) khung đáp ứng của các trạm ngang hàng.
- Trong khung đáp ứng (Response Frame)
+ Ý nghĩa là bit F.
+ 1 là chỉ thị khung đáp ứng là kết quả của lệnh mời gọi.
Khung S (Supervisory Frame) là khung điều khiển, dùng để kiểm soát lỗi và luồng dữ
liệu trong quá trình truyền tin. Khung S có 4 kiểu được xác định bởi tổ hợp giá trị của 2
bit trong trường Type.

SS=00 RR (Receive Ready), là khung báo nhận, thông báo sẵn sàng nhận dữ liệu, đã
nhận tốt đến khung Next-1 và đang đợi nhận khung Next. Được dùng đến khi không còn
dữ liệu gửi từ chiều ngược lại để vừa làm báo nhận (Figgyback).
SS=01 REJ (Reject): đây là một khung báo không nhận (Negative Acknowledge), yêu
cầu gửi lại các khung từ khung Next.
SS=10 RNR (Receive Not Ready): thông báo không sẵn sàng nhận tin, đã nhận đến
khung thứ Next-1, chưa sẵn sàng nhận khung Next.
SS=11 SREJ (Selective Reject): yêu cầu gửi lại một khung có số thứ tự là Next.
Khung U (Unnumbered Frame) thường được sử dụng cho mục đích điều khiển đường
truyền, nhưng đôi khi cũng được dùng để gởi dữ liệu trong dịch vụ không nối kết. Các
lệnh của khung U được mô tả như sau:
1111P100 Lệnh này dùng để thiết lập chế độ truyền tải SABM (Set Asynchronous
Balanced Mode).
1100P001 Lệnh này dùng để thiết lập chế độ truyền tải SNRM (Set Normal Response
Mode).
1111P000 Lệnh này dùng để thiết lập chế độ truyền tải SARM (Set Asynchronous
Response Mode).
1100P010 Lệnh này để yêu cầu ngắt xóa nối kết DISC (Disconnect)
1100F110 UA (Unnumbered Acknowledgment). Được dùng bởi các trạm thứ cấp để báo
với trạm sơ cấp rằng nó đã nhận và chấp nhận các lệnh loại U ở trên.
1100F001 CMDR/FRMR (Command Reject/Frame Reject). Được dùng bởi trạm thứ cấp
để báo rằng nó không chấp nhận một lệnh mà nó đã nhận chính xác.

Khung thông tin và khung giám sát có thể mở rộng 16 bit


Sử dụng chỉ số tuần tự là 7 bit

Hình 4
* Trường thông tin (Information)
Chỉ có trong các khung thông tin (I-frame) và một số khung không số (U-frame).
Phải là một số nguyên các octet (8 bits).
Chiều dài thay đổi, giới hạn tùy thuộc vào hệ thống.
* Trường FCS
- Dùng để phát hiện lỗi.
- Được tính dựa trên các bit còn lại của khung.
- CRC 16 bit.
- Có thể dùng CRC 32 bit.
Tuần tự kiểm tra frame FCS (Frame Check Sequence) là một mã CRC 16 bit cho toàn bộ
phần nội dung của frame được đóng bởi 2 cờ. Đa thức sinh được dùng với HDLC thường
là CRC-CCITT:
X16 + X12 + X5 + 1
FCS được tăng cường bởi các thủ tục khác nhằm làm cho sự kiểm tra tinh vi hơn. Ví dụ
như thêm 6 bit 1 vào đuôi của số bị chia trước khi chia (thay vì bit 0) và đảo ngược số dư.
Điều này có tác dụng là làm cho số dư được tính lại bởi máy thu không phải tất cả đều là
0 mà là một mẫu bit đặc biệt_0001 1101 0000 1111.

IV. Hoạt động của giao thức


* Quản lý liên kết, tạo kết nối.
Trước khi truyền bất kỳ thông tin số liệu nào giữa sơ cấp và một trạm thứ cấp trên một
liên kết đa điểm hoặc giữa hai trạm được nối với nhau qua một liên kết điểm-nối-điểm,
một cầu nối luận lý giữa 2 chủ thể truyền tin phải được thiết lập. Điều này được hoàn
thành nhờ sự trao đổi 2 frame không đánh số, được trình bày trên hình 6.15.
Trong một liên kết đa điểm (hình 5(a)), trước tiên trạm sơ cấp truyền một SNRM- frame
với bit P/F được set là 1 và địa chỉ của thứ cấp được đặt trong vùng địa chỉ. Thứ cấp đáp
ứng bằng một UA- frame với bit kết (final) được set là 1 cùng với địa chỉ của nó trong
vùng địa chỉ. Như chúng ta có thể thấy, thủ tục thiết lập có tác dụng khởi động các biến
tuần tự trong mỗi trạm. Các biến này được dùng trong các thủ tục điều khiển luồng và
kiểm soát lỗi. Cuối cùng, sau khi tất cả số liệu đã được truyền, liên kết bị xóa khi sơ cấp
gửi một DISC- frame và thứ cấp đáp ứng một UA- frame.
Các lệnh và đáp ứng:

Hình 5 Thủ tục quản lý liên kết:


(a) Chế độ đáp ứng thông thường trên liên kết đa điểm.
(b) Chế độ cân bằng bất đồng bộ trên liên kết điểm-nối-điểm.
Thủ tục thiết lập một liên kết điểm-nối-điểm giống như thủ tục thiết lập liên kế được
dùng trong liên kết đa điểm. Tuy nhiên, trong ví dụ được trình bày trong hình 5(b) thì
ABM được chọn và do đó một SABM- frame được truyền trước tiên. Trong chế độ này
cả 2 phía của liên kết đều có thể khởi động truyền các I- frame một cách độc lập, vì vậy
mỗi trạm thường là một trạm kết hợp cả sơ cấp và thứ cấp. Cả hai trạm đều có thể khởi
động và xóa liên kết trong chế độ này. Trong hình 5(b) , trạm A khởi động thiết lập liên
kết còn trạm B khởi động xóa cầu nối luận lý này (sau khi đã truyền xong dữ liệu). Chỉ
cần một lần trao đổi các frame này đã thiết lập một liên kết theo cả hai hướng. Như chúng
ta có thể thấy, vùng địa chỉ được dùng để định hướng cho frame lệnh ( SABM/DISC) và
các đáp ứng liên hệ với nó.
Nếu máy thu từ chối lệnh thiết lập cầu nối trong cả 2 chế độ, nó sẽ phúc đáp một DM-
frame (Disconnected Mode-frame) khi nhận frame xác lạp chế độ (SNRM hoặc SABM).
DM-frame chỉ ra rằng trạm đang đáp ứng cắt cầu nối luận lý.
Tóm tắt quá trình khởi tạo kết nối:
- Gửi U-frame khởi tạo 1 trong 6 chế độ:
+ SNRM/SNRME.
+ SARM/SARME.
+SABM/SABME.
- Nếu đồng ý kết nối gửi lại U-frame UA (Unnumbered Acknowledged).
- Nếu không đồng ý kết nối gửi lại U-frame DM (Disconnected Mode).
* Trao đổi dữ liệu
Sau khi đã thiết lập kết nối giữa các trạm thì quá trình trao đổi dữ liệu bắt đầu được diễn
ra.
I-frame:
Cả hai bên đều có thể gửi I-frame (chỉ số tuần tự bắt đầu từ 0).
- Mỗi frame có số thứ tự N(S)
- Cơ chế ACK:
+ N(S) = số thứ tự của frame đang gửi
+ N(R) = số thứ tự của frame đợi nhận tiếp theo, xác nhận đã nhận OK các frame có số
thứ tự đến N(R)-1
- Sử dụng 3 hoặc 7 đánh số thứ tự các frame: Kích thước cửa sổ cực đại là 7 hoặc 127
- P/F: Trong NRM, chế độ hỏi vòng của primary (P=1), secondary thiết lập F=1 khi gửi
đáp ứng với khung I cuối cùng
S-frame:
Các S-frame có thể được dùng để điều khiển dòng và điều khiển lỗi nếu:
- RR : SS=00, ACK đã nhận OK N(R)-1 frame.
- RNR : SS=10, bên nhận bận, sau đó phải phát RR để tiếp tục nhận dữ liệu. ACK đã
nhận OK frame N(R)-1, không nhận tiếp các I-frame.
- REJ : SS=01, NACK frame N(R) đầu tiên có lỗi, phải gửi lại frame N(R) và các frame
sau đó.
- SREJ : SS=11, NACK cho frame N(R) và yêu cầu truyền lại frame này (Selective
Repeat).
U-frame:
- Cung cấp commands + response: mode settings, recovery
- Mode settings: thiết lập chế độ liên kết
+ SABM: Set Asynchronous Balanced Mode
+ UA: ACK đã chấp nhận các lệnh thiết lập chế độ
+ DISC: Hủy bỏ liên kết logic đã thiết lập
- Truyền tin giữa các trạm sử dụng unnumbered info (UI)
- Recovery: khi error/flow control không thực hiện được
+ FRMR: frame có FCS đúng, nhưng sai cú pháp
+ RSET: Tx khởi tạo lại số thứ tự các frame được gửi
* Ngắt các kết nối
Một trong hai bên ngắt kết nối bằng cách gửi U-frame DISC (Disconnect).
Bên kia phải chấp nhận ngắt kết nối, gửi lại U-frame UA (Unnumbered
Acknowledgement)
Các khung quá độ có thể bị mất (việc phục hồi phải do các lớp trên).

Ví dụ hoạt động của HDLC:

Hình (a) mô tả các khung liên quan trong quá trình thiết lập và xóa nối kết. Đầu tiên một
trong hai bên giao tiếp sẽ gởi khung SABM sang bên kia và thiết lập một bộ đếm thời
gian. Bên phía còn lại khi nhận được khung SABM sẽ trả lời bằng khung UA. Bên yêu
cầu nối kết khi nhận được khung UA sẽ xóa bỏ bộ đếm thời gian. Nối kết đã được hình
thành và hai bên có thể truyền khung qua lại cho nhau. Nối kết sẽ xóa đi nếu một trong
hai bên giao tiếp gởi khung DISC. Trong một trường hợp khác, nếu sau một khoảng thời
gian trôi qua, bên yêu cầu nối kết không nhận được khung UA, nó sẽ cố gắng gởi lại
khung SABM một số lần qui định. Nếu vẫn không nhận được khung UA, bên yêu cầu nối
kết sẽ thông báo lỗi lên tầng cao hơn.
Hình (b) mô tả tiến trình trao đổi khung I giữa hai bên. Ta thấy rằng bên A gởi liên tiếp
các khung (I,1,1 và I,2,1) mà không nhận được khung báo nhận thì số thứ tự của khung
chờ nhận vẫn không thay đổi, trong trường hợp này là 1. Ngược lại khi bên B nhận liên
tiếp các khung (I,1,1 và I,2,1) mà không gởi khung nào đi, thì khung chờ nhận kế tiếp của
khung thông tin truyền đi phải là số kế tiếp của khung vừa nhận, là 3.

Trong hình (c) máy A không thể xử lý kịp các khung do B gởi đến vì thế nó gởi khung
RNR để yêu cầu B tạm dừng việc việc truyền tải. Bên B định kỳ gởi thăm dò bên A bằng
cách gởi khung RR với bit P được đặt lên 1. Nếu bên A vẫn chưa thể nhận thông tin từ
bên B nó sẽ trả lời bằng khung RNR, ngược lại nếu A đã sẵn sàng thì nó sẽ trả lời bằng
khung RR.
Trong hình (d), bên A gởi sang B ba khung thông tin 3,4 và 5. Khung 4 bị mất hoàn toàn
trên đường truyền. Khi bên B nhận được khung 5, nó sẽ bỏ qua khung này vì sai thứ tự
khung. B gởi REJ với trường Next là 4 để yêu cầu A gởi lại tất cả các khung từ khung số
4.

Hình (e) minh họa cách thức phục hồi lỗi dựa vào thời gian (timeout). Khung số 3 bị lỗi
và do đó B bỏ nó. B không thể gởi khung REJ vì nó không thể xác định được đó có phải
là khung I hay không. Bên A sau một khoảng thời gian trôi qua không thấy khung trả lời
từ B, nó sẽ gởi khung RR với bit P=1 để kiểm tra trạng thái của bên kia. Bên B sẽ đáp lại
bằng khung RR với trường Next là 3 để báo hiệu khung số 3 đã mất. Sau đó A sẽ truyền
lại khung số 3.

You might also like