Khởi đầu, Hình (a):
Bên gởi: chưa gởi khung nào nên kích thước của cửa sổ là 0.
Bên nhận đang chờ nhận khung 0, kích thước cửa sổ là 1
Bên gởi gởi khung số0: Nó kiểm tra kích thước của cửa số trượt là 0, nhỏ hơn kích thước tối đa nên nó được phép gởi. Cửa trước của cửa sổ gởi di chuyển lên một bước chứa giá trị 0 là số thứ tự của khung báo nhận bên gởi đang chờ. Kích thước cửa sổ trượt lúc này là 1, đạt đến kích thước tối đa nên nó không được phép gởi thêm khung nữa (Hình b).
45 trang |
Chia sẻ: haohao89 | Lượt xem: 1927 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Giáo trình Mạng máy tính: Hoạt động của cửa sổ trượt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
4.4.4 Hoạt động của cửa sổ trượt
Ví dụ sau mô tả hoạt động của cửa sổ trượt với kích thước cửa sổ là 1, sử dụng 3 bits để đánh số
thứ tự khung (từ 0 đến 7).
H4.8 Hoạt động của cửa sổ trượt
Khởi đầu, Hình (a):
Bên gởi: chưa gởi khung nào nên kích thước của cửa sổ là 0.
Bên nhận đang chờ nhận khung 0, kích thước cửa sổ là 1
Bên gởi gởi khung số 0: Nó kiểm tra kích thước của cửa số trượt là 0, nhỏ hơn kích thước
tối đa nên nó được phép gởi. Cửa trước của cửa sổ gởi di chuyển lên một bước chứa giá trị
0 là số thứ tự của khung báo nhận bên gởi đang chờ. Kích thước cửa sổ trượt lúc này là 1,
đạt đến kích thước tối đa nên nó không được phép gởi thêm khung nữa (Hình b).
Bên nhận nhận được khung 0: nó kiểm tra và nhận thấy khung không có lỗi. Nó gởi khung
báo nhận số 0 về cho bên nhận. Đồng thời cửa sau của nó di chuyển để loại khung số 0 ra
khỏi cửa sổ trượt. Cửa trước cũng di chuyển để mở rộng kích thước cửa sổ đến giá trị tối
đa. Lúc này cửa sổ nhận chứa khung số 1 là khung mà nó đang chờ nhận tiếp (Hình c).
Bên gởi nhận được khung báo nhận số 0: Vì đây là khung báo hiệu bên nhận đã nhận tốt
nên cửa sau của cửa sổ gởi di chuyển để loại khung số 0 ra khỏi cửa sổ gởi. Lúc này cửa sổ
gởi có kích thước là 0, bên gởi có quyền gởi tiếp khung (Hình d)
Như vậy khi kích thước của cửa sổ trượt là 1, ta có giao thức stop-and-wait.
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 46
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
4.4.5 Cài đặt giao thức cửa sổ trượt kích thước 1 bit (A One-Bit Sliding
Window Protocol)
/* Số thứ tự của khung gởi đi kế tiếp */
/* Số thứ tự của khung báo nhận đang chờ nhận */
/* Khung nhận và khung gởi */
/* Gói tin chờ gởi */
/* Khởi động số thứ tự khung gởi */
/* Khởi động số thứ tự khung báo nhận chờ nhận */
/* Nhận gói tin từ tầng mạng để gởi đi */
/* Đưa gói tin dữ liệu vào khung để gởi */
/* Đặt số thứ tự cho khung */
/* Đặt số thứ tự báo nhận vào khung */
/* Đưa khung xuống tầng vật lý để gởi */
/* Khởi động bộ đếm thời gian */
/* Chờ sự kiện Khung đến, Khung bị lỗi, quá thời gian */
/* Một khung đến không bị lỗi */
/* Nhận khung từ tầng vật lý */
/* Kiểm tra có phải là khung đang chờ nhận không */
/* Lấy gói tin ra khỏi khung và chuyển lên tầng mạng */
/* Tăng số thứ tự của khung chờ nhận kế tiếp */
/* Nếu bên kia đã báo nhận khung vừa gởi */
/* Xóa bộ đếm thời gian */
/* Nhận gói tin kế tiếp từ tầng mạng để gởi đi */
/* Tăng số thứ tự của khung kế tiếp */
/* Đưa gói tin vào khung để gởi */
/* Đặt số thứ tự cho khung gởi */
/* Đặt số thứ tự khung báo nhận */
/* Đưa khung xuống tầng vật lý để gởi */
/* Khởi động bộ đếm thời gian */
/* Kích thước cửa sổ là 1 */
P4.4 Cài đặt cửa sổ trượt với kích thước là 1
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 47
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
4.4.6 Ví dụ về 2 kịch bản của giao thức trên
(a): Việc gởi nhận diễn ra bình thường theo đúng tuần tự
(b): Việc gởi nhận diễn ra theo một trình tự bất kỳ
Ký hiệu A send (seq, ack, packet number) để chỉ rằng A gởi B một khung có số thứ tự là seq,
đồng thời báo cho B biết A đã nhận được tốt khung có số thứ tự ack của B gởi sang. Khung chứa
gói tin thứ packet number. Dấu * biểu thị rằng khung tốt, và gói tin được lấy ra khỏi khung để
chuyển cho tầng mạng.
H4.9 Kịch bản giao thức cửa sổ trượt với kích thước là 1
1.1.1 Vấn đề điều khiển lỗi (Error Control)
Vấn đề kế tiếp cần phải quan tâm là bên nhận sẽ làm gì nếu khung bị lỗi.
Giải pháp đơn giản là truyền lại tất cả các khung bắt đầu từ khung thứ N bị lỗi. Nếu có những
khung khác được nhận trong khoảng thời gian này thì chúng đều bị bỏ qua. Đây gọi là giao thức
Go-Back-N.
Giải pháp thứ hai là chỉ truyền lại những khung bị lỗi, và chờ đến khi nó được gởi lại trước khi
tiếp tục việc gởi tin, gọi là giao thức Selective Repeat.
4.4.6.1 Giao thức Go-Back-N
Giao thức Go-Back-N thì rất đơn giản. Khi một khung bị lỗi. Bên nhận bỏ qua khung. Vì không
một báo nhận nào gởi về cho bên nhận nên sự kiện quá thời gian xảy ra, bên gởi phải gởi lại ung
bị lỗi và toàn bộ các khung phía sau nó.
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 48
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
Ví dụ:
H4.10 Giao thức Go-Back-N
Trong ví dụ trên, bên nhận phát hiện ra khung số 2 bị lỗi nó bỏ qua các khung sau đó (3,4,5,6,7,8),
chỉ chờ nhận lại khung số 2. Phía bên gởi chờ báo nhận từ bên nhận cho đến khi quá thời gian, nó
sẽ thực hiện gởi lại các khung 2, 3, 4, 5, 6, ....
Đoạn chương trình sau cài đặt giao thức Go-Back-N
/* Giao thức này cho phép nhiều khung được gởi đi. Bên gởi có thể gởi trước đến
à không cần chờ một báo nhận. Điểm lưu ý khác là tầng mạng không MAX_SEQ khung m
phải luôn luôn có dữ liệu sẵn sàng để gởi. Khi nào có dữ liệu để gởi, tầng mạng sẽ sinh ra
ột sự kiện network-layer- ready.*/ m
/* Kích thước lớn nhất của cửa sổ trượt, phải là 2k-1*/
/* True nếu a<=b<c */
/* Tạo khung gởi gói tin đi */
/* Khung để gởi gói tin đi */
/* Đưa gói tin vào khung */
/* Đặt số thứ tự cho khung gởi*/
/* Đặt số thứ tự cho khung cần báo nhận
/* Gởi khung xuống tầng vật lý để truyền đi */
/* Khởi động bộ đếm thời gian cho khung gởi đi*/
/* Số thứ tự cho khung gởi kế tiếp */
/* Khung lâu nhất chưa được báo nhận */
/* Khung chờ nhận kế tiếp /
/* Khung */
/* Vùng bộ nhớ đệm cho các khung gởi đi */
/* Số lượng bộ nhớ đệm đang được dùng */
/* Chỉ số mảng của vùng nhớ đệm */
/* Cho phép tầng mạng tạo sự kiện network_layer_ready */
/* Đặt báo nhận đầu tiên chờ nhận là 0 */
/* Khung đầu tiên gởi đi là 0 */
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 49
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
/* Chờ 1 trong 4 sự kiện liệt kê ở trên xảy ra */
/* Tầng mạng có một gói tin cần gởi đi */
/* Chấp nhận, lưu và truyền đi một khung mới */
/* Nhận khung từ tầng vật lý*/
/* Một khung dữ liệu hay điều khiển vừa đến */
/* Nhận khung từ tầng vật lý */
/* Tăng kích thước cửa sổ gởi */
/* Di chuyển cửa trước của cửa sổ gởi */
/* Là khung đang được chờ đợi */
/* Chuyển gói tin lên tầng mạng */
Di chuyển cửa sau của cửa sổ nhận */
/* Gởi khung đi */
/* Nếu là Ack thứ n, sẽ không quan tâm đến các ACK n-1, n-2, ... */
/* Xử lý các báo nhận */
/* Khung nhận bị lỗi, bỏ qua */
/* Giảm kích thước cửa sổ gởi */
/* Khung đã đến, xóa bộ đếm thời gian */
/* Tăng số thứ tự khung chờ nhận kế tiếp */
/* Quá thời gian, truyền lại tất cả các khung đang chờ báo nhận */
/* Bắt đầu truyền lại */
/* Chuẩn bị để truyền khung kế tiếp */
/* Truyền lại */
/* Vùng đệm còn khả năng chứa gói tin ? */
P4.5 Cài đặt giao thức Go-Back-N
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 50
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
4.4.6.2 Giao thức Selective Repeat
Trong giao thức này, khung bị lỗi bị bỏ đi, nhưng các khung nhận tốt sau đó đều được lưu lại tạm
thời trong vùng nhớ đệm. Khi quá thời gian, bên gởi chỉ gởi lại khung cũ nhất chưa được báo
nhận. Nếu khung này đến nơi chính xác, bên nhận có thể chuyển lên tầng mạng tất cả các khung
đã được lưu vào bộ nhớ đệm theo đúng thứ tự.
Trong giao thức này, bên nhận sử dụng khung Báo không nhận NAK (Negative Acknowledge)
khi phát hiện ra khung bị lỗi, ví dụ lỗi CRC, sai thứ tự gói tin. NAK sẽ được gởi về bên nhận trước
khi sự kiện quá thời gian báo nhận của khung bị lỗi xảy ra. Nhờ đó tăng được hiệu xuất truyền tin.
H4.11 Giao thức Selective Repeat với cửa sổ trượt lớn hơn 1
Trong ví dụ trên các khung 0, 1 được nhận tốt và đã được báo nhận, còn khung số 2 thì bị lỗi trên
đường truyền. Khi khung số 3 đến, tầng liên kết dữ liệu phát hiện lỗi về số thứ tự khung chờ nhận,
vì thế nó gởi khung NAK cho khung số 2 và lưu tạm thời khung số 3 vào vùng nhớ đệm. Tương
tự, các khung 4 và 5 cũng được lưu lại mà chưa chuyển lên tầng mạng (vì phải chờ nhận khung số
2).
Khi khung NAK 2 đến bên gởi, nó truyền lại ngay khung số 2.
Khi khung số 2 đến bên nhận, nó đã có đủ các khung 2,3,4,5 theo đúng thứ tự vì thế nó chuyển 4
khung này lên tầng mạng theo một thứ tự đúng đắn. Đồng thời bên nhận gởi về bên gởi khung
ACK 5 để báo rằng đã nhận tốt đến khung số 5.
Trong trường hợp khung NAK2 bị mất, không đến được bên gởi, thì sự kiện quá thời gian sẽ xảy
ra. Khi đó bên gởi cũng chỉ gởi lại khung số 2 mà thôi.
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 51
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
/* Giao thức này chấp nhận các khung đến không đúng thứ tự, nhưng chúng lại được chuyển
ầng mạng theo một thứ tự đúng đắn. Với mỗi khung gởi đi, sẽ có một bộ đếm thời gian
i kèm. Khi quá thời hạn chỉ khung tương ứng được gởi lại, thay vì gởi lại tất cả các khung
ư giao thức Go-Back-N */
lên t
đ
nh
/* Số thứ tự khung lớn nhất*/
/* Kích thước tối đa cửa sổ gởi và nhận
/* Chưa gởi khung NAK*/
/* Khung cũ nhất đã gởi */
/* Khung */
/* Kiểu khung: data, ack, nak */
/* Đặt số thứ tự cho khung dữ liệu gởi đi */
/* Tạo và gởi khung dữ liệu / báo nhận / báo lỗi */
/* Khởi động bộ đếm thời gian cho khung dữ liệu gởi */
* Ngừng bộ đếm thời gian chờ báo nhận*/
/* Chỉ gỏi 1 NAK cho một khung */
/* Gởi khung đi */
/* Khung chờ được báo nhận */
/* Khung kế tiếp gởi đi */
/* Khung đang chờ nhận */
/* Khung kế tiếp chưa được nhận */
/* Chỉ số vùng nhớ tạm */
/* Khung nhận và gởi */
/* Vùng đệm cho dữ liệu gởi */
/* Vùng đệm cho dữ liệu nhận */
/* Theo dõi sử dụng vùng đệm dữ liệu nhận */
/* Số lượng vùng đệm gởi đang được sử dụng */
/* Gán giá trị khởi động */
Kiểm tra b có là giá trị giữa a và c không
/* Khởi tạo các vùng đệm nhận rỗng */
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 52
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
/* Chờ 1 trong 5 sự kiện phát sinh */
/* Nhận, lưu và truyền một khung mới */
/* Mở rộng kích thước cửa sổ gởi */
/* Nhận gói tin từ tầng mạng */
* Gởi khung đi */
/* Tăng số thứ tự khung gởi kế tiếp */
/* Một khung dữ liệu hoặc điều khiển vừa đến */
/* Nhận khung từ tầng vật lý */
/* Là khung dữ liệu có lỗi thì gởi khung NAK, ngược lại tính giờ để gởi khung ACK */
/* Là khung có thứ tự chấp nhận và chưa được lưu dữ liệu lại*/
/* Đưa dữ liệu vào vùng đệm */
/* Đánh dấu vùng đệm đã sử dụng */
/* Di chuyển cửa sau cửa sổ nhận */
/* Di chuyển cửa trước cửa sổ nhận */
/* Khởi động đồng hồ cho các báo nhận */
/* Khung đã đến nơi thật sự */
/* Giảm kích thước cửa sổ gởi */
/* Di chuyển cửa dưới của cửa sổ gởi */
/* Chuyển tất cả các khung đang trong vùng đệm lên tầng mạng và mở rộng cửa sổ nhận */
/* Khung bị lỗi */
/* Bên gởi xử lý chậm */
/* Quá thời gian cho các báo nhận */
P4.6 Cài đặt giao thức Selective-Repeat
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 53
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
Một số điểm cần lưu ý khi sử dụng cửa số trượt với kích thước lớn hơn 1:
4.4.6.1.1 Kích thước tối đa của cửa sổ gởi và nhận là bao nhiêu ?
Giả sử ta dùng 3 bit để đánh số cho khung. Như vậy bên gởi được phép gởi trước tối đa 7 khung
trước khi chờ bên nhận gởi báo nhận về.
H4.11 Giao thức cửa số trượt với kích thước là 7
o Lúc đầu bên gởi gởi đi 7 khung từ 0 đến 6, bên nhận đang sẵn sàng chờ nhận bất kỳ
một khung nào có số thứ tự từ 0 đến 6 (Hình a).
o Tất cả các khung đến nơi không có lỗi, bên nhận gởi các báo nhận và chuyển cửa số
nhận về vị trí sẵn sàng để nhận các khung 7,0,1,2,3,4 và 5 (Hình b).
o Tại thời điểm đó, đường truyền có sự cố làm cho tất cả các khung báo nhận đều mất.
Quá thời gian, bên gởi gởi lại khung 0. Khi khung này đến bên nhận, nó kiểm tra xem
khung có nằm trong cửa sổ nhận không. Điều không may mắn đã xảy ra: khung 0 nằm
trong cửa sổ nhận mới (Hình b). Bên nhận nhận khung 0 xem như một khung mới hoàn
toàn và chuyển khung 0 lên tầng mạng. Như vậy tầng mạng đã nhận 2 lần cùng một gói
tin, tức giao thức vận hành sai.
o Tình trạng này có thể tránh được nếu ta đảm bảo rằng cửa sổ nhận mới không đè chồng
lên cửa sổ trước đó. Điều này có thể thực hiện được nếu ta giới hạn kích thước tối đa
của của sổ nhận bằng một nửa khoảng đánh số thứ tự của khung.
o Ví dụ: Nếu dùng 3 bit để đánh số thứ tự khung từ 0 đến 7 thì kích thước tối đa
cửa sổ nhận là (7-0+1)/2 =4.
o Nếu dùng 4 bit để đánh số thứ tự khung từ 0 đến 15 thì kích thước tối đa cửa sổ
nhậnt là (15-0+1)/2 =8.
4.4.6.2.1 Số lượng buffer để lưu khung là bao nhiêu?
Số lượng buffer chỉ cần bằng kích thước tối đa của cửa sổ nhận, không cần thiết phải bằng số
lượng khung. Ví dụ: Nếu dùng 3 bit để đánh số thứ tự khung từ 0 đến 7 thì kích thước tối đa cửa
sổ nhận là (7-0+1)/2 =4 và số lượng buffer cần thiết cũng là 4.
4.4.6.2.2 Khi nào gởi báo nhận cho một gói tin?
Ta thấy rằng, khi một khung đến, báo nhận của khung này sẽ không được gởi ngược về một cách
tức thì. Thay vào đó, nó sẽ được gởi kèm trong khung dữ liệu kế tiếp của bên nhận. Nếu bên nhận
không có dữ liệu để gởi đi, báo nhận sẽ bị giữ lại khá lâu. Chính vì thế, mỗi khi có khung đến thì
bộ đếm thời gian start_ack_timer được khởi động. Nếu trong suốt khoảng thời gian này không có
một khung dữ nào cần gởi đi, thì sau đó một khung báo nhận riêng biệt sẽ được gởi đi. Bộ đếm
thời gian start_ack_timer sinh ra sự kiện ack_timeout. Chúng ta cũng phải đảm bảo rằng, bộ đếm
thời gian start_ack_timer thì ngắn hơn bộ đếm thời gian chờ báo nhận cho các khung dữ liệu.
4.4.7 Giao thức HDLC (High-Level Data Link Control)
Giao thức điều khiển liên kết dữ liệu quan trong nhất là HDLC. Không phải vì nó được sử dụng
rộng rãi mà nó còn là cơ sở cho nhiều giao thức điều khiển liên kết dữ liệu khác.
4.4.7.2 Các đặc tính của giao thức HDLC
Giao thức HDLC định nghĩa 3 loại máy trạm, hai cấu hình đường nối kết và 3 chế độ điều khiển
truyền tải
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 54
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
4.4.7.2.1 Ba loại trạm trong HDLC
o Trạm chính (Primary Station): Có trách nhiệm điều khiển các thao thác về đường
truyền. Các khung được gởi từ trạm chính gọi là lệnh (Command).
o Trạm phụ (Secondary Station): Hoạt động dưới sự kiểm soát của trạm chính.
Khung gởi từ trạm phụ gọi là các trả lời. Trạm chính duy trì nhiều đường nối kết
luận lý đến các trạm phụ trên đường truyền.
o Trạm hỗn hợp (Combined Station): Bao gồm đặc điểm của trạm chính và trạm phụ.
Một trạm hỗn hợp có thể gởi đi các lệnh và các trả lời.
4.4.7.2.2 Hai cấu hình đường nối kết:
o Cấu hình không cân bằng (Unbalanced Configuration): Gồm một máy trạm chính
(Primary Station) và nhiều máy trạm phụ (Secondary station) và hỗ trợ cả 2 chế độ
truyền song công và bán song công
o Cấu hình cân bằng (Balanced Configuration): Bao gồm 2 máy trạm hỗn hợp, và hỗ
trợ cả 2 chế độ truyền song công và bán song công.
4.4.7.2.3 Có 3 chế độ truyền tải là:
o Chế độ trả lời bình thường (NRM- Normal Response Mode), được sử dụng với cấu
hình đường nối kết không cân bằng. Máy chính có thể khởi động một cuộc truyền
tải dữ liệu về cho máy phụ. Nhưng máy phụ chỉ có thể thực hiện việc truyền dữ liệu
cho máy chính như là những trả lời cho các yêu cầu của máy chính.
o Chế độ cân bằng bất đồng bộ (ABM - Asynchronous Response Mode): Được sử
dụng với cấu hình nối kết cân bằng. Cả hai máy đều có quyền khởi động các cuộc
truyền tải dữ liệu mà không cần sự cho phép của máy kia.
o Chế độ trả lời bất đồng bộ (ARM-Asynchronous Response Mode): Sử dụng cấu
hình không cân bằng. Một máy phụ có thể khởi động một cuộc truyền tải và không
cần sự cho phép tường minh của máy chính. Máy chính vẫn đảm trách vai trò bảo
trì đường truyền bao gồm việc khởi động, phục hồi lỗi và xóa nối kết.
Chế độ NRM đòi hỏi phải có nhiều đường dây để nối một máy chính với nhiều thiết bị đầu cuối.
Chế độ ABM được sử dụng nhiều nhất trong 3 chế độ, nó cho phép sử dụng hiệu quả đường
truyền. Chế độ ARM thì ít được dùng đến.
4.4.7.3 Cấu trúc khung
HDLC sử dụng chế độ truyền tải đồng bộ, các bits 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.
Khung trong giao thức HDLC có cấu trúc như sau:
H4.12 Cấu trúc khung của HDLC
Flag (8 bit) Là cờ dùng để xác định điểm bắt đầu và kết thúc của khung,
giá trị nó là 01111110. HDLC sử dụng kỹ thuật bit độn để loại
trừ sự xuất hiện của cờ trong dữ liệu.
Address (8 bit) Vùng ghi địa chỉ để xác định máy phụ được phép truyền hay
nhận khung.
Control (8bit) Được dùng để xác định loại khung. Mỗi loại có thông tin điều
khiển khác nhau. Có 3 loại khung: Thông tin (I), Điều khiển (S
) và không đánh số (U).
Information
(128-1024 bytes)
Vùng chứa dữ liệu cần truyền.
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 55
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
FCS (Frame
Check Sequence- 8
bit)
Vùng chứa mã kiểm soát lỗi, dùng phương pháp đa thức CRC-
CCITT = X16 + X12 + X5 +1
Giá trị 8 bit của trường control hình thành 3 loại khung như sau:
Khung I
Khung S
Khung U
H4.13 Cấu trúc trường điều khiển trong khung HDLC
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 P/F có ý nghĩa là Poll/Final, tức chọn hoặc kết thúc. Khi máy tính chính mời một máy phụ
truyền tin, thì bit này được đặt lên 1 có ý nghĩa là P (Poll, chọn). Ngược lại khi thông tin được
truyền từ máy phụ lên máy chính thì nó được đặt xuống 0, để báo với máy chính rằng máy phụ
hiện tại vẫn còn dữ liệu để gởi đi. Khi máy phụ gởi khung cuối cùng, bit này được đặt lên 1, có ý
nghĩa là F (Final, kết thúc), để báo cho máy chính biết rằng nó đã hoàn thành việc truyền tải
thông tin.
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=0
0
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=0
1
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=1
0
RNR (Receive Not Ready): thông báo không sẵn sàng nhận
tin, đã nhận đến đến khung thứ Next-1, chưa sẵn sàng nhận
khung Next
SS=1
1
SREJ (Selective Reject): yêu cầu gởi lại một khung có số
thức 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:
Biên Sọan: Th.s Ngô Bá Hùng – Ks Phạm Thế Phi - 01/2005 56
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Mạng Máy Tính – V1.0
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 xóa nối kết DISC (Disconnect).
1100F110 UA (Unumbered Acknowledgment). Được dùng bởi các trạm
phụ để báo với trạm chính rằng nó đã nhận và chấp nhận các
lệnh loại U ở trên.
1100F00