Tải bản đầy đủ (.doc) (36 trang)

Chương 5: Cơ sở của giao thức potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.13 MB, 36 trang )

Chương 5: Cơ sở của giao thức Nhóm 10
MỤC LỤC
1. KIỂM SOÁT LỖI
1.1 Kiểm soát lỗi bằng tay:
- Khi nhập dữ liệu vào máy tính từ bàn phím, mỗi phím được ấn thì sẽ có một từ
mã được truyền vào máy theo từng bit nối tiếp thông qua một UART theo chế độ truyền
bất đồng bộ. Chương trình trong máy tính sẽ điều khiển quá trình nhập, đọc, lưu ký tự
và xuất ra màn hình.
- Nếu cần xóa một ký tự, ta chỉ cần gõ một ký tự điều khiển xóa thích hợp (ví dụ
phím backspace). Khi này chương trình sẽ xóa ký tự trước đó ra khỏi màn hình.
1.2 Kiểm tra dội lại: (Echo checking)
1
Chương 5: Cơ sở của giao thức Nhóm 10
- Khi một thiết bị đầu cuối kết nối đến một máy tính ở xa thông qua PSTN và
modem. Những ký tự được nhập tại máy đầu cuối sẽ được gửi đến máy tính ở xa đọc,
lưu giữ và truyền lại đầu cuối để hiển thị lên màn hình.
1.3 ARQ (Automatic Repeat Request)
- Máy tính sẽ tự động kiểm tra để phát hiện lỗi truyền, sau đó gửi lại cho nguồn tin
một thông điệp ngắn để báo nhận thành công hoặc yêu cầu gửi lại một bản sao của
frame vừa đến (do lỗi).
- Có 2 loại ARQ cơ bản là idle RQ và continuous RQ.
+ Primary – P (phía sơ cấp): là phía phát các khung dữ liệu
+ Secondary – S (thứ cấp): thu nhận các khung dữ liệu từ P.
+ I – frame (Information frame): khung thông tin là các khung chứa dữ liệu mà
phía phát truyền cho phía thu. Mỗi khung có chứa số danh định của khung đó.
+ ACK – frame (Acknowledge frame): là những khung được S truyền đến P để
báo là đã nhận được dữ liệu tốt (không bị lỗi).
+ NAK – frame (Negative Acknowledge frame): là những khung được S truyền
đến P để báo là khung nhận được bị lỗi.
2
Chương 5: Cơ sở của giao thức Nhóm 10


2. IDLE RQ
Đặc điểm của lược đồ idle RQ:
- Sử dụng trong kiểu truyền dữ liệu định hướng ký tự
- Hoạt động theo chế độ bán song công, vì sau khi p gửi I- frame ,nó phải đợi cho
đến khi nhận 1 thông báo từ phía S cho bieetsI- frame đó nhạn được thành công. Sau
đó, P gửi I- frame kế tiếp nếu khung trước đó nhận đúng hoặc truyền lại khung cũ nếu
I- frame không được nhận thành công.
Có 2 loại Idle RQ:
- Truyền lại ngầm định( không tường minh- implicit retansmission): S báo ACK-
frame nếu nhận được I- frame đúng và sẽ không báo ACK- frame nếu nhận sai. Do đó,
3
Chương 5: Cơ sở của giao thức Nhóm 10
nếu P không nhận được ACK- Frame thì hiểu là I- frame đã bị lỗi và phải truyền lại.
thời gian chờ ACK- frame của P được xác định trước và không được lâu hơn thời gian
quá hạn( time expires)
- Truyền lại tường minh(yêu cầu rõ- Implicit retransmission): S báo ACK- frame
nếu nhận I- frame đúng và báo NAK nếu nhận I= frame bị lỗi.
Idle ngầm định:
Hoạt động của idle RQ: (a) truyền lại ngầm định
Trong hình trên
a/ truyền đúng
b/ I- frame bị lỗi
c/ Ack- frame bị lỗi
- P chỉ có một I – frame đang chờ ACK – frame. Khi P nhận được ACK- frame
của khung I(N), P sẽ tiếp tục truyền đi khung kế tiếp I(N+1).
- Khi S nhận được một I – frame bị lỗi, S sẽ bỏ qua và không gửi lại ACK – frame.
- Khi P bắt đầu truyền I – frame, nó sẽ khởi động bộ định thời, nếu quá khoảng
thời gian giới hạn thì P sẽ truyền lại I – frame đó.
- Nếu P không nhận được ACK – frame trong khoảng thời gian định trước thì P sẽ
truyền lại I – frame đó nhưng S sẽ loại bỏ bảng sao này do bị trùng lặp. điều này thực

hiện là do trong mỗi I – frame điều truyền theo số tuần tự của khung.
4
Chương 5: Cơ sở của giao thức Nhóm 10
Idle tường minh
- S sẽ trả về ACK – frame nếu nhận I – frame đúng.
- Nếu P nhận được ACK- frame thì P sẽ dừng bộ định thời và khởi động lại đường
truyền I – frame khác
- Nếu S nhận được một I – frame bị lỗi thì I – frame đó sẽ bị loại và S sẽ trả lời
bằng một NAK-frame.
Nếu P không nhận được 1 ACK-frame(hoặc NAK-frame) trong khoảng thời gian
định trước thì P sẽ truyền lại I – frame đó nhưng S sẽ loại bỏ bảng ao này do bị trùng
lặp.
5
Chương 5: Cơ sở của giao thức Nhóm 10
Hoạt động của idle RQ: (b) truyền lại tường minh
Trong hình trên: Idle RQ tường minh
a/ truyền đúng
b/ I – frame bị lỗi
ACK- frame bị lỗi
Nhận xét: với kiểu truyền tường minh thì tăng hiệu quả về thời gian hơn so với kỹ
thuật truyền không tường minh vì thời gian S truyền NAK- frame về P ngắn hơn nhiều
so với thời gian quá hạn trong kiểu truyền không tường minh.
Đặc điểm chung của Idle RQ là sau khi P gởi một I – frame, P phải chờ cho đến
khi nhận được ACK- frame tương ứng từ S. Do đó kiểu truyền này còn được gọi là
dừng và chờ ( stop and wait).
Trong cả 2 nguyên lý truyền trên đều có trường hợp S nhận được I – frame và bản
sao đều tốt và S phải loại bỏ bớt một. Như vậy, để S có thể phân biệt được hai I – frame
nhận được là khác nhau thì cần có cơ chế đánh số. chỉ số tuần trong mỗi I – frame được
6
Chương 5: Cơ sở của giao thức Nhóm 10

gọi là chỉ số tuần tự gởi N(S) và chỉ số tuần tự trong mỗi ACK- frame hay NAK-frame
được gọi là chỉ số tuần tự nhận N(R). tương tự như cấu trúc khung truyền bất đồng bộ,
các ký tự điều khiển vẫn được sủ dụng la: SOH, STX, ETX. Mỗi I – frame phải chứa 1
chỉ số tuần tự tại SOH. Ký tự SOH được chèn vào đầu một khối hoàn chỉnh để báo hiệu
bắt đầu một I – frame mới. Tiếp theo là cấu trúc thong thường như truyền bất đồng bộ
với BCC dung kiểm tra tổng khối để phía thu biết là nhận được khung đúng hay bị lỗi.
Các khung ACK va NAK được dung cho mục đích báo nhận, theo sau là chỉ số
tuần tự thu. Các khung này dung phương pháp kiểm tra tổng khối BCC. Cả 3 loại
khung: I – frame, ACK- frame, NAK- frame đều được gọi là đơn vị dữ liệu giao thức
PDU( protocol data unit) của giao thức Idle RQ.
2.1 Kiến trúc phân lớp
Lược đồ tuần tự frame được trình bày ở hình trên mô tả các đặc trưng chủ yếu của
hoạt động giao thức idle RQ. Tuy nhiên, trước khi đi vào các chi tiết lien quan đến giao
thức, chúng ta sẽ xem xét cụ thể hơn khái niệm phan lớp. khái niệm này có liên quan
đến sự tách riêng 1 ứng dụng phối hợp và các tác vụ truyền tin thành hai tác vụ con rõ
rang hơn, tác vụ con được gọi là lớp, cùng với một hình thức giao tiếp giữa chúng.
Để mô tả khái niệm, hãy xem xét một qua trình ứng dụng AP (application process)
chạy trên một máy tính truyền một tập tin đến một ứng dụng tương tự chạy trên một
máy tính thứ 2 qua một liên kết số liệu nối tiếp dung một giao thức điều khiển lỗi idle
RQ. Như đã mô tả, giao thức idle RQ sẽ cố gắng gửi các khối thông tin nối tiếp qua một
7
Chương 5: Cơ sở của giao thức Nhóm 10
liên kết số liệu theo phương phapstin cậy. Cũng tùy và BEB trên liên kết, một kích
thướt khối tối đa sẽ được chỉ định để đảm bảo một tỉ lệ cao các I- frame không bị lỗi.
Lớp giao thức idle RQ trong máy tính nguồn vì thế phải cung cấp 1 dịch vụ xác
định cho lớp AP của người dung bên trên nó, dịch vụ này là truyền một chuỗi nối tiếp
các khối thông tin , mỗi khối có môt chiều dài tối đa xa định, đén quá trình ứng dụng
tương tự trên máy tính đích. Hai thực thể giao thức ngang hang idle RQ có liên quan
đến các vấn đề phát hiện lỗi được thảo luận trước đây: tạo ra và phản hồi các frame báo
nhận, timeout, phân phối các khối thông tin theo tuần tự giống như khi chúng được

truyền.
Ngược lại, hai quá trình ứng dụng ngang hàng chỉ liên quan đến thủ tục truyền tập
tin dùng dịch vụ được cung cấp bởi lớp truyền tin (idle RQ), như là tên tập tin, chiều
dài của nó, sự phân đoạn nội dung tập tin thành các khối nhỏ hơn trước khi truyền đến
lớp truyền tin, vá tái thiết chúng thành một tập tin hoàn chỉnh khi nhận. Do đó, trong
mỗi ứng dụng, tuần tự của các khối thông điệp là rất quan trọng,cú pháp và cấu trúc của
thông điệp phải được xác định. Điều này ngụ ý rằng một giao thức AP to AP phải có
tập PDU riêng của nó. Hai thực thể giao thức AP dung các dịch vụ của lớp truyền tin
bên dưới dể truyền các PDU của chúng. Dĩ nhiên, đối với các lớp truyền tin, tất cả các
PDU này chỉ đơn giản là các khối thông tin sẽ được truyền theo một cách.
Thông thường, dịch vụ được cung cấp bởi một lớp truyền tin được biểu diễn dưới
dạng một hàm thực thể dịch vụ với dữ liệu truyền đóng vai trò là tham số. vì dịch vụ
liên hệ với lớp liên kết và thực hiện truyền số liệu nên hàm dịch vụ của người dùng tại
giao tiếp truyền được ký hiệu là L_DATA.request và hàm dịch vụ tại giao tiếp nhận
được ký hiệu lafL_DATA.indication. điều này được trình bày ở hình (a) dưới.
Trong nhiều trường hợp, vì các user của một lớp liên quan đến dịch vụ được cung
cấp chứ không liên quan đến cách thực hiện dịch vụ, nên khi định nghĩa các dịch vụ
liên quan đến một lớp giao thức chúng ta thường trình bày tương tự hình (b). dạng trình
bày này được gọi là lược đồ tuần tự theo thời gian. Để tách biệt rõ rang giữa hai lớp,,
dung một hang đợi giữa chúng, như hình (c) ở dưới. đây là dạng cấu trúc dữ liệu đơn
giản thực hiện theo nguyên lý hang đợi FIFO. Các phần tử được đưa vào đuôi của hang
đợi và lấy ra từ đầu hang đợi.
8
Chương 5: Cơ sở của giao thức Nhóm 10
Thông thường, các hàm dịch vụ liên hệ đến một lớp được chuyển qua giữa các lớp
bằng một cấu trúc dữ liệu gọi là khối điều khiển sự kiện_ECB. Tổng quát, nó là một
record hay cấu trúc chứa kiểu hàm tại filed đầu tiên và một chuỗi ký tự hay byte chứa
dữ liệu của user trong fiel thứ hai. bất cứ khi nào nguồn Ap hay lớp giao thức cao hơn
muốn truyền một khối thông điệp, trước hết nó lấy một ECB tự do, ghi đoạn dữ liệu của
user vào chuỗi ký tự hay byte, thiết lập filed chỉ loại hàm thành L_DATA.request và

chèn ECB vào đuôi của hang đợi nhập của lớp liên kết (LS_user) để chuẩn bị sẵn cho
thực thể giao thức sơ cấp idle RQ đọc.
Khi phần mềm thực thể giao thức idle RQ kế tiếp thực thi, nó phát hiện ra sự hiện
diện của một ECB tại hang đợi nhập của lớp liên kết, nó đọc ECB từ dầu của hang đợi,
và xử lý để tạo ra một I-frame hoàn chỉnh gồm nội dung thông điệp, header và trailer
thích hợp. sau đó nó thực hiện truyền frame đến thực thể giao thức thứ cấp. giả sử
frame nhận được không bị lỗi, thực thể thứ cấp sẽ loại bỏ header và trailer, và chuyển
nội dung frame đến AP đích theo một ECB bằng cách dung hang đợi ngõ ra của lớp liên
kết kèm theo hàm dịch vụ được đổi thành L_DATA.indication. sau đó, tạo và phản hồi
một ACK- frame đến P.
Khi đến lượt AP đích chạy, nó phát hiện và đọc ECB từ hang đợi LS_provider và
xử lý nội dung của khối thông tin phụ thuộc vào giao thức AP to AP đã được định
nghĩa. Thông thường nếu đay là khối thông điệp đầu tiên chứa tên tập tin, nó sẽ liên
quan đến việc tạo ra một tập tin có tên theo tên này và mở sẵn cho các hoạt động ghi tập
tin ngay sau đó.
Ở phía truyền, giả sử nhận được ACK- frame không lỗi, P xóa bộ đệm giữ I-
frame vừa được báo nhận và kiểm tra hang đợi LS_user để tiếp nhận một ECB đang đợi
khác. Nếu có một ECB khác, thủ tục sẽ được lặp lại cho tới khi tất cả các tập tin được
truyền. thông thường AP nguồn gởi một khối thông điệp kết thúc truyền để thông báo
cho AP đích biết toàn bộ nội dung đã được truyền.
9
Chương 5: Cơ sở của giao thức Nhóm 10
Kiến trúc phân lớp: (a) Các hàm dịch vụ,
(b) Lược đồ thứ tự theo thời gian, (c) Các giao tiếp dịch vụ
2.2 Đặc tả giao thức
Định nghĩa hoạt động của một giao thức trong khi cho phép tất cả các sự kiện và
các trường hợp kiểm soát lỗi có thể làm cho vấn đề trở nên vô cùng phức tạp. vì vậy, sẽ
mô tả giao thức bằng cách dung một trong các phương pháp rõ rang và hình thức hơn.
Ba phương pháp phổ biến nhất để đặc tả giao thức truyền tin là dung các sơ đồ chuyển
trạng thái, các bảng sự kiện trạng thái mở rộng, và chương trình cấu trúc mức cao.

10
Chương 5: Cơ sở của giao thức Nhóm 10
Trong nhiều trường hợp, chúng ta định nghĩa một giao thức như là một tổ hợp các
sơ đồ này đi đôi với lượt đồ tuần tự thời gian để mô tả các hàm dịch vụ user liên hệ với
giao thức.
Bất chấp phương pháp đặc tả được dung, chúng ta đều mô phỏng một giao thức
như một thiết bị máy móc tự động. điều này có nghĩa là giao thức, hay chính xác hơn là
thực thể giao thức, chỉ có thể ở một trong một số trạng thái xác định tại bất kỳ điểm
nào. Ví dụ, nó có thể ở trạng thái nhàn rỗi đợi truyền một thông điệp, hay đợi nhận một
báo nhận. sự chuyển trạng thái xảy ra khi có kết quả của một sự kiện đến, ví dụ như
nhận một thông điệp, một sự kiện đi tương ứng được tạo ra, ví dụ khi nhận một thông
điệp, gởi một thông điệp, gởi tiếp một I- frame lên liên kết, hay khi nhận một NAk-
frame thì chuyển lại I- frame.
Có thể thấy trong một số sự kiện có thể tạo ra một số sự kiện đi có thể. Sự kiện đi
đặc biệt được chọn là sự kiện xác định bởi trạng thái được tính toán trên cơ sở một hay
nhiều thuộc tính. Ví dụ thuộc tính P1 có thể là true nếu N(R) trong ACK-frame trùng
với N(S) trong I- frame đang đợi báo nhận. Do đó, nếu P1 là true thì có thể làm rỗng bộ
đệm đang lưu giữ I- frame này, nếu là False thì khởi động truyền lại Frame.
Sau cùng, một sự kiện đến, ngoài việc tạo ra một sự kiện đi, cũng có thể có một
hay nhiều hành động cục bộ đặc trưng liên quan được tiến hành. Ví dụ khởi động một
bộ định thời và gia tăng biến tuần tự gởi.
2.3. Đặc tả idle RQ
Tất cả các máy có trạng thái xác định hay các thực thể giao thức đều hoạt động
theo một phương pháp vi mô.Điều đó có nghĩa là một khi có sự kiện đến là bắt đầu quá
trình xử lý,tất cả các chức năng xử lý liên quan đến sự kiện này,bao gồm tạo ra bất cứ
sự kiện nào,bất kỳ một hành động cục bộ nào cũng như sự thay đổi trạng thái là những
gì được thực hiện theo phương thức riêng của chúng trước khi sự kiện đế được chấp
nhận.
Để chắc chắn điều này xãy ra,các giao tiếp sự kiện đến khác nhau được tách ra
khỏi thực thể giao thức nhờ các hàng đợi,như trình bày trên hình 5.4.Có một cặp hàng

đợi thêm vào giữa thực thể giao thức và thủ tục truyền/nhận điều khiển mạch
truyền/nhận đặc biệt đang được dùng.Tương tự,cũng có một cặp hàng đợi giữa thực thể
11
Chương 5: Cơ sở của giao thức Nhóm 10
giao thức và thủ tục định thời.Thông thường thủ tục định thời chạy theo khoảng thời
gian đều đặn bởi tác động của ngắt(interrupt),và nếu bộ định thời đang chạy thì giá trị
hiện hành của nó bị giảm từng khoảng một.Nếu giá trị đến 0,bộ định thời hết hạn,một
thông điệp được gửi cho thực thể giao thức qua hàng đợi thích hợp
Vai trò của thủ tục truyền/nhận chỉ đơn giãn là truyền một framedduwowcj định
dạng trước đi qua nó và nhận mottj frame từ liên kết và xếp hàng đợi chờ thực thể giao
thức xử lý.Thủ tục này cũng có thể được kích hoạt bởi một ngắt,nhưng lần này là từ
mạch điều khiển truyền .Mặc dù,về mặt nguyên lý chỉ cần một hàng đợi nhập và xuất
để để giao tiếp sơ cấp và thứ cấp với các quá trình ứng dụng tương ứng của nó,trong
thực tế cần một cặp hàng đợi tại mỗi giao tiếp để kiểm soát dòng các hàm dịch vị trong
chế độ song công.
Để đơn giản thủ tục đặc tả,chúng ta cung cấp cho mỗi sự kiện đến,sự kiện đi,yếu
tố xác lập(thuộc tính luận lý),hành động dặc biệt và trạng thái liên hệ với mỗi thực thể
giao thức một tên ngắn gọn(viết tắt).Trước khi đặc tả một giao thức,các tên thường
được liệt kê
Vì mỗi thực thể giao thức là một hệ thống tuàn tự liên tục,nên phải giữ lại thông
tin nào có thể bị thay đổi khi có một sự kiện khác đến.Thông tin được giữ lại trong một
số biến trạng thái.Ví dụ đối với sơ cấp thì biến tuần tự gởi là V(S)_Vs trong đặc tả nó
giữ chỉ số tuần tự được gán cho cho I-frame được truyền kế tiếp.Biến PresentState giữu
trạng thái hiện hành của thực thể giao thức.RetxCount được dùng để giới hạn tối đa thì
frame sẽ bị loại bỏ,và một thông báo lổi được gởi lên cho lớp AP ở trên và thực thể giao
thức được khởi động lại.
(a) Các sự kiện đến
Tên Giao tiếp Ý nghĩa
LDATAAreq LS_user Hàm dịch vụ L_DATA.request nhận
ACKRCVD PHY_provider Nhận ACK-frame từ S

TEXP TIM_provider Đợi bộ định thời ACK hết hạn
NAKRCVD PHY_provide Nhận NAK-frame từ S
Các trạng thái
Tên Ý nghĩa
IDLE Nhàn rỗi, không có thông điệp truyền
WTACK Đơi một báo nhận
Hình 5.5. Các tên viết tắt được dùng trong đặc tả idle RQ
12
Chương 5: Cơ sở của giao thức Nhóm 10
Các sự kiện đi
Tên Giao tiếp Ý nghĩa
TxFrame PHY-user Định dạng và truyền một I-frame
RetxFrame PHP-user Truyền lại một I-frame đang đợi báo nhận
LERROnd LS_provider Thông điệp bị lổi:frame bị loại vì lý do được
chi định
Các thuộc tính xác lập
Tên Ý nghĩa
P0 N(S) trong I-frame đang đợi = N(R) trong ACK-frame
P1 Kiểm tra tổng khối(BSC) trong ACK/NAK-frame là đúng
Các hành động động đặc biệt Các biến trạng thái
[1]=Start_timer dùng hàng đợi TTM_user Vs = biến tuần tự gởi
[2] gia tăng Vs Presentstate = trạng thái hiện hành của
thực thể giao thức
[3] Stop_timer dùng hàng đợi TIM_user ErrorCount = số frame lỗi đã nhận
[4] Gia tăng RetxCount
[5] Gia tăng ErrorCount RextCount = số lần truyền lại frame này
[6] Gán lại RetxCount bằng 0
(b) Các sự kiện đến
Tên Giao tiếp Ý nghĩa
IRCVD PHY_provider Nhận I-frame từ P

Các trạng thái
Tên Ý nghĩa
WTIFM Đơi một I-frame mới từ P
Các sự kiện đi
Tên Giao tiếp Ý nghĩa
LDATAind LS_provider Chuyển nội dung của I-frame nhận
được đến AP với một hàm dịch cụ
L_DATA.indication
TxACK(X) PHY_user Đinh dạng và truyền một ACK-
frame với N(R) = X
TxNAK(X) PHP_user Định dạng và truyền một NAK-
frame với N(R)=X
LERRORind LS_provider Phát ra một thông điệp lỗi vì lý do
được chỉ định
Các thuộc tính xác lập
Tên Ý nghĩa
P0 N(S) trong I-frame = Vr
P1 Kiểm tra tổng khối (BSC) trong I-frame là đúng
P2 N(S) trong I-frame = Vr-1
Các hành động dặc biệt Các biến trạng thái
[1] = gia tăng Vr Vr = biến tuần tự nhận
[2] = gia tăng ErrorCount ErrorCount = Số frame lỗi đã nhận
Hình 5.5(tiếp theo) Các tên viết tắt được dùng trong đặc tả idle RQ:
(a) cho sơ cấp P (b) Cho sơ cấp S
13
Chương 5: Cơ sở của giao thức Nhóm 10
Chỉ có hai biến trạng thái là cần cho thứ câp: biến tuần tự như V(R)_Vr trong đặc
tả nó giữu số tuần tự của I-frame nhận tốt sau cùng,và ErrorCount giữ số lượng frame
lỗi đã nhận.Một lần nữa,nếu ErrorCount đạt đến một giới hạn tối đa xác định thì một
thông báo lỗi sẽ được gữi ngay đến lớp AP ở trên

Đặc tả chính tắc của hai thực thể P và S lần lượt được trình bày trên hình 5.6 và
5.7 dưới dạng sơ đồ trạng thái và dạng bảng sự kiện trạng thái
Sử dụng phương pháp sơ đồ chuyển trạng thái,các trạng thái có thể của thực thể
giao thức được trình bày trong các hình oval,tên trạng thái được viết bên trong đó.Các
mũi tên có hướng chỉ ra theo chiều dịch chuyển có thể giữa các trạng thái,sự kiện đến
gây ra sự dịch chuyển và bất kỳ sự kiệ đi và hành động đặc biệt nào đều được viết trên
biên ngoài.Ví dụ nếu nhận được một L_DATA.request(LDATAreq) từ giao tiếp LS-
user thì frame được định dạng và đưa đến giao tiếp PHY_user(Txframe),một timer
được được khởi động cho frame này[1],biến tuần tự gởi tăng lên[2],và vào trạng thái
WTACK.Tương tự nếu nhận được một ACK-frame với một N(R) bằng với N(S) trong
frame đang đợi và kiểm tra BSC là đúng thì timer bị dừng [3] và bộ đếm truyền lại
được trả về zero [6],và vào trạng thái IDLE. Sự chuyển trạng thái có thể được diễn giải
theo cách tương tự.
Mặc dù lược đồ chuyển trạng thái là hữu dụng để trình bày hoạt động vủa một
giao thức ,nhưng sự giới hạn về không gian luôn là trở ngại thực tế trong việc trình bày
tất cả các khả năng của sự kiện đến bao gồm cả các điều kiện lỗi.Do đó hầu hết các sơ
đò chuyển trạng thái là các đặc tả không hoàn chỉnh.Hơn thế nữa,ngoại trừ các giao
thức đơn giãn nhất còn hầu hết chúng ta đều cần dùng đến nhiều lược đồ để định
nghĩa,ngay cả một hoạt động đúng của giao thức.Vì các lý do này mà chúng ta sẽ dùng
bảng sự kiên-trạng thái và phương pháp mã lệnh có cấu trúc.
Dùng phương pháp bảng sự kiện-rạng thái mở rộng nư hình 5.6 và 5.7. Chúng ta
có thể trình bày tất cả các dự kiện đến có thể và các trạng thái của giao thức đươi dạng
một bảng. Đối với mỗi trạng thái,mục chỉ định trong bảng (table entry) xác định một sự
kiện đi,bất kỳ hành động đặc biệt nào,và trạng thái mới tương ứng với tất cả các sự kiện
dênd có thể,cũng như các yếu tố xác lập liên quan và tập các hành động tùy chọn. Rõ
ràng, bảng sự kiện-trạng thái mở rộng là một phương pháp trình bày tốt hơn vì nó cho
14
Chương 5: Cơ sở của giao thức Nhóm 10
phép trình bày tất ca các tổ hợp trạng thái hiện hành và sự kiệ đến có thể. Một bảng sự
kiện-trạng thái cơ bản chỉ có một hoạt động có thể và một trạng thái kế cho mỗi tổ hợp

sự kiện đến và trạng thái hiện hành. Sự xuất hiện các yếu tố xác lập và do đó là các
trạng thái kế tiếp hay hành động tùy theo có thể kéo theo việc sử dung thuật ngữ “mở
rộng”trong tên của phương pháp này (bảng sự kiện-trạng thái mở rộng).
Khi chúng ta giải thích các hành động theo sau các yếu tố xác lập (thuộc tính luận
lý), cần lưu ý rằng các hành động này được trình bày theo thứ tự.Do đó một hành động
theo sau khi sơ cấp ở trong trạng thái WTACK và nhận một ACK-frame là trước hết
xác định P0 và P1 đều là true. Nếu cả hai đúng như thế thì thực hiện hành động [3] và
[6] và vào trạng thái IDLE. Nếu ngược lại thì xác định xem[P0&NOTP1] có là true hay
không và cứ thế. Nếu không có điều liện nào là true thì nghi ngờ có một lỗi và các hành
động được trình bày như hình.
Một đặc trưng cơ bản của sự kiện-trạng thái mở rộng là làm cho công việc hiện
thực theo mã chương trình (program code) dễ dàng hơn so với một sơ đồ chuyển trạng
thái. Có thể nhận thấy điều này bằng cách xem xét một ví dụ:hiện thực sơ cấp idle RQ
và thứ cấp idle RQ. Cấu trúc của chương trình được trình bày lần lượt trên hình 5.8 (a)
và (b). Chúng được viết theo mã giả mức cao (high-level pseudocode) để dễ hiểu và
được trình bày như là một chương trình riêng biệt. Trong thực tế,chúng có thể là những
thủ tục nhưng điều này không ảnh hưởng đến hoạt động cơ bản của chúng.
Khi mỗ chương trình bắt đầu chạy,thủ tục khởi động (Initialize) được yêu cầu. Thủ
tục này thực hiện các chức năng như là khởi động tất cả các biến trạng thái bằng cách
gán các giá trị ban đầu cho chúng và nội dung của mãng EventStateTable
(EventStateTable array) theo các giá trị trong bảng sự kiện-trạng thái mở rộng.Sau đó
chương trình đi vào vòng lặp vô hạn đợi một sự kiện đến tại một trong các hàng đợi
nhập của nó.
Sự kiên đến trước hết sẽ làm cho chương trình được gán loại sự kiện vào biến
EventType.Sau đó nội dung hiên hành của biến PresentState và EventType được dùng
như là xhir số trỏ đến mảng EventStateTable (EventStateTable array) để xác định số
nguyên 0,1,2 hay 3,những số nguyên này chỉ định các hành động sử lý liên quan đến sự
kiện này.
15
Chương 5: Cơ sở của giao thức Nhóm 10

2.4. Hiệu suất sử dụng liên kết
Trước khi xem xét các thủ tục kiểm soát lỗi liên hệ với hai loại giao thức RQ liên
tục(continuous RQ protocol),chúng ta sẽ đánh giá hiệu quả sử dụng khả năng có sẵn
của liên kết đối với giao thức idle RQ.Hiệu suất sử dụng U là tỉ số của hai đại lượng
thời gian,mỗi đại lượng được đo từ thời điểm mạch phát bắt đầu gửi một frame.Nó
được định nghĩa như sau:
U= T
ix
/ T
t
Trong đó :
ix
T
là thời gian để mạch phát truyền một frame và T bằng T cộng với
bất kỳ một lượng thời gian nào mà máy phát đợi một báo nhận.
Để đánh giá hiệu suất sử dụng liên kết đối với idle RQ,một sơ đồ tuần tự frame
cùng với các thành phần thời gian được xác định trong hình 5.9.Trong thực tế hầu hết
các trường hợp phù hợp với giao thức idle RQ,thời gian xử lý một i-frame,T và thời
gian đợi báo nhận ACK-Frame liên quan,T đều nhỏ so với các thời gian truyền T và
T.Cũng vì ACK-Frame ngắn hơn nhiều so với một I-Frame nên T có thể bỏ qua so với
T. Do đó tổng thời gian tối thiểu trước khi I-Frame kế tiếp có thể được truyền xấp xỉ
bằng T+2T. Biểu thức U là.
U= T
ix
/ (T
ix
+ 2Tp)
16
Chương 5: Cơ sở của giao thức Nhóm 10
3. RQ LIÊN TỤC (CONTINUOUS RQ)

Đối với lược đồ kiểm soát lỗi RQ liên tục,hiệu suất sử dụng được cải thiên nhờ
việc chấp nhận chi phí để mở rộng bộ đệm.
Tuần tự frame của continuous RQ(không có lỗi truyền)
Hình trên mô tả hoạt động truyền các I-frame và các ACK-frame phúc đáp cho
chúng theo tuần tự(trường hợp không có lỗi truyền xảy ra):
- P gửi I-frame một cách liên tục mà không đợi ACK-frame trả về.
- P giữ bản copy của các I-frame đang đợi ACK-frame tương ứng trả về trong
một danh sách truyền lại(retransmission list),danh sách này hoạt động theo nguyên tắc
hàng đợi FIFO.
- S phúc đáp một ACK-frame cho mỗi I-frame nhận tốt
- Mỗi I-frame chứa 1 định danh duy nhất ,định danh này cũng được gửi về trong
ACK-frame tương ứng.
- Khi nhận được một ACK-frame,P sẽ loại I-fame tương ứng ra khỏi danh sách
truyền.
- Các I-frame đã nhận mà không có lỗi được đặt vào trong danh sách liên kết
nhận(link receive list) để chờ xự lý.
17
Chương 5: Cơ sở của giao thức Nhóm 10
- Khi nhận một I-frame S sẽ chuyển nội dung của I-frame trước nó theo tuần tự
cho lớp trên ngay khi xử lý xong.
- Trong trường hợp S nhận được các I-frame không theo tuần tự nó sẽ giữ chúng
trong danh sách liên kết nhận cho đến khi nhận được i-frame kế tiếp đúng theo tuần tự.
Trong trường hợp có lỗi truyền xảy ra thì ta có thể áp dụng một trong hai chiến
lượ truyền lại sau:
- S chỉ phát hiện và yêu cầu truyền lại đối với những frame trong tuần tụ bị
hỏng .Chiến lược này được gọi là truyền lại có lựa chọn(selective repeat)
- S phát hiện sự tiếp nhận một I-frame không theo tuần tự và yêu cầu P truyền lại
tất cả các I-frame chưa được báo nhận kể từ thời điểm nhận thành công một I-frame
sau cùng (đượ báo nhận) chiến lược này được gọi là truyền lại một nhóm(go back N).
3.1. Truyền lại có lựa chọn (selective repeat):

Chiến lược truyền lại có lựa chon có thể được thực hiên theo hai cách :
- S biết các frame được nhân tốt và P xác định một frame đã mất dựa vào tuần tự
của các ACK-frame truyền lại đã nhận và tiến hành truyền lại.Cách này được gọi là
truyền lại ngầm định(selective repeat mplicit retransmission)
- S trả về một thông báo từ chối nhận NAK(negative acknowledgment) đối với
một frame bị lệch tuần tự.Sau khi nhận được NAK-frame này P sẽ tiến hành truyền lại
I-frame đươc định danh trong NAK-frame.Cách này gọi là truyền lại có yêu cầu
rõ(selective repeat explicit request).
Ví Dụ:
Truyền lại ngầm định:
18
Chương 5: Cơ sở của giao thức Nhóm 10
Giả sử I-frame N+1 bị hỏng:
- S trả lời một ACK-frame cho mỗi I-frame nhận tốt ngay trước đó.S trả lời
ACK-frame co các I-frame N,N+2,N+3.
- Khi nhận được ACK-frame cho I-frame của N+2 , P phát hiện chưa nhận được
ACK-frame của N+1. P chuyển sang trạng thái truyền lại,trong trạng thái này viêc
truyền một I-frame mới đươc hoãn lại cho đến khi tất cả các frame không được báo
nhận đều được truyền lại.
- P xóa I-frame của N+2 ra khỏi danh sách truyền lại và truyền lại N+1 trước khi
tiếp tục truyền I-frame mới.
- Khi nhận được I-frame N+1 ,nội dung của các frame được xếp hàng trong danh
sách liên kết được S phân phối đến lớp trên.
19
Chương 5: Cơ sở của giao thức Nhóm 10
Trường hợp ACK-frame bị hỏng
Giả sử ACK-frame N bị hỏng:
- Khi nhận được ACK-frame N+1,P phát hiện chưa nhận được ACK-frame của
N do đó P tiến vào trạng thái truyên lại và truyền lại I-frame N.
- Khi nhận được I-frame N được truyền lại ,S nhờ vào biến tuần tự nhận mà xác

định được I-frame đã được nhân tốt vì vậy nó xóa bỏ frame trùng lặp này nhưng vẫn
gửi một ACK-frame để đảm bảo P xóa I-frame này khỏi danh sách truyền lại.
20
Chương 5: Cơ sở của giao thức Nhóm 10
I-frame N+1 bị hỏng
Giả sử I-frame N+1 bị hỏng:
- S trả một ACK-frame cho I-frame N.
- Khi S nhận được I-frame N+2 nó phát hiện I-frame N+1 bị thất lạc vì vậy nó
gửi một NAK-frame có chứa định danh của I-frame thất lac N+1.S sẽ tiến vào trạng thái
truyền lại trong trạng thái này việc gửi ACK-frame sẽ tam treo.
- Khi nhận được NAK-frame N+1,P xem như S vẫn còn đang đợi I-frame
N+1,do đó nó tiến vào trang thái truyền và truyền lại I-frame N+1.
- Khi nhận được I-frame N+1,S giải phóng trạng thái truyền lại và khôi phục việc
gửi ACK-frame.
21
Chương 5: Cơ sở của giao thức Nhóm 10
- ACK-frame N+4 báo nhận cho tất cả các frame có chỉ số đến N+4 bao gồm cả
N+4.
- Một thời gian chờ timer được dùng cho mỗi NAK-frame để đảm bảo rằng nếu
nó bị hỏng thì vẫn được truyền lại.
Sai sót do không có trạng thái truyền lại:
Giả sử không tồn tại trạng thái truyền lại:
- I-frame N+1 bi hỏng
- S gửi một NAK-frame N+1 nhưng NAK-frame này bị hỏng
- S nhận đươc I-frame N+3 nó gửi trả ACK-frame N+3,điều này báo nhân tốt
cho tất cả các frame từ N+3 trở xuống bao gồm cả I-frame N+1 vì vậy I-frame này
không được truyền lại.=> I-frame N+1 sẽ bị mất.
Chiến lược truyền lại có lựa chọn được dùng chủ yếu cho trường hợp các I-frame
đang được truyền là các thực thể độc lập(self-contained entities),nghĩa là thứ tự nhận
không quan trọng ,hoặc được dùng khi tất cả các I-frame liên quan đến cùng một bản

tin và các frame được tái thiết trở thành hình dạng ban đầu bởi S.
22
Chương 5: Cơ sở của giao thức Nhóm 10
Trong nhiều ứng dụng frame phải được phân phối theo trình tự giông như khi
được tạo ra.Do đó các frame nhận được không đúng thứ tự phải được giữ tại S cho đến
khi nhận đủ các frame thất lạc.Thông thường các frame này có kích thước lớn và các
frame cần giữ lại cũng vậy.Vì vậy điều này đòi hỏi hệ thông phần cứng phải có dung
lương lưu trữ lớn .Do đó hầu hết các ứng dụng đã được giới thiệu và các mạng đều
dùng lược đồ điều khiển truyền lại go back n.
3.2. Truyền lại một nhóm (Go-Back_N)
Khi S phát hiên một frame không đúng tuần tự nó báo cho P để bắt đầu truyền lại
các frame bắt đầu từ chỉ số frame đã chỉ định.S thưc hiện điều này bằng cách gửi 1
frame phủ nhận đặt biệt gọi là reject.
Chiến lược truyền lại Go-back-N:trường hợp frame bị hỏng.
Trong hình trên giả sử I-frame N+1 bi hỏng:
- S nhận được I-frame N+2 không đúng tuần tự.S gửi một NAK-frame N+1 báo
cho P quay trở lại và bắt đầu truyền lại từ I-frame N+1.
- Khi nhân NAK-frame ,P vào trạng thái truyền lại.Trong trạng thái này nó tạm
dừng truyền frame mới và bắt đầu truyền lại các frame trong danh sách truyền lại.
23
Chương 5: Cơ sở của giao thức Nhóm 10
- S loại bỏ các frame cho đến khi nhận được I-frame N+1.Khi nhận được I-frame
N+1 S trở lại trạng thái sẵn sàng nhận frame mới.và gửi báo nhận cho P.
- Một khoảng thời gian timeout được S áp dụng cho các NAK-frame.Một NAK-
frame thứ 2 sẽ đươc gửi nếu sau khoảng thời gian timeout kể từ khi NAK-frame thứ
nhất gửi đi S vẫn chưa nhận được I-frame theo đúng tuần tự.
Chiến lươc truyền lại go-back-n:trường hợp ACK frame bi hỏng.
Trong hình trên S nhận mỗi I-frame được truyền thành công,giả sử ACK-frame
N và N+1 đều bị hỏng:
- Khi nhận ACK-frame N+2,P phát hiện có 2 I-frame bị mất tuần tự báo nhận

trong danh sách truyền lại(N và N+1).Vì là ACK chứ không phải là NAK nên P giả sử
rằng hai ACK-frame N và N+1 đã bị hỏng do đó nó chấp nhận ACK frame N+2 cũng là
báo nhận cho 2 frame còn đang đợi là N va N+1.
Trong chiến lược go-back-n tuần tự frame chính xác được duy trì,do đó tối thiểu
được nhu cầu dùng bộ đệm(bộ nhớ) trong hoạt động.Tuy nhiên vì một số frame đã được
24
Chương 5: Cơ sở của giao thức Nhóm 10
nhận tốt mà vẫn phải truyền lại do đó hiệu suất sử dụng băng thông truyền có sẵn thấp
hơn khi sử dụng lược đồ truyền lại có lựa chọn.
3.3 Điều khiển luồng (Flow control)
Điều khiển luồng là một thành phần có liên quan đến việc điều khiển tốc độ truyền
ký tự dữ liệu (hay frame) trên liên kết sao cho nơi thu luôn có đủ tài nguyên bộ nhớ để
tiếp nhận trước khi xử lý.
Ví dụ: nếu một máy tính đầu xa phục vụ cho nhiều đầu cuối, nó có thể bị quá tải
tạm thời (không xử lý được tất cả ký tự đến) nếu tốc độ truyền không thay đổi.
Có hai lược đồ điều khiển luồng phổ biến nhất
3.3.1 X-ON/ X-OFF
- Nếu máy ở xa hết bộ nhớ, nó sẽ tự gửi ký tự đặc biệt X-OFF đến bộ điều khiển
trong thiết bị đầu cuối để ngừng việc truyền các ký tự mới.
Lúc này tất cả ký tự được nhập vào sẽ được bỏ qua hoặc lưu vào buffer (không
phải phải xử lý các ký tự một cách lãng phí)
- Sau khi sự cố quá tải đã được khắc phục, một ký tự X-ON được gửi đi để thông
báo có thể tiếp tục việc truyền tin.
Ví dụ: khi máy tính gửi thông tin đến máy in, do tốc độ xử lý dữ liệu khác nhau
nên các ký tự sẽ được lưu vào một buffer rồi được xử lý từng phần.
3.3.2 Cửa sổ trượt (Sliding window)
25

×