ppt - Staff of CIT

Download Report

Transcript ppt - Staff of CIT

Data Link Layer
Position of the data-link layer
Error Detection
and
Correction
Error Detection and Correction
่ ข้อมูลในแต่ละครงั้ อาจจะเกิดการ
ในการสง
ั
เปลีย
่ นแปลงของข้อมูลได้ เนือ
่ งจากสญญาณ
รบกวน หรือ ความผิดพลาดอืน
่ ๆ เพราะฉะนน
ั้
ื่ ถือของข้อมูลสง
่ จึง
เพือ
่ ให้มค
ี วามน่าเชอ
จาเป็นต้องมีการตรวจสอบ (Detection) และ
แก้ไข (Correction) ความผิดพลาดก่อนทีจ
่ ะ
นาข้อมูลทีไ่ ด้ไปใชง้ าน
ชนิดของความผิดพลาด Types of Error
ความผิดพลาดแบบบิตเดียว Single-Bit Error
ความผิดพลาดแบบหลายบิต Burst Error
ความผิดพลาดแบบบิตเดียว
่
มีเพียงแค่บต
ิ เดียว ทีม
่ ก
ี ารเปลีย
่ นแปลง เชน
่ ต้องการสง
่ ข้อมูล 00000010 แต่
จากรูป ผูส
้ ง
ผูร้ ับได้ร ับข้อมูล 00001010
ความผิดพลาดแบบหลายบิต
มี 2 บิต หรือมากกว่า ทีม
่ ก
ี ารเปลีย
่ นแปลง
่ จากรูป มีความผิดพลาดทีม
เชน
่ ค
ี วามยาว
8 บิต โดยน ับจากบิตแรกทีผ
่ ด
ิ พลาด จนถึง
บิตสุดท้ายทีผ
่ ด
ิ พลาด
Error Detection and Correction
เพือ
่ ตรวจสอบและแก้ไขข้อมูลทีผ
่ ด
ิ พลาด จึงมี
่ บิตพิเศษไปพร้อมก ับบิตข้อมูล
การสง
Redundancy
การตรวจสอบความผิดพลาดของข้อมูล Detection
วิธใี นการตรวจสอบความผิดพลาดของข ้อมูลมี
ดังต่อไปนี้
วิธต
ี รวจสอบแบบพาริต ี้ (Parity Check)
Simple Parity Check
้ ตตรวจสอบ หรือ พาริต ี้ (parity bit) สง่ ไปพร ้อมกับ
ใชบิ
บิตข ้อมูลจริง โดยการนับจานวนของบิต 1 ทัง้ หมด
•พาริตค
ี้ ู่ (even-parity)
•พาริตค
ี้ ี่ (odd-parity)
Two-Dimensional check
นาบิตของข ้อมูลทีต
่ ้องการสง่ ออกไปมาทาเป็ นตาราง
(table) โดยจะคานวณหาพาริตบ
ี้ ต
ิ ทัง้ แนวนอน (row)
และแนวตัง้ (column)
พาริตค
ี้ ู่ (Even-parity)
ตรวจสอบว่าบิต 1 เป็น
่ รือไม่
จานวนคูใ่ ชห
ตัวอย่ าง 1
สมมติวา่ ผู ้สง่ ต ้องการสง่ คาว่า World โดยสามารถแปลงเป็ น ASCII ได ้
ดังนี้
1110111 1101111 1110010 1101100 1100100
เมือ
่ มีการเพิม
่ พาริตบ
ี้ ต
ิ ให ้เป็ นพาริตค
ี้ ู่ (จานวนบิต 1 เป็ นคู)่ เข ้าไป จะได ้
ดังนี้
11101110 11011110 11100100 11011000 11001001
ตัวอย่ าง 2
จากตัวอย่าง 1 เมือ
่ ผู ้รับได ้รับข ้อมูลทีไ่ ม่มค
ี วามผิดพลาด
11101110 11011110 11100100 11011000 11001001
ทาการนับจานวนบิต 1 ในแต่ละข ้อมูลตัวอักษร จะได ้เป็ นจานวนคูท
่ งั ้ หมด
(6,6,4,4,4) ดังนัน
้ แสดงว่าข ้อมูลถูกต ้อง
Example 3
จากตัวอย่าง 1 เมือ
่ ผู ้รับได ้รับข ้อมูลทีม
่ ค
ี วามผิดพลาด
11111110 11011110 11101100 11011000 11001001
ทาการนับจานวนบิต 1 ในแต่ละข ้อมูลตัวอักษร จะได ้เป็ น(7,6,5,4,4)
ดังนัน
้ แสดงว่าข ้อมูลมีความผิดพลาดเกิดขึน
้ ผู ้รับจะทาการยกเลิก
และมีการสง่ ซ้าอีกครัง้
* ในการตรวจสอบแบบ Simple parity check สามารถตรวจสอบได ้
เพียงความผิดพลาดแค่บต
ิ เดียวเท่านัน
้
Two-dimensional parity
ตัวอย่ าง 4
สมมติวา่ มีบล็อกข ้อมูลทีต
่ ้องการสง่ มีดงั นี้
10101001 00111001 11011101 11100111 10101010
เมือ
่ ข ้อมูลมีความผิดพลาดแบบหลายบิตเกิดขึน
้ (8 บิต)
10100011 10001001 11011101 11100111 10101010
ผู ้รับทาการตรวจสอบพาริตบ
ี้ ต
ิ โดยมีบางบิตทีไ่ ม่เข ้ากฎของพาริตค
ี้ ู่
ทาให ้บล็อกข ้อมูลทัง้ ถูกยกเลิก
10100011 10001001 11011101 11100111 10101010
วิธต
ี รวจสอบแบบ Cyclic Redundancy Check (CRC)
ิ ธิภาพสูงกว่าวิธต
• มีประสท
ี รวจสอบแบบพาริตแ
ี้ ละใช ้
หลักการทางานทีแ
่ ตกต่างกัน
้
• วิธต
ี รวจสอบแบบพาริตจ
ี้ ะใชการบวก
แต่แบบ CRC
้
จะใชการหาร
• แบบพาริตส
ี้ ามารถแทรกบิตตรวจสอบลงในข ้อมูล
ได ้ แต่แบบ CRC
• จะต ้องนาบิตตรวจสอบไปต่อท ้ายของข ้อมูล
CRC generator and checker
ถ ้าเศษในการหารเป็ น 0
แสดงว่าข ้อมูลถูกต ้อง
แต่ถ ้าไม่ใช ่ 0 แสดงว่า
ข ้อมูลผิดพลาด
สรุปวิธห
ี าบิตตรวจสอบ
1.
ถ ้าตัวหารมีจานวนบิตเท่ากับ n+1 บิตแล ้วจะต ้องเติมบิต 0
จานวน n ตัวทีส
่ ว่ นท ้ายของข ้อมูล
2.
้ ตข ้อมูลลบด ้วยตัวหาร (ใชวิ้ ธ ี XOR) เมือ
ใชบิ
่ ลบแล ้วผลทีไ่ ด ้จาก
การลบ ถ ้า
้ ดของเศษเป็ น 1 ให ้นาตัวหารมาเป็ นตัวลบอีกครัง้
•
บิตซายสุ
้ ดของเศษเป็ น 0 ให ้นา 0000 มาเป็ นตัวลบ
•
บิตซายสุ
3.
ทาในข ้อ 2 จนกระทั่งไม่สามารถลบกันได ้อีกแล ้ว (จานวนบิต
ของเศษน ้อยกว่าจานวนบิตของตัวหาร)จะถือได ้ว่าเศษทีไ่ ด ้จาก
การหารนัน
้ คือ บิตตรวจสอบ
4.
นาบิตตรวจสอบทีไ่ ด ้ไปแทนทีบ
่ ต
ิ 0 จานวน n ตัวทีส
่ ว่ นท ้าย
ของข ้อมูล
Binary division in a CRC generator
Modulo -2 (XOR) 0 – 0 = 0 , 0 – 1 = 1 , 1 – 0 = 1 , 1 – 1 = 0
Figure 3.9
Binary division in CRC checker
Polynomial
ปกติแล้วในการแทนบิตข้อมูลของตัวหารจะไม่ใช้รูปของเลขฐานสอง เนื่องจาก
ค่อนข้างยาวและจาได้ยากแต่จะเขียนให้อยูใ่ นรู ปของโพลิโนเมียล
Table 3.1 Standard polynomials
Name
Polynomial
Application
CRC-8
x8 + x2 + x + 1
ATM header
CRC-10
x10 + x9 + x5 + x4 + x 2 + 1
ATM AAL
ITU-16
x16 + x12 + x5 + 1
HDLC
ITU-32
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10
+ x8 + x7 + x5 + x4 + x2 + x + 1
LANs
Figure 3.12
Checksum
ถ้าผลลัพธ์สุดท้ายเป็ น 0 แสดง
ว่าข้อมูลถูกต้อง
Checksum ฝั่งผู้ส่ง
็ เมนต์กอ
็ เมนต์จะมีข ้อมูล
• แบ่งข ้อมูลออกเป็ นเซก
่ น โดยแต่ละเซก
็ เมนต์ละ 16 บิต)
n บิต (ปกติจะแบ่งเป็ นเซก
็ เมนต์มาบวกกันด ้วยวิธก
• นาบิตข ้อมูลของทุกเซก
ี ารแบบ
1’s complement ซงึ่ จะได ้ผลลัพธ์ออกมา n บิต
• นามาทาคอมพลีเมนต์หรือทาการกลับบิตให ้เป็ นตรงกันข ้าม
(0 - 1, 1 - 0) ผลทีไ่ ด ้จากการทาคอมพลีเมนต์คอ
ื บิตตรวจสอบที่
จะต ้องนาไปต่อไว ้สว่ นท ้ายของบิตข ้อมูลก่อนทีจ
่ ะสง่ ออกไป
ตัวอย่ าง 7
สมมติให ้บล็อกข ้อมูลทัง้ หมดมีขนาด 16 บิต โดยแบ่งออกเป็ นบล็อก
ละ 8 บิต เพือ
่ สง่ ไปยังผู ้รับ
10101001 00111001
บวกตัวเลขแบบ 1’s complement
10101001
00111001
-----------Sum
11100010
Checksum
00011101
ข ้อมูลทีจ
่ ะสง่ ไป คือ 10101001 00111001 00011101
Checksum ฝั่งผู้รับ
•
•
•
•
็ เมนต์ๆ ละ n บิต
รวบรวมข ้อมูลแต่ละเซก
็ เมนต์มาบวกกันด ้วยวิธก
นาข ้อมูลของทุกเซก
ี ารแบบ
1’s complement
็ เมนต์มาทาคอมพลีเมนต์
นาผลรวมของทุกเซก
ถ ้าผลลัพธ์ทไี่ ด ้เท่ากับ 0 แสดงว่าข ้อมูลชุดนัน
้ ถูกต ้อง แต่ถ ้า
ผลลัพธ์ทไี่ ด ้ไม่เท่ากับ 0 แสดงว่าข ้อมูลชุดนัน
้ มีความผิดพลาด
ตัวอย่ าง 8
สมมติวา่ ผู ้รับได ้รับข ้อมูลจากตัวอย่าง 7 และ ไม่มค
ี วามผิดพลาด
10101001 00111001 00011101
ผู ้รับทาการบวกตัวเลขแบบ 1’s complement จะได ้เป็ นบิต 1
ทัง้ หมด แล ้วทาการ complement อีกครัง้ จะได ้ค่าเป็ น 0 แสดงว่า
ข ้อมูลไม่มค
ี วามผิดพลาด
10101001
00111001
00011101
Sum
11111111
Complement
00000000
ตัวอย่ าง 9
สมมติวา่ มีความผิดพลาดของข ้อมูลจากตัวอย่าง 7 ดังนี้
10101111 11111001 00011101
ทาการคานวณ
10101111
11111001
00011101
Partial Sum
Carry
111000101
1
Sum
11000110
Complement
00111001
ผลลัพธ์ไม่เป็ น 0 แสดงว่า
ข ้อมูลมีความผิดพลาด
การแก้ไขความผิดพลาดของข้อมูล Correction
Retransmission
Forward Error Correction
การแก้ ไขความผิดพลาดของข้ อมูลด้ วยวิธี Forward Error Correction
้ ้ในกรณีทข
สามารถใชได
ี่ ้อมูลมีความผิดพลาดเกิดขึน
้ บิตเดียว
โดยจะกาหนดให ้ m เป็ นบิตข ้อมูล สว่ น r เป็ นบิตตรวจสอบ
ดังนัน
้ ข ้อมูลทีต
่ ้องสง่ จริงคือ m + r
จากทฤษฏีของแฮมมิง (Hamming) เราสามารถเขียน
ั พันธ์ระหว่างบิตข ้อมูลและบิตตรวจสอบได ้ดังนี้
ความสม
2  m  r  1
r
ตัวอย่าง รหัสแอสกี้ (ASCII code) จะมีจานวนบิตเท่ากับ 7 บิต
2  7  4  1
4
Table 3.2 Data and redundancy bits
Number of
data bits
m
Number of
redundancy bits
r
Total
bits
m+r
1
2
3
2
3
5
3
3
6
4
3
7
5
4
9
6
4
10
7
4
11
Hamming Code
วิธใี นการกาหนดว่าบิตตรวจสอบควรจะต ้องตรงไหนบ ้าง ซงึ่ จะ
แตกต่างกับหัวข ้อก่อนหน ้านีท
้ วี่ า่ บิตตรวจสอบจะต ้องอยู่
สว่ นท ้ายของข ้อมูล
Figure 3.14
Positions of redundancy bits in Hamming code
Figure 3.15
Redundancy bits calculation
Figure 3.16
Example of redundancy bit calculation
Figure 3.17
Error detection using Hamming code
Data Link
Control
Flow and Error Control
การควบคุมอ ัตราการไหลของข้อมูล
(Flow Control)
การควบคุมความผิดพลาดของข้อมูล
(Error Control)
กลไกในการควบคุมอ ัตราการไหลและ
ความผิดพลาด
ARQ (automatic repeat request ) protocols
•
Stop - and – Wait
•
Go - Back – N
•
Selective - Repeat
Stop-and-Wait ARQ
การทางานโดยทัว่ ไป คือ ผู ้สง่ หยุดรอจนกว่าจะได ้รับ ACK
(acknowledge) ถึงจะสง่ ข ้อมูลต่อไป
Stop-and-Wait ARQ, เมือ
่ มีการสูญหายของ Frame ข้อมูล
Stop-and-Wait ARQ, เมือ
่ มีการสูญหายของ ACK
ยกเลิกข ้อมูล
Frame 1 และรอ
รับ Frame 0
Stop-and-Wait ARQ, delayed ACK
ยกเลิก
ยกเลิกข ้อมูล
Frame 1 และรอรับ
Frame 0
Go-Back-N ARQ
วิธก
ี ารคือ สง่ ข ้อมูลเป็ นชุดข ้อมูลแบบ Window
Window ฝั่ งผู ้สง่
Window ฝั่ งผู ้รับ
ต ัวแปรควบคุม
Go-Back-N ARQ, แบบทว่ ั ไป
Go-Back-N ARQ, เมือ
่ มี Frame ข้อมูลสูญหาย
ยกเลิก Frame 3
่
Go-Back-N ARQ: ปัญหาเกีย
่ วก ับขนาดของ Window ฝั่งผูส
้ ง
ขนาด Window ฝั่ งผู ้สง่ จะต ้องน ้อยกว่า 2m , Window ฝั่ งผู ้รับเป็ น 1 เสมอ
Selective-Repeat ARQ
วิธก
ี าร คล ้ายกับ Go-Back-N แต่ Window มีขนาด
เท่ากัน
Selective Repeat ARQ, เมือ
่ frame ข้อมูลสูญหาย
่
Selective Repeat ARQ, ปัญหาเกีย
่ วก ับขนาดของ Window ฝั่งผูส
้ ง
ขนาด Window ทัง้ สองฝั่ งจะต ้องเป็ น 2m-1