500 likes | 732 Views
Multiplexing Error Detection Flow Control. Multiplexing. เส้นทางที่ใช้ในการสื่อสาร ( Link) เป็นองค์ประกอบที่สำคัญของการสื่อสารข้อมูล เปรียบได้กับถนนที่เชื่อมต่อระหว่างเมืองต่างๆ ดังนั้นการสร้างถนนและการบริหารการเดินรถที่ดี จะทำให้รถสามารถเดินทาได้โดยสะดวก รวดเร็วและปลอดภัย
E N D
Multiplexing Error Detection Flow Control
Multiplexing • เส้นทางที่ใช้ในการสื่อสาร(Link)เป็นองค์ประกอบที่สำคัญของการสื่อสารข้อมูล เปรียบได้กับถนนที่เชื่อมต่อระหว่างเมืองต่างๆ ดังนั้นการสร้างถนนและการบริหารการเดินรถที่ดี จะทำให้รถสามารถเดินทาได้โดยสะดวก รวดเร็วและปลอดภัย • ภายในเส้นทางการสื่อสารนั้นสามารถมีช่องทาง(Channel)ได้หลายช่องสัญญาณ ดังนั้นจึงทำให้สามารถส่งสัญญาณต่างๆไปพร้อมกันได้ • แต่จะต้องมีเทคนิคในการจัดการกับสัญญาณที่จะส่งไปพร้อมๆกัน โดยไม่ทำให้สัญญาณรบกวนซึ่งกันและกัน เรียกว่า การผสมสัญญาณ หรือ Multiplexing
Multiplexing • มัลติเพล็กซิง เป็นเทคนิคที่ใช้ในการรวมสัญญาณหลายๆสัญญาณเข้าด้วยกันและส่งออกไปพร้อมกันภายในเส้นทางที่ใช้ในการสื่อสารเพียงเส้นทางเดียว • Multiplexer / MUX เป็นอุปกรณ์ที่ใช้สำหรับการรวมสัญญาณจากอุปกรณ์อื่นๆและส่งสัญญาณที่ผ่านการผสมกันแล้วออกไปด้วยกัน • Demultiplexer เป็นอุปกรณ์ทำหน้าที่ในการแยกสัญญาณที่ได้รับมา แล้วส่งต่อให้กับอุปกรณ์ที่ใช้ในการรับข้อมูลต่อไป
FDM • สัญญาณอะนาล็อกที่ถูกส่งมาจากแต่ละอปุกรณ์ จะต้องผ่าน modulator ซึ่ง modulator แต่ละตัวนั้นจะมีคลื่นพาห์ที่มีความถี่ที่แตกต่างกัน รวมกับสัญญาณข้อมูล เป็น composite signal • Guard bands หรือแถบคุ้มกันการแทรกสอด • กระบวนการผสมสัญญาณ • กระบวนการแยกสัญญาณ
FDM Multiplexing Process Modulator Carrier f1 Modulator Carrier f2 Modulator Carrier f3
Demodulator Filter Carrier f1 Demodulator Filter Carrier f2 Demodulator Filter Carrier f3 FDM De-multiplexing Process
WDM • ถูกออกแบบมาเพื่อใช้กับสายไฟเบอร์ออปติก ซึ่งมีแบนด์วิธที่กว้างมากและมีอัตราการส่งข้อมูลที่สูง • มีหลักการเหมือนกับ FDM แตกต่างกันที่ WDM นั้นจะใช้แสงเป็นตัวนำส่งสัญญาณ • ช่องสัญญาณสื่อสารแต่ละช่องจะถูกแบ่งออกตามความยาวคลื่นแสง • ถึงแม้ว่า WDM จะใช้เทคโนโลยีที่ซับซ้อน แต่จะใช้หลักการทำงานที่ง่ายๆคือการมัลติเพล็กซ์จะรวมแสงจากแหล่งกำเนิดต่างๆเข้าด้วยกันเป็นหนึ่งเดียวก่อนที่จะส่งออกไป ซึ่งในการรวมแสงนั้นจะใช้หลักการฟิสิกส์พื้นฐานในเรื่องของการหักเหของแสง
TDM • การผสมสัญญาณโดยแบ่งเวลา • เป็นเทคนิคที่ใช้กับสัญญาณดิจิตอล • โดยจะทำการแบ่งเวลาในการส่งข้อมูลให้กับแต่ละอุปกรณ์ • ข้อมูลที่ส่งออกมาจากสถานีส่งทุกเครื่องจะถูกนำมารวมกันเรียกว่า เฟรม • ช่วงเวลาที่แบ่งให้กับแต่ละเครื่องเรียกว่า ช่องเวลา (slot time) • Synchronous TDM (สถานีที่ไม่มีข้อมูลก็จะส่ง slot ว่าง) • Statistic TDM (สถานีจะบรรจุแอดเดรสกับข้อมูลส่วนสถานีที่ไม่มีข้อมูลก็จะไม่ส่งอะไร)
3T 3T 3T A3 A2 A1 Frame3 Frame2 Frame1 B3 B2 MUX C3 C1 Each frame is 3 time slot. Each time slot duration is T seconds. C1 A1 C3 B2 B3 A2 A3 Data are taken from each line every 3T seconds TDM
TDM • จากรูปในสไลด์ที่ผ่านมา จะแสดงถึงการผสมสัญญาณโดยแบ่งเวลา โดยจะมีสายเข้าตัวมัลติเพล็กเซอร์ 3 สาย • กำหนดให้ช่องเวลา เท่ากับ T วินาที • ดังนั้นในการสร้างเฟรมข้อมูลแต่ละเฟรมจะต้องใช้เวลา 3T วินาที (เนื่องจากมีสายเข้า 3 สาย และแต่ละสายจะมีเวลาในการส่งข้อมูล T วินาที) • และอัตราการส่งข้อมูลโดย TDMจะมีค่าเท่ากับ n เท่าของอัตราการส่งข้อมูลของสายเข้า • เช่น ถ้าสายเข้ามีอัตราส่ง 2400 bps แล้ว อัตราการส่งข้อมูลโดย TDM จะเท่ากับ 2400 * 3 = 7200 bps
สัญญาณรบกวน Noise • Thermal noise เป็นสัญญาณรบกวนที่เกิดจากการเคลื่อนที่แบบผิดปกติของอิเล็กตรอนบางตัวในสายสื่อสาร • Crosstalk เป็นสัญญาณรบกวนที่เกิดจากสายสื่อสารที่อยู่ติดกัน ส่งสัญญาณรบกวนกันเอง • Impulse noise เป็นสัญญาณรบกวนที่เกิดขึ้นอย่างฉับพลันจากแหล่งพลังงานแรงสูง เช่น สายไฟฟ้าแรงสูง หรือเกิดฟ้าผ่า
สัญญาณรบกวน Noise • Echo เป็นสัญญาณที่ถูกสะท้อนกลับ • Jitter เป็นเหตุการณ์ที่ความถี่ของสัญญาณได้มีการเปลี่ยนแปลงไปอย่างต่อเนื่อง ก่อให้เกิดการเปลี่ยนเฟสไปเป็นค่าอื่น • Delay Distortion สัญญาณความเร็วไม่เท่ากันมาผสมกัน • Attenuation การอ่อนกำลัง
การป้องกันสัญญาณรบกวนการป้องกันสัญญาณรบกวน • ใช้สายเคเบิลชนิดที่มีชิลด์ป้องกันสัญญาณรบกวน • ใช้อุปกรณ์ใหม่ที่มีประสิทธิภาพและทันสมัยกว่าอุปกรณ์เดิม • ใช้อุปกรณ์ขยาย/เพิ่มสัญญาณ • พิจารณาข้อกำหนด/ข้อจำกัดของสายสัญญาณแต่ละชนิด
Error Detection Techniques • Parity Check • Checksum • CRC
Parity Check • Simple Parity Check • ในการส่ง-รับ จะมีการตกลงวิธีการตรวจสอบข้อมูล โดยการเพิ่มบิตจำนวน 1 บิต เรียกว่า “Parity bit” อาจเป็น 0 หรือ 1 ขึ้นอยู่กับวิธีที่ตกลงกัน • Even Parity เพิ่มบิตตรวจสอบ(0หรือ1)รวมกับบิตข้อมูล แล้วนับจำนวนบิต “1” ทั้งหมดให้ได้จำนวนคู่ • Odd Parity เพิ่มบิตตรวจสอบ(0หรือ1)รวมกับบิตข้อมูล แล้วนับจำนวนบิต “1” ทั้งหมดให้ได้จำนวนคี่ • ตัวอย่าง วิธี Even Parity ส่ง : 100010000 รับ : 10001000 0คำนวณแล้ว ได้ คู่ = ถูกต้อง • วิธีนี้ถ้ามีข้อมูลผิดพลาดเพียงบิตเดียว ก็ตรวจสอบได้ ถ้าผิดหลายๆบิตจะตรวจได้กรณีที่เกิดการผิดพลาดไปเป็นเลขคี่เท่านั้น
Parity Check • Simple Parity Check • ตัวอย่าง ส่งคำวา “world” ใช้วิธี even parity
Parity Check • Two-Dimensional parity check
CRC • มีประสิทธิภาพสูงว่าแบบพาริตี้บิต • แบบพาริตี้บิตใช้การบวก แต่ CRC ใช้การหาร • แบบพาริตี้บิตจะแทรกบิตตรวจสอบลงในข้อมูล แต่แบบ CRC จะต้องนำบิตตรวจสอบไปต่อท้ายข้อมูล
การหาบิตตรวจสอบของเทคนิค CRC 1. ถ้าตัวหารมีจำนวนบิตเท่ากับ n+1 บิตแล้วจะต้องเติมบิต 0 จำนวน n ตัวที่ส่วนท้ายของข้อมูล 2. ใช้บิตข้อมูลลบด้วยตัวหาร(ใช้วิธี XOR) เมื่อลบแล้วผลที่ได้จากการลบ ถ้า 2.1 บิตซ้ายสุดของเศษเป็น 1 ให้นำตัวหารมาเป็นตัวลบอีกครั้ง 2.2 บิตซ้ายสุดของเศษเป็น 0 ให้นำ 0000 มาเป็นตัวลบ 3. ทำในข้อ 2 จนกระทั่งไม่สามารถลบกันได้อีกแล้ว (จำนวนบิตของเศษน้อยกว่าจำนวนบิตของตัวหาร) จะถือได้ว่าเศษที่ได้จากการหารนั้นคือ บิตตรวจสอบ 4. นำบิตตรวจสอบที่ได้ไปแทนที่บิต 0 จำนวน n ตัวที่ส่วนท้ายของข้อมูล
การหาบิตตรวจสอบของเทคนิค CRC 1101 100100000 1101 1000 1101 1010 1101 1110 1101 0110 0000 1100 1101 001 Divisor หามาจากสูตรโพลิโนเมียล ดังนั้นเวลาส่งข้อมูลไปจะได้ 100100 + 001 = 100100001 Remainder
CRC การตรวจสอบความผิดพลาดของข้อมูล • เมื่อผู้รับได้รับบิตข้อมูลรวมทั้งบิตตรวจสอบที่อยู่ส่วนท้ายของบิตข้อมูลแล้ว จะใช้วิธีการหารในโมดูโล2 เช่นกัน • ถ้าเศษของการหารเท่ากับ 0 หรือหารลงตัว แสดงว่าข้อมูลชุดนั้นเป็นข้อมูลที่ถูกต้อง • แต่ถ้าหารไม่ลงตัวคือมีเศษ แสดงว่าข้อมูลที่ได้รับมานั้นเป็นข้อมูลผิดพลาด
การตรวจสอบของเทคนิค CRC ฝั่งรับ 1101 100100001 1101 1000 1101 1010 1101 1110 1101 0110 0000 1101 1101 000 Divisor ได้มาจากสูตรโพลิโนเมียล Result
CRC • โพลิโนเมียล (Polynomial) ปกติแล้วในการแทนบิตข้อมูลของตัวหารจะไม่ใช้รูปของเลขฐานสอง เนื่องจากค่อนข้างยาวและจำได้ยาก แต่จะเขียนให้อยู่ในรูปของโพลิโนเมียล เช่น ถ้าตัวหารมีค่าเป็น 10100111 จะสามารถเขียนให้อยู่ในรูปของโพลิโนเมียลได้ x7+x5+x2+x+1
CRC • ความสัมพันธ์กันระหว่างโพลิโนเมียลกับเลขฐานสอง x7 + x5 + x2 + x + 1 x6 x4 x3 1 0 1 0 0 1 1 1
CRC • สำหรับตัวหารที่เป็นมาตรฐานทั่วไป ที่มีการนำไปใช้งานในโปรโตคอลต่างๆ มีดังนี้
Checksum • วิธีการแบบ checksum จะคล้ายคลึงกับวิธีแบบ CRC และพาริตี้ ซึ่งวิธีการแบบนี้ยังคงอยู่บนพื้นฐานของการเพิ่มบิตตรวจสอบเข้าไปพร้อมกับบิตข้อมูล
Checksum • ก่อนที่จะหาบิตตรวจสอบได้นั้น จะต้องทำการแบ่งข้อมูลออกเป็นเซ็กเมนต์ก่อน โดยแต่ละเซ็กเมนต์จะมีข้อมูล n บิต (ปกติจะแบ่งเป็นเซ็กเมนต์ละ 16 บิต) • จากนั้นนำบิตข้อมูลของทุกเซ็กเมนต์มาบวกกันด้วยวิธีการแบบ 1’s complement ซึ่งจะได้ผลลัพธ์ออกมา n บิต • เมื่อได้ผลลัพธ์จากการบวกแล้วจะนำมาทำคอมพลีเมนต์หรือทำการกลับบิตให้เป็นตรงกันข้าม (0 เป็น 1 , 1 เป็น 0) • ผลที่ได้จากการทำคอมพลีเมนต์คือบิตตรวจสอบ ที่จะต้องนำไปต่อไว้ส่วนท้ายของบิตข้อมูล ก่อนที่จะส่งออกไป
Checksum • สรุปการหาบิตตรวจสอบสำหรับวิธีการตรวจสอบแบบ checksum 1. ข้อมูลจะถูกแบ่งออกเป็นเซ็กเมนต์ย่อยๆ เซ็กเมนต์ละ n บิต 2. นำข้อมูลของทุกเซ็กเมนต์มาบวกกันด้วยวิธีการแบบ 1’s complement 3. นำผลรวมของทุกเซ็กเมนต์มาทำคอมพลีเมนต์ 4. ส่งบิตตรวจสอบไปพร้อมกับข้อมูล • การตรวจสอบความผิดพลาดของข้อมูล 1. รวบรวมข้อมูลแต่ละเซ็กเมนต์ ๆ ละ n บิต 2. นำข้อมูลของทุกเซ็กเมนต์มาบวกกันด้วยวิธีการแบบ 1’s complement 3. นำผลรวมของทุกเซ็กเมนต์มาทำคอมพลีเมนต์ 4. ถ้าผลลัพธ์ที่ได้เท่ากับ 0 แสดงว่าข้อมูลชุดนั้นถูกต้อง แต่ถ้าผลลัพธ์ที่ได้ไม่เท่ากับ 0 แสดงว่าข้อมูลชุดนั้นมีความผิดพลาด
Checksum • ตัวอย่าง ฝั่งส่ง สมมติว่าต้องการที่จะส่งบิตข้อมูลจำนวน 16 บิตออกไป และใช้วิธีการตรวจสอบแบบ checksum โดยมีบิตตรวจสอบ 8 บิต ซึ่งบิตข้อมูลที่ต้องการส่งมีดังนี้ 10101001 00111001 วิธีทำ นำข้อมูลของทุกเซ็กเมนต์มาบวกกันด้วยวิธีแบบ 1’s complement ได้ดังนี้ 10101001 00111001 sum 11100010 Checksum 00011101 10101001 0011100100011101 ข้อมูลและบิตตรวจสอบที่จะส่งออกไป
Checksum • ตัวอย่าง ฝั่งรับ จากตัวอย่างการส่งที่ผ่านมาเมื่อฝั่งรับได้รับข้อมูลดังข้างล่างนี้ จงตรวจสอบข้อมูลดังกล่าวว่าถูกต้องหรือไม่ 10101001 0011100100011101 วิธีทำ นำข้อมูลของทุกเซ็กเมนต์มาบวกกันด้วยวิธีแบบ 1’s complement ได้ดังนี้ 10101001 00111001 00011101 sum 11111111 complement 00000000
Flow control • หน้าที่หลักของ Data link layer • การควบคุมการไหลของข้อมูล หรือ Flow control คือ เป็นขั้นตอนกระบวนการที่ควบคุมจำนวนของข้อมูลที่ถูกส่งออกไปให้อยู่ในปริมาณที่เหมาะสม ก่อนที่จะได้รับการตอบรับยืนยันจากผู้รับข้อมูล นั่นหมายความว่าข้อมูลที่ถูกส่งไปนั้นจะต้องถูกจำกัดเอาไว้จำนวนหนึ่ง ถ้ายังไม่ได้รับการตอบรับจากผู้รับ ว่าได้รับข้อมูลชุดนั้นๆแล้ว ผู้ส่งจะต้องไม่ส่งข้อมูลชุดถัดไป • สาเหตุที่ต้องมีการควบคุมอัตราการไหลก็เนื่องจากว่า ผู้รับอาจจะมีความเร็วในการรับข้อมูลไม่เท่ากับผู้ส่ง หรือมีหน่วยความจำที่ใช้ในการเก็บข้อมูลอย่างจำกัด หรือมีความเร็วในการประมวลผลต่ำ ดังนั้นการควบคุมอัตราการไหลของข้อมูลจึงมีความจำเป็นอย่างมาก ถ้าผู้รับยังไม่พร้อมที่จะรับข้อมูลในขณะนั้น ผู้ส่งจะต้องทำการหยุดส่งชั่วคราวก่อน หรือถ้าผู้รับมีความเร็วในการประมวลผลต่ำ ผู้ส่งจะต้องส่งข้อมูลด้วยอัตราเร็วที่เหมาะสม เพื่อให้เกิดความสมดุลกันในการรับส่งข้อมูล
Error control • หน้าที่หลักของ Data link layer • การควบคุมข้อผิดพลาดของข้อมูล หรือ error control คือ การที่ผู้ส่งต้องส่งข้อมูลไปใหม่อีกครั้งหนึ่ง ถ้าผู้รับไม่สามารถรับข้อมูลหรือได้รับข้อมูลที่ไม่ถูกต้อง • สาเหตุที่ต้องมีการควบคุมก็เนื่องจากว่า ข้อมูลจะต้องเดินทางจากที่หนึ่งไปยังอีกที่หนึ่ง จึงมีความเป็นไปได้ที่ข้อมูลชุดนั้นจะเกิดสูญหายหรือเสียหายในระหว่างการเดินทางได้ ดังนั้นผู้รับจะต้องมีกระบวนการในการตรวจสอบความผิดพลาดของข้อมูล นอกจากนั้นจะต้องมีการส่งข้อความไปบอกกับผู้ส่งข้อมูลด้วยว่าข้อมูลชุดไหนที่ได้รับมามีความผิดพลาด ซึ่งฝ่ายส่งจะต้องทำการส่งข้อมูลชุดนั้นๆไปใหม่อีกครั้งหนึ่ง
Flow control • กลไกในการควบคุมอัตราการไหลและควบคุมความผิดพลาดของข้อมูล • Stop-and-wait • Go-Back-N • Selective-Repeat
Stop-and-wait 1.กรณีปกติ Sender Receiver S = 0 Frame 0 R = 0 ACK 1 S = 1 R = 1 Frame 1 ACK 1 S = 0 ... Time Time
Stop-and-wait 2.กรณีเฟรมข้อมูลสูญหายหรือเสียหาย Sender Receiver S = 0 Frame 0 R = 0 ACK 1 S = 1 R = 1 Frame 1 Lost S = 1 R = 1 Frame 1 ACK 1 R = 0 S = 0 Time Time
Stop-and-wait 3.กรณีเฟรม ACKสูญหายหรือเสียหาย Sender Receiver S = 0 Frame 0 R = 0 ACK 1 S = 1 Frame 1 R = 1 ACK 0 Lost S = 1 R = 0 Frame 1 เมื่อ Receiverตรวจแล้ว ไม่ใช่ 0 ก็จะทิ้งเฟรมนี้ไป ACK 0 S = 0 Time Time
Stop-and-wait 4.กรณีเฟรม ACK ล่าช้า Sender Receiver S = 0 Frame 0 R = 0 ACK 1 S = 0 Frame 0 Time out R = 1 S = 1 เมื่อ Receiverตรวจแล้ว ไม่ใช่ 1 ก็จะทิ้งเฟรมนี้ไป ACK 1 Frame 1 Sender จะทิ้ง เฟรมนี้ไป Frame 1 Time out S = 1 R = 1 ACK 0 Time Time
Stop-and-wait การส่งข้อมูลแบบสองทาง Piggybacking A B R = 0 S = 0 Frame 0,ACK 0 R = 0 S = 0 Frame 0,ACK 1 R = 0 S = 1 Frame 1,ACK 1 R = 1 S = 1 R = 1 Frame 1, ACK 0 S = 0 ... Time Time
Sliding Window Go-back-N • กลไก Go-back-N จะทำการส่งเฟรมข้อมูลจำนวน w เฟรม ก่อนที่จะได้รับ ack ดังนั้นผู้ส่งจะต้องทำการสำเนาเฟรมข้อมูลทั้ง w เฟรมเอาไว้ด้วย และเฮดเดอร์แต่ละเฟรมจะมีหมายเลขลำดับด้วย โดยที่จะเริ่มจาก 0 เป็นต้นไปและเริ่มจากซ้ายไปขวา • การเลื่อนหน้าต่างของผู้ส่งข้อมูล : ผู้ส่งข้อมูลจะต้องทำการเก็บเฟรมข้อมูลเอาไว้ในบัฟเฟอร์ก่อน จนกระทั่งได้รับเฟรม ack กลับมา จึงจะทำการลบเฟรมข้อมูลนั้นทิ้งได้ ดังนั้นหลักการของการ เลื่อนหน้าต่าง (sliding window)จะเสมือนกับการมีหน้าต่างมาครอบเฟรมข้อมูลไว้ แล้วใช้การเลื่อนหน้าต่างไปมา เฟรมข้อมูลที่อยู่ด้านซ้ายของหน้าต่างจะหมายถึงเฟรมที่ได้รับ ack แล้ว สามารถที่จะลบทิ้งเฟรมนั้นออกจากบัฟเฟอร์ได้ ส่วนเฟรมที่อยู่ด้านขวาของหน้าต่าง เป็นเฟรมที่ยังไม่ได้มีการส่งออกไป จะต้องรอจนกระทั่งหน้าต่างเลื่อนมาถึงจึงจะสามารถส่งเฟรมข้อมูลได้
Sliding Window Go-back-N การเลื่อนหน้าต่างของผู้ส่งข้อมูล : ก่อนเลื่อนหน้าต่าง Windows size = 7 ... ... จากตัวอย่าง เฟรม 0 ถึง 6 ได้ถูกส่งออกไปและกำลังรอเฟรม ack ตอบกลับมาจากผู้รับ หลังเลื่อนหน้าต่าง 2 เฟรม Windows size = 7 ... ... และเมื่อผู้ส่งได้รับเฟรม ack ตอบกลับมาแล้วว่าผู้รับได้รับเฟรม 0 และเฟรม 1 เรียบร้อยแล้ว ผู้ส่งจะทำการเลื่อนหน้าต่างไปทาง ด้านขวา 2 เฟรม
Sliding Window Go-back-N การเลื่อนหน้าต่างของผู้รับข้อมูล : ขนาดหน้าต่างของผู้รับจะมีค่าเท่ากับ 1 เสมอ หมายความว่าหน้าต่างของผู้รับจะสามารถครอบเฟรมข้อมูลได้เพียงเฟรมเดียว ดังนั้นเฟรมที่ถูกหน้าต่างครอบไว้คือเฟรมที่ต้องการรับและยังไม่ได้รับ ก่อนเลื่อนหน้าต่าง Windows size = 1 ... ... จากตัวอย่าง หมายความว่าผู้รับต้องการจะรับเฟรม 0 หลังเลื่อนหน้าต่าง ... ... เมื่อได้รับเฟรม 0 เรียบร้อยแล้ว จึงจะทำการเลื่อนหน้าต่างไปทางด้านขวา เพื่อบ่งบอกว่าเฟรมถัดไปที่ต้องการรับคือเฟรม 1
Sender A Receiver B F0 F1 F2 เมื่อได้รับการตอบว่า 3 เฟรมที่ส่งไปแล้ว เรียบร้อย จึงเลื่อนหน้าต่างไปอี ก 3 ช่อง RR3 F3 F4 F5 F6 RR4