430 likes | 599 Views
The Datalink Layer. อาจารย์ นัณฑ์ศิ ตา ชูรัตน์.
E N D
The Datalink Layer อาจารย์นัณฑ์ศิตา ชูรัตน์
ดาต้าลิงก์เลเยอร์ ทำหน้าที่ควบคุมสายข้อมูล ระหว่างระบบ กับปลายทางอีกด้านหนึ่ง โดยการรวมตัวอักขระ เข้าด้วยกัน เป็นข่าวสาร แล้วตรวจสอบ ก่อนที่จะส่งลงไปในสายสัญญาณ ดาต้าลิงก์เลเยอร์ทำหน้าที่ คล้ายผู้ควบคุม การจัดเรียง และสับเปลี่ยนตู้รถไฟของขบวนรถไฟ ก่อนจะออกจากสถานี และที่สถานีปลายทาง จะทำหน้าที่แจ้งว่าข้อมูลมาถึงอย่างปลอดภัยหรือไม่ ถ้าข้อมูลเสียหาย จะแจ้งขอให้สถานีต้นทาง ส่งข่าวสารมาใหม่
บริการในชั้น Data Link) ในการติดตอสื่อสารระหวางตนทางและปลายทางนั้น เสนทางการสื่อสารจะเริ่มจาก Host ตนทางไป ยัง Host ปลายทางโดยผานไปยัง router ตางๆ ในเครือขาย และไปสิ้นสุดที่ host ปลายทาง ดังรูป 5.1 โดย เรียก host และ router ตางๆ วา โหนด (node) และเรียกชองทางการสื่อสารที่เชื่อมตอระหวางโหนด (โหนดซึ่งอยูในเสนทางการสื่อสาร) วา link โดยมี data link layer รับผิดชอบในการสง datagram ขามในแตละ link
หน้าที่ความรับผิดชอบของ Data Link Layer • จัดรูปแบบข้อมูลให้อยู่ในลักษณะของ เฟรม (Frame) • กำหนดตำแหน่ง Physical Address ของผู้รับและผู้ส่งไว้ในเฟรมข้อมูล • ควบคุมการไหลของข้อมูลระหว่างผู้ส่งและผู้รับให้สัมพันธ์กัน (Flow Control) • การควบคุมข้อผิดพลาด (Error Control) • การควบคุมการเข้าถึงลิงก์ของอุปกรณ์เครือข่าย (Access Control)
Framing and link access: protocol ใน link layer ตองทําการ encapsulate datagram ของ network layer ใหกลายเปน frame ของ link layer กอนทําการสงไปบน link โดย frame นั้น ประกอบดวยdata field (จะเก็บ datagramของ network layer ไว) และ header field อีกจํานวน หนึ่ง (รวมทั้ง header และ trailer) protocol ใน link layer มีโครงสรางframe ที่เฉพาะและแตกตาง กันไปตามลักษณะการใชงาน บางครั้ง frame header จะมี field สําหรับแตละโหนดเรียกวา physical address ใชบอก address ซึ่งแตกตางกับ address ใน network layer
Flow control: การควบคุมการไหลของข้อมูล คือ กลุ่มของวิธีการที่จะบอกฝ่ายส่งว่าจะสามารถส่งข้อมูลจำนวนเท่าใด ก่อนที่จะได้การรับรอง (Acknowledgment) จากฝ่ายรับ โดยการควบคุมนี้จะต้องไม่ให้ฝ่ายรับเกิดการรับข้อมูลจนท่วมล้น เนื่องจากอุปกรณ์ทางฝ่ายรับอาจมีความเร็วที่ค่อนข้างจำกัดเพื่อปองกันไมใหผูสงทําการสงขอมูลมากเกินกวาที่ผูรับจะสามารถรับได เนื่องจาก ในแตละโหนดจะมีขนาดของ buffer ที่จํากัด ถาผูรับไดรับ frame ในอัตราซึ่งเร็วเกินกวาที่จะสามารถประมวลผลได ก็จะทําให frame นั้นเกิดการสูญหายไปได ถ้าผู้รับและผู้ส่งมีอัตราในการรับและส่งข้อมูลไม่เท่ากัน อาจจะทำให้เกิดการสูญหายของข้อมูลได้ เช่น การติดต่อระหว่างคอมพิวเตอร์ กับ เครื่องพิมพ์
สำหรับประเภทของการควบคุมการไหลของข้อมูลนี้ สามารถแบ่งออกได้เป็น 2 ประเภทด้วยกัน คือ 1.Stop-and-Wait Flow Control 2.Sliding-Window Flow Control
Stop-and-Wait Flow Control วิธีนี้ฝ่ายส่งจะส่งเฟรมข้อมูลมาให้หนึ่งเฟรม และรอการตอบ Acknowledge (ACK) จากฝ่ายรับ เมื่อฝ่ายรับส่งได้รับการตอบรับ ACK จากฝ่ายรับแล้ว ก็เปรียบเสมือนกับการตอบรับ ‘OK’ ว่าได้รับเรียบร้อยแล้ว ฝ่ายส่งก็จะดำเนินการส่งเฟรมในลำดับถัดไป ข้อดีของ Stop and Wait -ใช้งานได้ดีกับการส่งข้อมูลที่มีจำนวนน้อย ข้อเสียของ Stop and Wait -ใช้เวลานานในการส่งข้อมูล
Sliding-Window Flow Control วิธีการควบคุมของข้อมูลแบบเลื่อนหน้าต่างนี้ ฝ่ายส่งจะสามารถส่งเฟรมข้อมูลหลายๆ เฟรมก่อนที่จะได้รับการตอบรับ กล่าวคือฝ่ายรับจะมีการตอบรับกลับไปเพียงบางเฟรมเท่านั้น ดังนั้น การตอบรับ ACK ในหนึ่งครั้ง จะหมายถึงการได้รับเฟรมมาแล้วหลายเฟรมนั้นเอง ซึ่งเป็นวิธีที่มีประสิทธิภาพสูงกว่าแบบแรก
กำหนดให้มีข้อมูลจำนวน 7 เฟรม คือ เฟรมที่ F0 - F6
ข้อดี ของวิธีนี้ คือ ส่งได้เร็ว เนื่องจากการส่งแบบนี้จะส่งได้ทีละหลายๆ เฟรม ข้อเสีย ของวิธีนี้ คือ ถ้าผู้รับส่ง ACK ก่อนที่จะได้รับข้อมูล ตัวผู้ส่งก็จะส่งข้อมูลเดิมซํ้าหลายๆ เฟรม จะทำให้ผู้รับ รับข้อมูลซํ้าๆ Sliding Window เมื่อเกิด Error มีวิธีจัดการ 2 วิธี 1. Selective Repeat(ถ้ามี error เฟรมใดเมื่อผู้ส่งหมดเวลารอ) สัญญาณACK ก็จะส่งเฟรมนั้นมาใหม่ส่วนเฟรมถัดไปที่ส่งมาล่วงหน้านั้นยังเก็บอยู่ใน buffer ของผู้รับซึ่งสามารถนำมาเรียงตามลำดับนำไปใช้ได้ 2. Go-Back Nเมื่อมีเฟรม error หรือมีปัญหา ผู้ส่งหมดเวลารอสัญญาณ ACK และก็จะทำการส่งเฟรมตั้งแต่เฟรมที่ เสีย หรือ error นั้นมาให้ใหม่ทั้งหมดส่วนเฟรมที่ส่งมาก่อนหน้านี้ก็จะทำการตัดทิ้งไป
Error DetectionTechniques เครือข่ายจะต้องสามารถทำการถ่ายโอนข้อมูลจากอุปกรณ์ หนึ่งไปยังอุปกรณ์อื่น ๆ ได้อย่างถูกต้อง และ สมบูรณ์ แต่เครือข่ายไม่สามารถการันตีถึงข้อมูลที่ส่งไปยังปลายทางว่า จะเป็นข้อมูลที่เหมือนกับต้นทางที่ส่งมาหรือไม่ - ข้อมูลอาจผิดเพี้ยนไปจากเดิม ในระหว่างการเดินทาง ซึ่งอาจเกิดจาก การรบกวนของสัญญาณที่มากจากระยะทาง - ถูกการรบกวนหรือแทรกสอด ของสัญญาณ - สภาวะอากาศ แปรปรวน
Error DetectionTechniques(ต่อ) สิ่งเหล่านี้จะส่งผลกระทบต่อข้อมูลที่ก่อให้เกิดการเปลี่ยนแปลงไปจากเดิม ดังนั้นจึงจำเป็นต้องมีกลไก ในการตรวจจับและแก้ไขข้อผิดพลาดที่อาจเกิดขึ้น ซึ่งตามปกติ การตรวจจับข้อผิดพลาดและการแก้ไข (Detection and Correction) มีการนำมาใช้งานในลำดับชั้น Data Link Layer และ ลำดับชั้น Transport Layerในแบบจำลอง OSI
Error detection ผูรับอาจจะตีความหมายของ bit ใน frame ที่ไดรับมาผิดพลาดไดซึ่งอาจจะเกิด มาจากสัญญาณออน และการรบกวนของคลื่นแมเหล็กไฟฟา ดังนั้น protocol ใน link layer จึงตองมีกลไกเพื่อ detect การเกิด error โดยเซตคา error detection bit เขาไปใน frame เพื่อใหผูรับ สามารถทําการ check error ได
Error Detection And Recovery Techniques Parity bit • One additional bit per character • Can use • Even parity • Odd parity • Cannot handle error that changes two bits หมายความว่า ถ้าบิตผิดลพลาดเกิน 2 บิตขึ้นไปก็ไม่สามารถตรวจสอบได้
การใช้บิตตรวจสอบ Parity Bit เป็นวิธีหรือเทคนิคการตรวจจับข้อผิดพลาดอย่างง่าย โดยจะใช้ parity bit ซึ่งประกอบไปด้วยเลข 0 หรือ 1 ที่ปะท้ายเพิ่มเข้ามาอีกหนึ่งบิตเพื่อใช้เป็นบิตตรวจสอบ โดยมีวิธีการตรวจสอบอยู่ 2 วิธีคือ • even parity • Odd parity
Example Ex 1 0100110 (Even Parity) Sol: 1. เติมบิต 1 เข้าไปเพื่อให้เป็นบิตคู่ (นับเลข 1) จะได้ 01001101
Example 2. ปลายทางก็ให้ตรวจสอบโดยใช้วิธีเดียวกัน คือ Even Parity Ex 20100110 (Odd Parity) (ก็ให้ทำในทำนองเดียวกัน)
Test Even Parity 1. 0101010 2. 0110000 3. 0111111 01010101 01100000 01111110
Test Odd Parity 1. 0101010 2. 0110000 3. 0111111 01010100 01100001 01111111
ข้อเสียของ Parity Check การตรวจสอบจะไม่พบข้อผิดพลาดเลย หากบิตข้อมูลเกิดผิดพลาดจำนวน 2 บิต หรือเกิดข้อผิดพลาดหลาย ๆ บิตที่เป็นบิตคู่ เช่น 2, 4, 6 เช่น
0 1 0 0 1 1 0 1 Even Parity: Sender : 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 Receiver : 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 01 0 0 0 0 0 1
Error Detection And Recovery Techniques (continued) Checksum • มีประสิทธิภาพมากกว่า Parity Check • ใช้ Over head มากกว่า Parity Check • Compute and send arithmetic sum • Handles multiple bit errors • Cannot handle all errors
Error Detection And Recovery Techniques (continued) วิธีการหาผลรวมหรือเรียกว่า Check sum นี้ จัดเป็นอีกวิธีหนึ่งของเทคนิคการตรวจสอบข้อผิดพลาดที่มีประสิทธิภาพสูงกว่า การใช้บิตตรวจสอบ (Parity Bit Check)แต่จำเป็นต้องใช้ Overhead ที่มากกว่าแบบมากกว่าแบบ Parity Bit Check วิธี check sum นี้ฝ่ายส่งจะคำนวณหาผลรวมของข้อมูล และส่งไปพร้อมกับข้อมูล
สรุปการทำงานของ Check Sum • วีธี Check Sum นี้ ฝ่ายส่งจะคำนวณหาผลรวมข้อมูล และส่งไปพร้อมกับข้อมูล • เมื่อฝ่ายรับได้รับข้อมูล ก็จะนำผลรวมนั้นไปตรวจสอบกับข้อมูลที่ได้รับมา ว่าถูกต้องตรงกันหรือไม่ • สำหรับการคำนวณหาผลรวมข้อมูล ก็สามารถทำได้โดยง่าย โดยจะนำค่าของตัวเลขนั้นมารวมกัน และเพื่อให้ง่ายต่อการอธิบาย จึงขอใช้ค่าตัวเลขของรหัส ASCII เป็นตัวอย่าง เช่น
ข้อเสียของ Check sum ถึงแม้ว่าผลรวมที่คำนวณได้นั้น มีค่าตรงก็จริงอยู่ แต่หากค่าของข้อมูลแต่ละตัวได้มีการเปลี่ยนแปลง และเกิดมีผลรวมที่ตรงกัน ก็จะถือว่าตรวจจับไม่พบข้อผิดพลาดเช่นกัน เช่น Ex A: 5 + 6 + 4 + 1 = (0101 + 0110 + 0100 + 0001) = (10000) = 16 B: 4 + 7 + 5 + 0 = (0100 + 0111 + 0101 + 0000) = (10000) = 16
ข้อเสียของ Check sum จากรูป A และ B จะเห็นได้ว่าข้อมูลแต่ละตัวได้เกิดการเปลี่ยนแปลงที่บิตสุดท้าย แต่ผลรวมที่ได้ มีค่าเท่ากับ 16 ซึ่งทำให้ไม่สามารถตรวจจับได้ โดยตำแหน่งของบิตที่เกิดการเปลี่ยนแปลงและก่อให้เกิดข้อผิดพลาดนี้เรียกว่า Vertical Errors
การใช้วิธี CRC (Cyclic Redundancy Check) การใช้วิธี CRC เป็นวิธีหนึ่งที่ได้รับความนิยมใช้งานบนเครือข่าย และ จัดได้ว่าเป็นวิธีที่มีประสิทธิภาพสูงกว่าการใช้บิตตรวจสอบ(Parity Bit) และ การหาผลรวม (Check Sum) เนื่องจากสามารถตรวจจับบิตผิดพลาดได้ครอบคลุมและแน่นอนกว่า โดยเฉพาะ CRC-32 บิต นั้นมีอัตราความแน่นอนหรืออัตราความถูกต้องในการตรวจจับข้อผิดพลาดได้ มากถึง 99.99999998 %
Polynomial Codes หลักการของ CRC จะใช้รหัสโพลีโนเมียล (Polynomial Codes) ซึ่งต้องมีคุณสมบัติดังนี้ 1. บิตซ้ายสุด และบิตขวาสุด จะต้องมีค่าเป็น 1 เสมอ 2. รหัสโพลิโนเมียล จะต้องมีจำนวนบิตที่น้อยกว่าบิตของข้อมูล 3. ลักษณะของโพลิโนเมียลจะเป็นลักษณะแบบ Modulo 2 จะเป็น ในลักษณะ Exclusive-OR นั่นเอง โดยบิตที่นำมาบวกหรือลบกัน หากบิตตรงกัน ผลที่ได้จะเท่ากับ 0 ในขณะที่บิตต่างกัน ผลที่ได้ จะมีค่าเท่ากับ 1
วิธีการคำนวณหา สามารถสรุปได้ดังนี้ สูตร คำนวณ M(x) คือเฟรมข้อมูลที่ต้องการส่ง G(x) คือโพลีโนเมียลที่ตั้งขึ้นมา n คือบิตศูนย์ที่เพิ่มเติม ด้วยนำไปแปะท้าย M(x) จำนวนบิต ที่เติม จะพิจารณาจาก ดีกรีของ G(x) R(x) คือผลของเศษที่ได้จากการคำนวณ T(x) คือเฟรมที่ส่งไป โดย T(x) = M(x) + R(x)
Example กำหนดให้ M(x) = 1 1 0 1 0 1 1 0 1 1 G(x) = x 4+ x + 1 จะได้ว่า G(x) = (1*x4)+(0*x3)+(0*x2)+(1*x1)+(1*x0) = 1 0 0 1 1
Example หลังจากที่ได้ค่า G(x)มาแล้วให้นำมาเปรียบเทียบ คุณสมบัติดังนี้ 1.บิตทางซ้ายสุดและบิตทางขวาสุดของ G(x) มีค่าเป็น 1:(T) 2.จำนวนบิตของ G(x) มีน้อยกว่า M(x) : (T) 3.ดีกรีของ G(x) เท่ากับ 4 ดังนั้น n จึงมีค่า เท่ากับ 4 โดยให้เพิ่มบิตศูนย์ จำนวน 4 บิต ต่อท้ายเฟรม M(x) จะได้ 1 1 0 1 0 1 1 0 1 1 0 0 0 0 M(x) n
Example • จากวิธีข้างต้น Frame ที่ถูกส่งไปยังปลายทางก็คือ T(x) = M(x) + R (x) = 1 1 0 1 0 1 1 0 1 11 1 1 0
Example • หลังจากที่ได้ทำการคำนวณ CRC เป็นที่เรียบร้อยแล้ว ฝ่ายส่งก็จะส่ง T(x) ไปยังปลายทาง • เมื่อปลายทางได้รับ frame T(x) ก็จะนำ T(x) ไปหารด้วยโพลิโนเมียล หรือ G(x) ที่เป็นรหัสเดียวกันกับฝ่ายผู้ส่ง โดย ผลลัพธ์จากการคำนวณ T(x)/G(x) จะต้องหารลงตัว หรือมีเศษเป็นศูนย์เสมอแสดงว่าตรวจจับไม่พบข้อผิดพลาด • แต่ถ้าหากผลหารไม่เป็นศูนย์ แสดงว่า ตรวจพบข้อผิดพลาด
กรณีที่ตรวจไม่พบข้อผิดพลาด เนื่องจากเศษมีค่า เท่ากับ “ศูนย์”
กรณีที่ตรวจพบข้อผิดพลาด เนื่องจากเศษมีค่า ไม่เท่ากับ “ศูนย์”
สำหรับในกรณีที่ฝ่ายรับตรวจจับข้อผิดพลาดพบ เช่น frame ข้อมูลที่ส่งไปยังปลายทางได้มีการเปลี่ยนแปลงจำนวนบิต 2 บิตด้วยกันคือ 1 1 0 1 0 1 1 0 1 1 1 0 0 0 ผลจากการหารจะไม่ลงตัว นั่นหมายถึงพบ ข้อผิดพลาดแล้ว
จงคำนวณหา Error Dectectionจากโจทย์ต่อไปนี้ ว่ามี Error หรือไม่ โดยแสดงวิธีทำ ข้อมูล 1010001101 Frame check sum 110101