1. Multiply M (x) bởi xk; đó là, thêm k số không ở cuối tin nhắn.
Gọi này nhắn zero-mở rộng T (x).
2. Chia T (x) C (x) và tìm thấy phần còn lại.
3. Trừ đi phần còn lại từ (x) T.
Nó nên được rõ ràng rằng những gì còn lại tại thời điểm này là một thông điệp
là chia hết cho C (x). Chúng tôi cũng có thể lưu ý rằng các thông báo kết quả
bao gồm M (x) tiếp theo là phần còn lại được ở bước 2, bởi vì
khi chúng ta trừ đi phần còn lại (trong đó có thể không nhiều hơn so với bit k
dài), chúng tôi đã chỉ XORing nó với các số không k thêm vào trong bước 1. Phần này
sẽ trở nên rõ ràng hơn với một ví dụ.
Xét x7 nhắn + x4 + x3 + x1, hoặc 10011010. Chúng tôi bắt đầu bằng cách
nhân với x3, vì đa thức ước của chúng tôi là các mức độ 3. Điều này cho
10011010000. Chúng tôi phân chia này bằng C (x), tương ứng với 1.101 trong này
trường hợp. Hình 2.15 cho thấy các hoạt động dài phân chia-đa thức. Với
quy tắc số học đa thức được mô tả ở trên, hoạt động lâu phận-tiến nhiều như nó sẽ nếu chúng tôi đã chia số nguyên. Như vậy, trong
bước đầu tiên của ví dụ trên, chúng ta thấy rằng các ước 1101 một lần chia thành
bốn bit đầu tiên của tin nhắn (1001), kể từ khi họ có cùng một mức độ, và
để lại một phần còn lại của 100 (1101 XOR 1001). Bước tiếp theo là để đưa xuống
một chữ số từ các đa thức nhắn cho đến khi chúng tôi nhận được một đa thức với
mức độ tương tự như C (x), trong trường hợp này 1001. Chúng tôi tính toán còn lại
một lần nữa (100) và tiếp tục cho đến khi tính toán được hoàn tất. Lưu ý rằng
"kết quả" của việc phân chia dài, sẽ xuất hiện ở phía trên cùng của phép tính,
không phải là thực sự của nhiều lãi đó là phần còn lại ở cuối có vấn đề.
Bạn có thể nhìn thấy từ bên dưới của hình 2.15 là phần còn lại của
việc tính toán ví dụ là 101. Vì vậy, chúng ta biết rằng 10011010000 trừ đi 101
sẽ chia hết cho C (x), và đây là những gì chúng tôi gửi. Trừ
hoạt động trong số học đa thức là hoạt động XOR logic, vì vậy chúng tôi
thực sự gửi 10011010101. Như đã nói ở trên, điều này hóa ra chỉ là những
thông báo ban đầu với phần còn lại từ việc tính toán chia dài
nối vào nó. Người nhận chia đa thức nhận được bằng C (x)
, và nếu kết quả là 0, kết luận rằng không có lỗi. Nếu kết quả
là khác không, nó có thể là cần thiết để loại bỏ các tin nhắn bị hỏng; với
một số mã, nó có thể có thể để sửa một lỗi nhỏ (ví dụ, nếu lỗi
chỉ bị ảnh hưởng một chút). Một mã cho phép sửa lỗi được gọi là một
mã sửa lỗi (ECC).
PETERSON-VÀ-DAVIE 08-ch02-070-167-9780123850591 2011/11/01 14:16 Page 100 # 31
100 CHƯƠNG 2 Bắt kết nối
Generator 1101
11111001
10011010000 nhắn
1101
năm 1001
năm 1101
năm 1000
1101
1011
1101
năm 1100
1101
1000
năm 1101
còn lại 101
■ Hình 2.15 CRC tính toán bằng cách sử dụng phân chia đa thức dài.
Bây giờ chúng ta sẽ xem xét các câu hỏi của nơi C đa thức (x)
đến từ. Bằng trực giác, ý tưởng là để lựa chọn đa thức này để nó là
rất khó để phân chia đều thành một thông điệp rằng có lỗi được giới thiệu
vào nó. Nếu các thông điệp truyền là P (x), chúng ta có thể nghĩ đến việc giới thiệu các lỗi như sự bổ sung của một đa thức E (x), do đó người nhận
thấy P (x) + E (x). Cách duy nhất mà một lỗi có thể trượt không bị phát hiện bởi
sẽ là nếu thông điệp nhận được có thể được chia đều bằng C (x), và
kể từ khi chúng ta biết rằng (x) P có thể được chia đều bằng C (x), điều này chỉ có thể
xảy ra nếu E (x) có thể được chia đều bằng C (x). Bí quyết là để chọn C (x) vì vậy
điều này là rất khó xảy ra đối với loại phổ biến của lỗi.
Một trong những loại phổ biến của lỗi là một lỗi duy nhất-bit, có thể được thể hiện
như (x) = E xi khi nó ảnh hưởng đến vị trí bit i . Nếu chúng ta chọn C (x) sao cho
đầu và hạn cuối cùng (có nghĩa là, các xk và x0 kỳ) là khác không, sau đó chúng tôi
đã có một đa thức hai nhiệm kỳ mà không thể chia đều thành các
một hạn E (x). Như một C (x) có thể, do đó, phát hiện tất cả các lỗi đơn bit. Trong
chung, nó có thể chứng minh rằng các loại sau đây của các lỗi có thể được
phát hiện bởi một C (x) với các đặc tính nêu rõ:
■ Tất cả các lỗi bit đơn, miễn là các điều khoản và xk x0 có nonzero
hệ số
■ Tất cả đôi lỗi bit, miễn là C (x) có một nhân tố với ít nhất ba
điều kiện
■ Bất kỳ số lẻ của các lỗi, miễn là C (x) có chứa các yếu tố
(x + 1)
PETERSON-VÀ-DAVIE 08-ch02-070 -167-9780123850591 2011/11/01 14:16 Page 101 # 32
2.4 Lỗi phát hiện 101
phát hiện lỗi hay sửa lỗi?
Chúng tôi đã đề cập rằng nó có thể sử dụng mã số đó không chỉ phát hiện
sự hiện diện của các lỗi mà còn cho phép các lỗi để được sửa chữa. Kể từ khi các chi tiết
của các mã như vậy đòi hỏi toán học mà phức tạp hơn so với yêu cầu
để hiểu CRCs, chúng tôi sẽ không dừng lại ở đó ở đây. Tuy nhiên, nó là giá trị
xem xét những giá trị của sự điều chỉnh so với phát hiện.
Ngay từ cái nhìn đầu tiên, nó sẽ có vẻ chỉnh đó là luôn luôn tốt hơn, kể từ khi có
phát hiện chúng ta buộc phải vứt bỏ các thông điệp và, nói chung, yêu cầu
một bản sao khác được truyền đi. Này sử dụng băng thông và có thể giới thiệu
độ trễ trong khi chờ đợi cho việc phát lại. Tuy nhiên, có một nhược điểm
để sửa chữa, vì nó thường đòi hỏi một số lượng lớn các bit dư thừa để
gửi một mã sửa lỗi đó là càng mạnh mẽ (có nghĩa là, khả năng đối phó với
cùng một loạt các lỗi) là một mã mà chỉ phát hiện lỗi. Như vậy, trong khi lỗi
phát hiện đòi hỏi nhiều bit được gửi khi xảy ra lỗi, sửa lỗi
đòi hỏi nhiều bit được gửi đi tất cả các thời gian. Kết quả là, việc sửa lỗi có xu hướng
sẽ hữu ích nhất khi (1) lỗi có thể xảy ra là khá, vì chúng có thể được, ví
dụ, trong một môi trường không dây, hoặc (2) chi phí truyền lại là quá
cao, ví dụ, vì độ trễ liên quan đến phát lại một gói tin
trên một liên kết vệ tinh.
Việc sử dụng mã sửa lỗi trong mạng đôi khi được gọi
là sửa lỗi trước (FEC) bởi vì việc sửa lỗi được xử lý
"trước" bằng cách gửi thông tin thêm, thay vì chờ đợi lỗi để
xảy ra và đối phó với chúng sau này bằng truyền lại. FEC thường được
sử dụng trong các mạng không dây như 802.11.
■ Bất kỳ "bùng nổ" lỗi (ví dụ, chuỗi các bit errored liên tiếp) cho
đó chiều dài của burst là ít hơn k bit (Hầu hết vỡ lỗi của
chiều dài lớn hơn k bit cũng có thể được phát hiện.)
Sáu phiên bản của C (x) được sử dụng rộng rãi trong các giao thức mức liên kết (thể hiện trong
Bảng 2.3). Ví dụ, Ethernet sử dụng CRC-32, trong khi sử dụng HDLC CRCCCITT. ATM, như được mô tả trong Chương 3, sử dụng CRC-8, CRC-10, và CRC-32.
Cuối cùng, chúng tôi lưu ý rằng các thuật toán CRC, trong khi dường như phức tạp, được
dễ dàng thực hiện trong phần cứng bằng cách sử dụng một đăng ký k-bit thay đổi và cổng XOR .
Số lượng các bit trong thanh ghi dịch chuyển bằng các mức độ của máy phát điện
đa thức (k). Hình 2.16 cho thấy phần cứng mà có thể được sử dụng cho các
máy phát điện x3 + x2 + 1 từ ví dụ trước. Thông điệp này được chuyển
PETERSON-VÀ-DAVIE 2011/11/01 08-ch02-070-167-9780123850591 14:16 Page 102 # 33
102 CHƯƠNG 2 Bắt kết nối
Bảng 2.3 Common CRC Đa thức
CRC C (x)
CRC-8 x8 + x2 + x1 + 1
CRC-10 x10 + x9 + x5 + x4 + x1 + 1
CRC-12 x12 + x11 + x3 + x2 + x + 1
CRC-16 x16 + x15 + x2 + 1
CRC-CCITT x16 + x12 + x5 + 1
CRC-32 x32 + X26 + x23 + x22 + x16 + x12 + x11
+ x10 + x8 + x7 + x5 + x4 + x2 + x + 1
x0 x1 x2 cổng XOR
nhắn
■ Hình 2.16 CRC tính sử dụng ghi dịch.
từ cánh trái, bắt đầu với các bit quan trọng nhất và kết thúc với
chuỗi của k số không được đính kèm vào tin nhắn, chỉ là trong dài
ví dụ phân chia. Khi tất cả các bit đã được chuyển vào và phù hợp XORed, sổ chứa các phần còn lại, có nghĩa là, các CRC (nhất
là đáng kể bit bên phải). Vị trí của các cổng XOR được xác định
như sau: Nếu các bit trong thanh ghi chuyển này sẽ được dán nhãn 0 thông qua k - 1, từ trái sang
phải, sau đó đặt một cổng XOR trước bit n nếu có một xn hạn trong các đa thức phát điện . Do đó, chúng ta thấy một cổng XOR trước vị trí 0 và 2
cho máy phát điện x3 + x2 + x0.
2,5 TRUYỀN TIN CẬY
Như chúng ta đã thấy trong phần trước, khung đôi khi bị hỏng trong khi
quá cảnh, với một mã lỗi như CRC sử dụng để phát hiện các lỗi như vậy. Trong khi
một số mã lỗi là đủ mạnh cũng để sửa lỗi, trong thực tế các
chi phí thường là quá lớn để xử lý một loạt các bit và bốc lỗi
PETERSON-VÀ-DAVIE 08-ch02-070-167-9780123850591 2011/11/01 14: 16 Page 103 # 34
2.5 đáng tin cậy truyền tải 103
có thể được giới thiệu vào một liên kết mạng. Ngay cả khi sửa lỗi
mã được sử dụng (ví dụ, trên các liên kết không dây) một số lỗi sẽ là quá nghiêm trọng để
được sửa chữa. Kết quả là, một số khung hình tham nhũng phải được loại bỏ. Một giao thức linklevel mà muốn cung cấp khung hình đáng tin cậy bằng cách nào đó phải phục hồi
từ những phế (mất) khung hình.
Nó đáng chú ý rằng độ tin cậy là một chức năng mà có thể được cung cấp
ở mức độ liên kết, nhưng nhiều công nghệ kết nối hiện đại bỏ qua chức năng này.
Hơn nữa, giao hàng đáng tin cậy thường xuyên được cung cấp ở mức độ cao hơn,
bao gồm cả vận tải (như mô tả trong mục 5.2) và, đôi khi,
các lớp ứng dụng (Chương 9). Chính xác nơi nó cần được cung cấp
là một vấn đề gây tranh cãi và phụ thuộc vào nhiều yếu tố. Chúng tôi mô tả
các vấn đề cơ bản của giao đáng tin cậy ở đây, kể từ khi các nguyên tắc phổ biến
trên lớp, nhưng bạn nên biết rằng chúng ta không chỉ nói về
một chức năng link-layer (xem "Có gì trong một Layer?" sidebar trên để biết thêm
về này).
Điều này thường được thực hiện bằng cách sử dụng một sự kết hợp của hai cơ chế cơ bản-cảm ơn và timeout. Một sự thừa nhận
(ACK cho ngắn) là một khung điều khiển nhỏ mà một giao thức gửi lại cho mình
ngang hàng nói rằng nó đã nhận được một khung hình trước đó. By khung kiểm soát chúng tôi có nghĩa là
một tiêu đề mà không bất kỳ dữ liệu, mặc dù một giao thức có thể cõng một ACK
trên một khung dữ liệu nó chỉ xảy ra để được gửi theo hướng ngược lại.
Việc nhận một sự thừa nhận cho người gửi khung ban đầu rằng khung của nó là chuyển thành công. Nếu người gửi không
nhận được một sự thừa nhận sau một khoảng thời gian hợp lý, sau đó nó
truyền lại khung ban đầu. Hành động này của chờ đợi một số tiền hợp lý
của thời gian được gọi là một thời gian chờ.
Các chiến lược chung của việc sử dụng những lời cảm ơn và
đang được dịch, vui lòng đợi..