วันจันทร์ที่ 24 สิงหาคม พ.ศ. 2552

Week 8 ... 18 August 2009

Data Link Control
1.การควบคุมอัตราการไหลและควบคุมความผิดพลาดของข้อมูล
-Flow Control
เป็นการกล่าวถึงขั้นตอนกระบวนการที่ควบคุมจานวนของข้อมูลที่ส่งออกไปให้อยู่ในปริมาณที่เหมาะสม ก่อนที่จะได้รับการยืนยันจากผู้รับข้อมูล สาเหตุที่ต้องมีการควบคุมการไหลก็เพราะผู้รับอาจมีความเร็วในการรับข้อมูลไม่เท่ากับผู้ส่ง หรือมีหน่วยความจาอย่างจากัด หรือมีความเร็วประมวลผลต่า
-Error Control
หมายถึง การที่ผู้ส่งต้องส่งข้อมูลไปใหม่อีกครั้งหนึ่ง ถ้าผู้รับไม่สามารถรับข้อมูลที่ไม่ถูกต้อง สาเหตุที่ต้องมีการควบคุมก็เนื่องจากว่าข้อมูลจะต้องเดินทางจากที่หนึ่งไปยังอีที่หนึ่ง จึงมีความเป็นไปได้ที่ข้อมูลนั้นจะเกิดการเสียหายหรือสูญหายในระว่างการเดินทางได้
กลไกในการควบคุมอัตราการไหลและควบคุมความผิดพลาดของข้อมูลกลไกที่ใช้ในการควบคุมมีอยู่ 3 วิธี คือ Stop-and-wait, Go-Back-N และSelective-Repeat ถึงแม้บางครั้งจะเรียกสิ่งเหล่านี้ว่า “โพรโตคอล” แต่เพื่อง่ายต่อการทาความเข้าใจจึงขอใช้คาว่า “กลไก” (mechanisms)


2. Stop-and-wait
- ผู้ส่งข้อมูลจะต้องทาการสาเนา เฟรมข้อมูลที่จัดส่งไปเอาไว้ก่อน จนกว่าผู้รับจะยืนยันว่าได้รับเฟรมข้อมูลนั้นแล้ว เพราะถ้าเฟรมข้อมูลเกิดการเสียหายจะได้ส่งไปใหม่
- ในการยืนยันตอบรับเฟรมข้อมูลของผู้รับนั้น ผู้รับจะต้องส่งเฟรม acknowledgment (ACK) มาให้กับผู้ส่ง ซึ่งการส่งเฟรม ACK จะเป็นการบ่งบอกว่าได้รับเฟรมอะไร และเฟรมข้อมูลที่ต้องการส่งถัดไปนั้นคือเฟรมอะไร เช่น ผู้รับส่งเฟรม ACK1 มาให้ จะมีความหมายว่าได้รับเฟรม 0 แล้ว ให้ส่งเฟรม 1 มาได้เลย เป็นต้น
- ถ้าผู้รับข้อมูลได้รับข้อมูลผิดพลาด ผู้รับจะทาการทิ้งเฟรมนั้นไป หรือถ้าได้รับเฟรมที่ไม่ต้องการ จะทาการทิ้งเฟรมนั้นไปเช่นกัน
- ผู้ส่งจะใช้ตัวแปร S ในการเก็บข้อมูลว่าได้ส่งเฟรมข้อมูลนั้นออกไป ส่วนผู้รับจะใช้ตัวแปร R ในการเก็บข้อมูลว่าเฟรมถัดไปที่ต้องการคือเฟรมอะไร
- ผู้ส่งจะมีการกาหนดเวลาเอาไว้หลังจากส่งเฟรมข้อมูลออกไปแล้ว ถ้าไม่ได้รับเฟรม ACK กลับมาในเวลาที่กาหนด จะต้องทาการส่งเฟรมข้อมูลนั้นกลับไปอีกครั้ง
- ผู้รับจะส่งเฟรมACK กลับไปเมื่อได้รับเฟรมข้อมูลที่ไม่มีความผิดพลาดและเป็นเฟรมข้อมูลที่ต้องการ ถ้าผู้รับได้รับเฟรมที่ผิดพลาดหรือเฟรมที่ไม่ต้องการจะไม่มีการส่งเฟรมใดๆ ตอบกลับไป
- กลไกการทางาน
ในการส่งเฟรมข้อมูลออกไปนั้น เราสามารถแบ่งสถานการณ์ที่เกิดขึ้นออกเป็น 4 กรณีด้วยกัน คือกรณีปกติ กรณีเฟรมข้อมูลสุญหาย กรณีเฟรม ACK สูญหาย และกรณีเฟรม ACK ล่าช้า
- กรณีปกติ
ถ้าการส่งเฟรมข้อมูลเป็นไปอย่างปกติ คือผู้ส่งได้ส่งเฟรม 0และจะทาการคอยรับเฟรม ACK 1 เมื่อได้รับเฟรม ACK 1แล้วจึงจะส่งเฟรม 1 ออกไป จากนั้นทาการคอยรับเฟรม ACK 0 ต่อไป ซึ่งกลไกจะเป็นอย่างนี้เรื่อยๆ ในการที่คอยรับเฟรม ACK นั้นผู้ส่งจะมีระยะเวลาที่แน่นอนในการรอคอย
-กรณีเฟรมข้อมูลสูญหายหรือเสียหาย
กรณีนี้ผู้รับจะทาเหมือนกัน คือ ถ้าได้รับเฟรมข้อมูลที่มีความผิดพลาดหรือเสียหาย ผู้รับจะทิ้งเฟรมข้อมูลนั้นไป ซึ่งเปรียบเสมือนว่าผู้รับไม่ได้รับเฟรมข้อมูลนั้นเอง ถ้าผู้รับไม่ได้รับเฟรมข้อมูลที่ต้องการ ผู้รับไม่ต้องส่ง ACK กลับไปตัวอย่างรูปที่ 2 เมื่อผู้ส่งได้ส่งเฟรม 1 แต่เฟรมนั้นได้สูญหายในระหว่างการส่ง ผู้รับจะไม่ต้องส่ง ACK กลับไป ดังนั้นตัวแปร R จะยังคงเท่ากับ 1 เมื่อผู้ส่งไม่ได้รับเฟรมACK กลับมาในเวลาที่กาหนด ผู้ส่งจะต้องส่งเฟรมข้อมูลกลับไปใหม่อีกครั้ง
- กรณีเฟรมACK สูญหายจะกระทาเหมือนกรณีเฟรมข้อมูลสูญหายหรือเสียหาย
จะกระทำเหมือนกรณีเฟรมข้อมูลสูญหายหรือเสียหาย

-กรณีเฟรม ACK ล่าช้า
เฟรมACK ได้เกิดความล่าช้า เมื่อครบระยะเวลาที่กาหนดแล้วผู้ส่งยังไม่ได้รับเฟรม ACK 1 ผู้ส่งจะทาการส่งเฟรม 0 ไปใหม่อีกครั้ง แต่อย่างไรก็ตามผู้รับจะไม่รับเฟรมนี้ เนื่องจาก R=1 ซึ่งมีความหมายว่าผู้รับต้องการเฟรม 1 ไม่ใช่ 0

3. Go-Back-N
เป็นการส่งเฟรมข้อมูลออกไปคราวละหลายๆเฟรม ก่อนที่จะได้รับเฟรม ACK ตอบกลับมา เพื่อเป็นการใช้สายสื่อสารได้อย่างเต็มประสิทธิภาพมากขึ้นGo-Back-N จะทาการส่งเฟรมข้อมูลจานวน W เฟรม ก่อนที่จะได้รับเฟรม ACK ผู้ส่งจะต้องทาการสาเนาเฟรมข้อมูลทั้ง W เฟรมเอาไว้ด้วย ในเฮดเดอร์ของเฟรมข้อมูลทุกเฟรมจะต้องมีหมายเลขลาดับ เพื่อที่จะได้ทราบว่าเป็นเฟรมที่เท่าใด โดยจะใส่หมายเลขลาดับนี้ก่อน เริ่มต้นจากหมายเลข 0 เป็นต้นไป และเริ่มจากซ้ายไปขวาตัวอย่างหมายเลขลาดับเป็นดังนี้0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,...
- การเลื่อนหน้าต่างของผู้ส่งข้อมูล(Sender Sliding Window)
ผู้ส่งข้อมูลจะต้องทาการเก็บเฟรมข้อมูลที่ส่งออกไปเอาไว้ในบัฟเฟอร์ก่อน จนกระทั้งได้รับเฟรม ACK กลับมาจึงจะทาการลบเฟรมข้อมูลนั้นทิ้งได้ หลักการของการเลือนหน้าต่าง จะเหมือนกับการมีหน้าต่างมาครอบเฟรมข้อมูลไว้ แล้วใช้การเลือนหน้าต่างไปมา เฟรมข้อมูลที่อยู่ด้านซ้ายหน้าต่างจะหมายถึงเฟรมที่ได้รับ ACK แล้ว สามารถลบทิ้งเฟรมนั้นออกจากบัฟเฟอร์ได้ ส่วนเฟรมที่อยู่ด้านขวาหน้าต่าง เป็นเฟรมที่ยังไม่ได้มีการส่งออกไป จะต้องรอจนหน้าต่างเลื่อนมาถึงจึงจะสามารถส่งเฟรมข้อมูลได้ ตัวอย่างเช่น ในรูปที่ 6a เฟรม 0 ถึงเฟรม 6 ได้ส่งข้อมูลออกไปและกาลังรอเฟรมACK ตอบกลับจากผู้รับ ส่วนรูปที่ 6b เมื่อผู้ส่งได้รับเฟรม ACK ตอบกลับมาแล้วว่าผู้รับได้รับเฟรม 0 และเฟรม 1เรียบร้อยแล้ว ผู้ส่งจะทาการเลื่อนหน้าต่างไปทางด้านขวา 2 เฟรม