1. Multiply M(x) by xk; that is, add k zeros at the end of the message dịch - 1. Multiply M(x) by xk; that is, add k zeros at the end of the message Việt làm thế nào để nói

1. Multiply M(x) by xk; that is, ad

1. Multiply M(x) by xk; that is, add k zeros at the end of the message.
Call this zero-extended message T(x).
2. Divide T(x) by C(x) and find the remainder.
3. Subtract the remainder from T(x).
It should be obvious that what is left at this point is a message that
is exactly divisible by C(x). We may also note that the resulting message
consists of M(x) followed by the remainder obtained in step 2, because
when we subtracted the remainder (which can be no more than k bits
long), we were just XORing it with the k zeros added in step 1. This part
will become clearer with an example.
Consider the message x7 + x4 + x3 + x1, or 10011010. We begin by
multiplying by x3, since our divisor polynomial is of degree 3. This gives
10011010000. We divide this by C(x), which corresponds to 1101 in this
case. Figure 2.15 shows the polynomial long-division operation. Given the
rules of polynomial arithmetic described above, the long-division operation proceeds much as it would if we were dividing integers. Thus, in the
first step of our example, we see that the divisor 1101 divides once into the
first four bits of the message (1001), since they are of the same degree, and
leaves a remainder of 100 (1101 XOR 1001). The next step is to bring down
a digit from the message polynomial until we get another polynomial with
the same degree as C(x), in this case 1001. We calculate the remainder
again (100) and continue until the calculation is complete. Note that the
“result” of the long division, which appears at the top of the calculation,
is not really of much interest—it is the remainder at the end that matters.
You can see from the very bottom of Figure 2.15 that the remainder of
the example calculation is 101. So we know that 10011010000 minus 101
would be exactly divisible by C(x), and this is what we send. The minus
operation in polynomial arithmetic is the logical XOR operation, so we
actually send 10011010101. As noted above, this turns out to be just the
original message with the remainder from the long division calculation
appended to it. The recipient divides the received polynomial by C(x)
and, if the result is 0, concludes that there were no errors. If the result
is nonzero, it may be necessary to discard the corrupted message; with
some codes, it may be possible to correct a small error (e.g., if the error
affected only one bit). A code that enables error correction is called an
error-correcting code (ECC).
PETERSON-AND-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 Page 100 #31
100 CHAPTER 2 Getting connected
Generator 1101
11111001
10011010000 Message
1101
1001
1101
1000
1101
1011
1101
1100
1101
1000
1101
101 Remainder
■ FIGURE 2.15 CRC calculation using polynomial long division.
Now we will consider the question of where the polynomial C(x)
comes from. Intuitively, the idea is to select this polynomial so that it is
very unlikely to divide evenly into a message that has errors introduced
into it. If the transmitted message is P(x), we may think of the introduction of errors as the addition of another polynomial E(x), so the recipient
sees P(x)+ E(x). The only way that an error could slip by undetected
would be if the received message could be evenly divided by C(x), and
since we know that P(x) can be evenly divided by C(x), this could only
happen if E(x) can be divided evenly by C(x). The trick is to pick C(x) so
that this is very unlikely for common types of errors.
One common type of error is a single-bit error, which can be expressed
as E(x) = xi when it affects bit position i. If we select C(x) such that the
first and the last term (that is, the xk and x0 terms) are nonzero, then we
already have a two-term polynomial that cannot divide evenly into the
one term E(x). Such a C(x) can, therefore, detect all single-bit errors. In
general, it is possible to prove that the following types of errors can be
detected by a C(x) with the stated properties:
■ All single-bit errors, as long as the xk and x0 terms have nonzero
coefficients
■ All double-bit errors, as long as C(x) has a factor with at least three
terms
■ Any odd number of errors, as long as C(x) contains the factor
(x + 1)
PETERSON-AND-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 Page 101 #32
2.4 Error detection 101
Error Detection or Error Correction?
We have mentioned that it is possible to use codes that not only detect the
presence of errors but also enable errors to be corrected. Since the details
of such codes require yet more complex mathematics than that required
to understand CRCs, we will not dwell on them here. However, it is worth
considering the merits of correction versus detection.
At first glance, it would seem that correction is always better, since with
detection we are forced to throw away the message and, in general, ask for
another copy to be transmitted. This uses up bandwidth and may introduce
latency while waiting for the retransmission. However, there is a downside
to correction, as it generally requires a greater number of redundant bits to
send an error-correcting code that is as strong (that is, able to cope with the
same range of errors) as a code that only detects errors. Thus, while error
detection requires more bits to be sent when errors occur, error correction
requires more bits to be sent all the time. As a result, error correction tends
to be most useful when (1) errors are quite probable, as they may be, for
example, in a wireless environment, or (2) the cost of retransmission is too
high, for example, because of the latency involved retransmitting a packet
over a satellite link.
The use of error-correcting codes in networking is sometimes referred to
as forward error correction (FEC) because the correction of errors is handled
“in advance” by sending extra information, rather than waiting for errors to
happen and dealing with them later by retransmission. FEC is commonly
used in wireless networks such as 802.11.
■ Any “burst” error (i.e., sequence of consecutive errored bits) for
which the length of the burst is less than k bits (Most burst errors of
length greater than k bits can also be detected.)
Six versions of C(x) are widely used in link-level protocols (shown in
Table 2.3). For example, Ethernet uses CRC-32, while HDLC uses CRCCCITT. ATM, as described in Chapter 3, uses CRC-8, CRC-10, and CRC-32.
Finally, we note that the CRC algorithm, while seemingly complex, is
easily implemented in hardware using a k-bit shift register and XOR gates.
The number of bits in the shift register equals the degree of the generator
polynomial (k). Figure 2.16 shows the hardware that would be used for the
generator x3 + x2 + 1 from our previous example. The message is shifted
PETERSON-AND-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 Page 102 #33
102 CHAPTER 2 Getting connected
Table 2.3 Common CRC Polynomials
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 XOR gate x2
Message
■ FIGURE 2.16 CRC calculation using shift register.
in from the left, beginning with the most significant bit and ending with
the string of k zeros that is attached to the message, just as in the long
division example. When all the bits have been shifted in and appropriately XORed, the register contains the remainder—that is, the CRC (most
significant bit on the right). The position of the XOR gates is determined
as follows: If the bits in the shift register are labeled 0 through k − 1, left to
right, then put an XOR gate in front of bit n if there is a term xn in the generator polynomial. Thus, we see an XOR gate in front of positions 0 and 2
for the generator x3 + x2 + x0.
2.5 RELIABLE TRANSMISSION
As we saw in the previous section, frames are sometimes corrupted while
in transit, with an error code like CRC used to detect such errors. While
some error codes are strong enough also to correct errors, in practice the
overhead is typically too large to handle the range of bit and burst errors
PETERSON-AND-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 Page 103 #34
2.5 Reliable transmission 103
that can be introduced on a network link. Even when error-correcting
codes are used (e.g., on wireless links) some errors will be too severe to
be corrected. As a result, some corrupt frames must be discarded. A linklevel protocol that wants to deliver frames reliably must somehow recover
from these discarded (lost) frames.
It’s worth noting that reliability is a function that may be provided
at the link level, but many modern link technologies omit this function.
Furthermore, reliable delivery is frequently provided at higher levels,
including both transport (as described in Section 5.2) and, sometimes,
the application layer (Chapter 9). Exactly where it should be provided
is a matter of some debate and depends on many factors. We describe
the basics of reliable delivery here, since the principles are common
across layers, but you should be aware that we’re not just talking about
a link-layer function (see the “What’s in a Layer?” sidebar above for more
on this).
This is usually accomplished using a combination of two fundamental mechanisms—acknowledgments and timeouts. An acknowledgment
(ACK for short) is a small control frame that a protocol sends back to its
peer saying that it has received an earlier frame. By control frame we mean
a header without any data, although a protocol can piggyback an ACK
on a data frame it just happens to be sending in the opposite direction.
The receipt of an acknowledgment indicates to the sender of the original frame that its frame was successfully delivered. If the sender does not
receive an acknowledgment after a reasonable amount of time, then it
retransmits the original frame. This action of waiting a reasonable amount
of time is called a timeout.
The general strategy of using acknowledgments and
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
1. nhân M(x) của xk; có nghĩa là, thêm k Zero vào cuối thư.Gọi thông báo số không mở rộng này T(x).2. phân chia T(x) bởi C(x) và tìm thấy phần còn lại.3. trừ phần còn lại từ T(x).Nó nên được rõ ràng rằng tại thời điểm này những gì còn lại là một thông điệp màlà chính xác số chia hết cho C(x). Chúng tôi cũng có thể lưu ý rằng các kết quả tin nhắnbao gồm M(x) theo phần còn lại thu được trong bước 2, vìKhi chúng tôi trừ đi thời gian còn lại (có thể không có nhiều hơn k bitdài), chúng tôi đã là chỉ XORing nó với k Zero được thêm vào trong bước 1. Phần nàysẽ trở nên rõ ràng hơn với một ví dụ.Xem xét thư x 7 + x 4 + x 3 + x 1, hoặc 10011010. Chúng tôi bắt đầu bằngcách nhân x 3, kể từ khi chúng tôi ước đa thức của độ 3. Điều này cho phép10011010000. chúng ta phân chia này bởi C(x), tương ứng với 1101 ở đâytrường hợp. Con số 2,15 cho thấy hoạt động long-bộ phận đa thức. Cho cácquy tắc của đa thức số học Mô tả ở trên, các hoạt động long-bộ phận tiền nhiều như nó sẽ nếu chúng tôi đã phân chia số nguyên. Như vậy, trong cácbước đầu tiên của ví dụ của chúng tôi, chúng tôi thấy rằng ước này 1101 phân chia một lần vào cácbit bốn đầu tiên của thư (1001), vì chúng là của 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à để lật đổmột chữ số từ đa thức thư cho đến khi chúng tôi nhận được một đa thức vớimức độ tương tự như C(x), trong trường hợp này 1001. Chúng tôi tính toán phần còn lạimột lần nữa (100) và tiếp tục cho đến khi tính toán xong. Lưu ý rằng các"kết quả" của đội long xuất hiện ở phía trên của phép tính,là không thực sự quan tâm nhiều — nó là phần còn lại vào cuối những vấn đề.Bạn có thể nhìn thấy từ dưới cùng rất của con số 2.15 mà phần còn lại củatính toán ví dụ là 101. Vì vậy, chúng ta biết rằng 10011010000 trừ 101sẽ là chính xác số chia hết cho C(x), và đây là những gì chúng tôi gửi. TrừCác hoạt động trong đa thức số học là hoạt động XOR hợp lý, vì vậy chúng tôithực sự gửi 10011010101. Như đã nói ở trên, điều này hóa ra là chỉ cácCác thông báo ban đầu với phần còn lại từ tính toán bộ phận longnối thêm vào nó. Người nhận chia đa thức nhận được bởi C(x)và, nếu kết quả là 0, kết luận rằng đã có không có lỗi. Nếu kết quảlà nonzero, nó có thể là cần thiết để loại bỏ thư bị hỏng; vớimột số mã, nó có thể có thể để sửa chữa một lỗi nhỏ (ví dụ, nếu lỗibị ảnh hưởng chỉ một chút). Một mã cho phép sửa lỗi được gọi là mộtSửa chữa lỗi code (ECC).PETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 100 #31100 chương 2 nhận được kết nốiMáy phát điện 11011111100110011010000 thư11011001110110001101101111011100110110001101101 còn lại■ HÌNH 2.15 CRC tính toán bằng cách sử dụng đa thức long division.Bây giờ chúng tôi sẽ xem xét các câu hỏi về nơi đa thức C(x)đến từ. Trực giác, mục đích là để chọn đa thức này do đó nó làrất khó để phân chia đồng đều vào một thư có lỗi giới thiệuvào nó. Nếu thư truyền là P(x), chúng tôi có thể nghĩ về sự xuất hiện của lỗi như việc bổ sung của một đa thức E(x), vì vậy người nhậnthấy P(x) + E(x). Cách duy nhất mà một lỗi có thể trượt bởi không bị phát hiệnsẽ là nếu tin nhắn đã nhận có thể được chia đồng đều bởi C(x), vàkể từ khi chúng ta biết rằng P(x) có thể được chia đồng đều bởi C(x), điều này có thể chỉxảy ra nếu E(x) có thể được chia đồng đều bởi C(x). Bí quyết là để chọn C(x) như vậyrằng điều này là rất khó để phổ biến các loại lỗi.Một trong những loại phổ biến của lỗi là một single-bit lỗi, mà có thể được bày tỏnhư E(x) = xi khi nó ảnh hưởng đến chút vị trí tôi. Nếu chúng tôi chọn C(x) như vậy mà cácđầu tiên và thời hạn cuối (có nghĩa là, xk và x 0 điều khoản) là nonzero, sau đó chúng tôiđã có một đa thức tin dự báo thủy văn hạn hai không thể phân chia đồng đều vào cácmột thuật ngữ E(x). C(x) như vậy có thể, do đó, phát hiện tất cả single-bit lỗi. Ởnói chung, nó có thể chứng minh rằng các loại sau đây của lỗi có thểđược phát hiện bởi một C(x) với các tài sản đã nêu:■ Tất cả single-bit lỗi, miễn là xk và x 0 điều khoản có nonzeroHệ số■ Tất cả đôi-bit lỗi, miễn là C(x) có một yếu tố với ít nhất bađiều khoản■ bất cứ số lẻ của lỗi, miễn là C(x) chứa các yếu tố(x + 1)PETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 101 #322.4 phát hiện lỗi 101Phát hiện lỗi hoặc sửa lỗi?Chúng tôi đã đề cập đến rằng nó có thể sử dụng mã mà không chỉ phát hiện cácsự hiện diện của lỗi mà còn kích hoạt lỗi phải được sửa chữa. Kể từ khi các chi tiếtCác mã yêu cầu toán học được phức tạp hơn so với yêu cầuđể hiểu CRCs, chúng tôi sẽ không ngự trên họ ở đây. Tuy nhiên, nó có giá trịxem xét thành tích của chỉnh so với phát hiện.Thoạt nhìn, nó sẽ có vẻ rằng điều chỉnh là luôn luôn tốt hơn, từ vớiphát hiện chúng tôi buộc phải vứt bỏ tin nhắn, và nói chung, yêu cầumột bản sao được truyền đi. Điều này sử dụng băng thông và có thể giới thiệuđộ trễ trong khi chờ đợi cho các retransmission. Tuy nhiên, có một nhược điểmđể chỉnh sửa, vì nó ở nói chung đòi hỏi một số lớn các bit dự phònggửi một sửa chữa lỗi mã mạnh (có nghĩa là, có thể để đối phó với cáccùng một loạt các lỗi) như là một mã mà chỉ phát hiện lỗi. Vì vậy, trong khi lỗiphát hiện yêu cầu thêm bit được gửi khi xảy ra lỗi, sửa lỗiyêu cầu thêm bit được gửi tất cả thời gian. Kết quả là, sửa lỗi có xu hướngđể hữu ích nhất khi (1) lỗi khá có thể xảy ra, vì bạn có thể, choVí dụ, trong một môi trường không dây, hoặc (2) chi phí retransmission là quácao, ví dụ, vì độ trễ tham gia retransmitting một góitrên một liên kết vệ tinh.Sử dụng sửa chữa lỗi mã trong mạng đôi khi được gọi đếnnhư chuyển tiếp sửa lỗi (FEC) vì sửa chữa lỗi được xử lý"trước" bởi gửi thêm thông tin, chứ không phải là chờ đợi cho các lỗi đểxảy ra và đối phó với họ sau đó bởi retransmission. FEC là thườngđược sử dụng trong mạng không dây như 802.11.■ bất kỳ "nổ" lỗi (tức là, các trình tự liên tiếp errored bit) chochiều dài của sự bùng nổ là ít hơn k bit (hầu hết nổ các lỗi củachiều dài lớn hơn k bit có thể cũng được phát hiện.)Sáu phiên bản của C(x) được sử dụng rộng rãi trong giao thức liên kết cấp (thể hiện trongBảng 2.3). Ví dụ, Ethernet sử dụng CRC-32, trong khi sử dụng HDLC CRCCCITT. ATM, như được diễn 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,dễ dàng thực hiện trong phần cứng bằng cách sử dụng một đăng ký thay đổi k-bit và XOR gates.Số bit trong đăng ký thay đổi bằng mức độ của các máy phát điệnđa thức (k). Con số 2,16 cho thấy phần cứng nào được sử dụng cho cácMáy phát điện x 3 + x 2 + 1 từ ví dụ trước. Thư được chuyểnPETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 102 #33102 chương 2 nhận được kết nốiĐa thức CRC phổ biến bảng 2.3CRC C(x)CRC-8 x 8 x 2 + x 1 + 1CRC-10 x 10 + x 9 + x 5 + x 4 + x 1 + 1CRC-12 x 12 + x 11 + x 3 + x 2 + x + 1CRC-16 x 16 x 15 + x 2 + 1CRC-CCITT x 16 x 12 + x 5 + 1CRC-32 x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11+ x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1x 0 x 1 XOR gate x 2Tin nhắn■ HÌNH 2,16 CRC tính toán bằng cách sử dụng sự thay đổi đăng ký.trong từ trái sang, bắt đầu với các bit quan trọng nhất và kết thúc vớiChuỗi k Zero đính kèm với thư, giống như trong dàiVí dụ phân chia. Khi tất cả các bit đã được chuyển trong và một cách thích hợp XORed, đăng ký có phần còn lại-có nghĩa là, CRC (hầu hếtđáng kể bit trên bên phải). Vị trí của các cửa XOR được xác địnhnhư sau: nếu các bit trong đăng ký thay đổi được gắn nhãn 0 đến k − 1, trái đểphải, sau đó đặt một cửa khẩu XOR ở phía trước của bit n nếu có là một thuật ngữ xn trong các máy phát điện đa thức. Vì vậy, chúng tôi thấy một cửa khẩu XOR ở phía trước của vị trí 0 và 2cho máy phát điện x 3 + x 2 + x 0.2.5 ĐÁNG TIN CẬY TRUYỀNNhư chúng ta đã thấy trong phần trước, khung đôi khi bị hỏng trong khiquá cảnh, với một lỗi mã như CRC sử dụng để phát hiện lỗi như vậy. Thời gianmột số mã lỗi được đủ mạnh cũng để sửa lỗi, trong thực tế cácchi phí thường là quá lớn để xử lý những lỗi chút và chụpPETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 103 #342.5 đáng tin cậy truyền 103mà có thể được nạp vào một liên kết mạng. Ngay cả khi sửa chữa lỗimã được sử dụng (ví dụ như, trên kết nối không dây) một số lỗi sẽ được 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 muốn cung cấp khung đáng tin cậy bằng cách nào đó phải phục hồitừ những khung hình (bị mất) bị loại bỏ.Nó là đáng chú ý rằng độ tin cậy là một chức năng mà có thể cung cấpở cấp độ liên kết, nhưng bỏ qua công nghệ hiện đại liên kết nhiều chức năng này.Hơn nữa, đáng tin cậy phân phối thường xuyên được cung cấp ở cấp độ cao hơn,bao gồm cả hai giao thông vận tải (như được diễn tả trong phần 5.2) và đôi khi,tầng ứng dụng (chương 9). Chính xác nơi mà nó nên được cung cấplà một vấn đề của một số cuộc tranh luận và phụ thuộc vào nhiều yếu tố. Chúng tôi mô tảkhái niệm cơ bản của giao hàng đáng tin cậy ở đây, kể từ khi các nguyên tắc phổ biếntrên lớp, nhưng bạn cần phải nhận thức rằng chúng tôi không chỉ nói vềtầng liên kết hoạt động (xem "Những gì là trong một lớp không?" bên trên để biết thêmvề điều 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-acknowledgments và timeout. Một sự thừa nhận(ACK cho ngắn) là một khung nhỏ điều khiển một giao thức gửi trở lại của nóngang hàng nói rằng nó đã nhận được một khung hình trước đó. Bởi khung kiểm soát chúng tôi có nghĩa làmột tiêu đề mà không có bất kỳ dữ liệu nào, mặc dù một giao thức có thể piggyback một ACKtrên một khung dữ liệu nó chỉ xảy ra để gửi trong hướng đối diện.Khi nhận được một sự thừa nhận chỉ ra cho người gửi gốc khung khung của nó đã thành công được chuyển giao. Nếu người gửi khôngnhận được một sự thừa nhận sau khi một số tiền hợp lý của thời gian, sau đó nóretransmits khung ban đầu. Hành động này chờ đợi một số lượng hợp lýthời gian được gọi là một thời gian chờ.Chiến lược chung của việc sử dụng acknowledgments và
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
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..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: