Professional Documents
Culture Documents
Lớp : AT2C
1
Mục lục
2
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.
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.
3
Lệnh
Sơ cấp Thứ cấp
Đáp ứng
Lệnh
Sơ cấp
Đáp ứng Đáp ứng
4
+ 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.
+ Kết hợp đặc điểm của cả trạm sơ cấp và trạm thứ cấp.
+ Bao gồm một trạm sơ cấp, một hoặc nhiều trạm thứ cấp.
- 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.
5
III. Cấu trú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.
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:
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.
6
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ụ:
111111111111011111101111110
1111101111101101111101011111010
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.
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ả).
7
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.
Tương ứng với 3 khuôn dạng của frame có 3 loại trường điều khiể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).
+ Ý nghĩa là bit P.
+ 1 để mời gọi (Poll) khung đáp ứng của các trạm ngang hàng.
8
- 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.
9
Khung thông tin và khung giám sát có thể mở rộng 16 bit
Hình 4
Chỉ có trong các khung thông tin (I-frame) và một số khung không số (U-frame).
Chiều dài thay đổi, giới hạn tùy thuộc vào hệ thống.
* Trường FCS
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.
10
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.
11
Sơ cấp A Thứ cấp B
(a) SNRM(B.P=1)
V(S):=0
V(R):=0
UA(B.F=1) V(S):=0
V(R):=0
Chuyển số liệu
DISC(B.P=1)
Sơ cấp cắt cầu nối
V(R):=0
V(S):=0
UA(B.F=1)
V(R):=0
Chuyển số liệu
Sơ cấp cắt cầu nối
DISC(B.P=1)
(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ì
12
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ý.
+ SNRM/SNRME.
+ SARM/SARME.
+SABM/SABME.
- Nếu không đồng ý kết nối gửi lại U-frame DM (Disconnected Mode).
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).
- Cơ chế ACK:
+ 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
13
- 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:
U-frame:
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).
14
Ví dụ hoạt động của HDLC:
A B A B
I, 0, 0
SABM
Time I, 0, 1
-out
I, 1, 1
SABM
I, 2, 1
UA I, 1, 3
I, 3, 2
I, 2, 4
DISC I, 3, 4
UA RR,4
(a) Thiết lập, kết thúc liên kết (b) Trao đổi dữ liệu 2 chiều
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.
15
A B
A B I, 3, 0
I, 4, 0
I, 3, 0
I, 5, 0
RNR, 4
RNR,4,F
I, 4, 0
RR, 0,P I, 5, 0
RNR,4,F I, 6, 0
I, 4, 0
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.
16
A B
SABM
I, 3, 0 RR, 3
Time
-out
RR, 0, P
RR,3,F
I, 3, 0
RR, 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.
17