ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

การควบคุมการไหลของข้อมูล (Flow Control)

 

Stop - and - Wait Flow Control และ Sliding - Window Flow Control

 

การควบคุมการไหลของข้อมูล (Flow Control) เป็นวิธีการในที่จะควบคุมการส่งข้อมูลจากผู้ส่งไปยังผู้รับ เพื่อไม่ให้ข้อมูลถูกส่งออกไปมากเกินกว่าที่ผู้รับข้อมูลจะสามารถรับได้ ระหว่างการสื่อสารบนเครือข่าย 

 

สาเหตุที่ต้องมีการควบคุมการไหลของข้อมูลและข้อผิดพลาด ก็เนื่องจาก

  1. จะเกิดอะไรขึ้น ถ้าฝั่งผู้ส่งข้อมูลและฝั่งผู้รับ สื่อสารอยู่บนความเร็วที่แตกต่างกัน
  2. จะเกิดอะไรขึ้น ถ้า Frame ข้อมูลของฝ่ายส่งนั้นเกิดความเสียหาย
  3. จะทำการโต้ตอบกันอย่างไร หาก Frame ข้อมูลของฝ่ายนั้นเกิดความเสียหาย หรือ สูญเสีย
  4. จะเกิดอะไรขึ้น หากฝั่งผู้รับไม่รู้ว่ามีขาวสารส่งถึงตน

 

วิธีการในการควบคุมการไหลของข้อมูล คือ Stop - and - Wait Flow Control และ Sliding - Window Flow Control

 

การควบคุมการไหลของข้อมูลแบบ Stop - and – Wait

  • การควบคุมการไหลของข้อมูลแบบนี้เป็นวิธีง่ายที่สุด
  • ผู้ส่งข้อมูลจะส่งข้อมูลออกไปเป็น Frame หรือกลุ่มของข้อมูล
  • หลังจากที่ผู้รับได้รับข้อมูลแล้ว จะต้องทำการส่งการตอบรับว่าได้รับข้อมูลที่ถูกต้องแล้ว(Acknowledgement : ACK) หรือ ข้อมูลที่ได้รับผลิดพลาด (Negative Acknowledge : NACK) ให้กับผู้ส่ง
  • วิธีนี้ผู้รับสามารถควบคุมการไหลของข้อมูลได้ โดยผู้ส่งจะต้องรอการตอบรับจากผู้รับทุกครั้ง ก่อนที่จะทำการส่งข้อมูล Frame ถัดไป
  • การควบคุมการไหลของข้อมูลแบบนี้ ทำให้อัตราความเร็วของการส่งข้อมูลลดลง เพราะผู้ส่งจะต้องรอการตอบรับทุก Frame ถ้าในกรณีที่มีข้อมูลขนาดใหญ่ การส่งข้อมูลก็จะเป็นไปอย่างล่าช้า

 

ตัวอย่างการทำงานของ Stop and Wait

รูปตัวอย่างการทำงานของ Stop and Wait

ข้อดี

  • ง่ายต่อการรับ – ส่งข้อมูล
  • ในกรณีที่ฝ่ายรับต้องการหยุดการรับส่งข้อมูลชั่วคราว ก็สามารถทำได้ด้วยการไม่ส่ง ACK กลับไป

ข้อเสีย

  • ความล่าช้า เนื่องจากทุก ๆ Frame ที่เดินทางไปยังฝ่ายรับ จะต้องได้รับ ACK ก่อน ฝ่ายส่งจึงจะสามารถส่ง Frame ในลำดับถัดไปได้ โดยเฉพาะหากระยะทางของฝ่ายส่งและฝ่ายรับอยู่ห่างไกลกัน ก็จะต้องสูญเสียเวลารอคอยกับการตอบรับ ACK ในแต่ละ Frame

 

การควบคุมการไหลของข้อมูลแบบ Sliding-Window

  • ส่งข้อมูลได้ครั้งละหลาย ๆ Frame แล้วจึงรอกการตอบรับ (ACK) จากผู้รับข้อมูล
  • ผู้ส่งและผู้รับจะต้องมีกรอบจำนวน Frame ที่สามารถรับและส่งได้เท่ากัน
  • Sliding Window ถูกนำมาใช้เพื่อป้องกันไม่ให้ฝ่ายรับต้องทำรับข้อมูลเกินขนาดที่จะรับได้
  • ฝ่ายรับจึงได้กำหนด Window Size ที่พอจะรับได้เพื่อบอกให้ฝ่ายรับรู้ถึงขนาดของข้อมูลที่พอเหมาะในการส่ง ผู้รับจึงปรับขนาดข้อมูลให้เหมาะสมกับที่ผู้รับต้องการ
  • ผู้รับเมื่อพร้อมที่จะรับข้อมูลชุดต่อไป ก็จะทำการส่งสัญญาณ ACK และบอกหมายเลข Frame ถัดไปที่ต้องการจะรับ พร้อมกับเพิ่มขนาดของกรอบจำนวน Frame ให้เท่าเดิม
  • เมื่อผู้ส่งได้รับสัญญาณตอบรับ และหมายเลข Frame ถัดไปที่ผู้รับจะได้รับแล้ว ก็จะทำการขยายกรอบจำนวน Frame ให้เท่ากับจำนวน Frame ที่ผู้รับได้รับไปแล้ว

 

ตัวอย่างการทำงานของ Sliding-Window

รูปตัวอย่างการทำงานของ Sliding-Window
รูปตัวอย่างการทำงานของ Sliding-Window

 

การควบคุมการไหลของข้อมูล หมายถึง เป็นวิธีการในที่จะควบคุมการส่งข้อมูลจากผู้ส่งไปยังผู้รับ เพื่อไม่ให้ข้อมูลถูกส่งออกไปมากเกินกว่าที่ผู้รับข้อมูลจะสามารถรับได้ ในระหว่างการสื่อสารบนเครือข่าย ข้อผิดพลาดต่าง ๆ อาจเกิดขึ้นได้จากปัจจัยต่าง ๆ รวมถึงสัญญาณรบกวนที่อาจก่อให้เกิดความไม่สมบูรณ์ในระหว่าการสื่อสาร

 

ช่องทางการศึกษาเพิ่มเติมข่าวสารที่น่าสนใจเกี่ยวกับ : บทความทั่วไป

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีการปรับการการแสดงการ รายชื่อของแจ้งเตือน bookmark โดย phpbb
โดย Ittichai_chupol อ 21 ม.ค. 2020 5:45 pm บอร์ด PHP Knowledge
0
9
อ 21 ม.ค. 2020 5:45 pm โดย Ittichai_chupol
pillow vs wand library ความแตกต่างของ library ทั้ง 2 ตัวในการ procress รูปภาพ
โดย benzas00123 อ 21 ม.ค. 2020 5:29 pm บอร์ด Python Knowledge
1
9
อ 21 ม.ค. 2020 5:54 pm โดย mindphp
อยู่ดีๆ ก็ไม่สามารถเชื่อมต่อกับ database ได้ครับ
โดย benzas00123 อ 21 ม.ค. 2020 4:46 pm บอร์ด Programming - C/C++ & java & Python
5
33
อ 21 ม.ค. 2020 5:39 pm โดย benzas00123
ขอถามเกี่ยวกับ library ImageMagick ครับ
โดย benzas00123 อ 21 ม.ค. 2020 3:29 pm บอร์ด Programming - C/C++ & java & Python
2
17
อ 21 ม.ค. 2020 4:23 pm โดย benzas00123
Git Lad จะทำอย่างไรให้ไฟล์ที่อยู่ในโฟร์ย่อย ออกมาครับ
โดย jamepiyawat อ 21 ม.ค. 2020 12:08 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
53
อ 21 ม.ค. 2020 2:04 pm โดย jamepiyawat
ขอทราบวิธีการเขียน python เก็บข้อมูล ip ของผู้ใช้หน่อยครับ
โดย benzas00123 อ 21 ม.ค. 2020 10:54 am บอร์ด Programming - C/C++ & java & Python
1
16
อ 21 ม.ค. 2020 12:20 pm โดย mindphp
ขอสอบถามเกี่ยวกับการอัพโหลดรูปภาพเข้า ฐานข้อมูลครับ
โดย benzas00123 จ 20 ม.ค. 2020 6:29 pm บอร์ด SQL - Database
3
28
อ 21 ม.ค. 2020 2:00 pm โดย mindphp
โปรแกรมแปลงหน่วย เครื่องมือในการแปลงหน่วยความจุคอมพิวเตอร์
โดย prmindphp จ 20 ม.ค. 2020 6:24 pm บอร์ด MindPHP News & Feedback
0
14
จ 20 ม.ค. 2020 6:24 pm โดย prmindphp
เทคนิคทำธุรกิจอสังหาอย่างไรให้มีกำไร
โดย Patty Perfume อ 19 ม.ค. 2020 7:12 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 19 ม.ค. 2020 7:12 pm โดย Patty Perfume
ความปลอดภัยด้านสุขภาพ เรื่องที่ทุกคนควรเริ่มต้นใฝ่หา
โดย medalezga อ 19 ม.ค. 2020 4:30 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
83
อ 19 ม.ค. 2020 4:30 pm โดย medalezga
วิธีการนำชื่อข้อมูลในชื่อในฐานข้อมูล ในไฟล์ XML ของ module joomla
โดย jamepiyawat ส 18 ม.ค. 2020 6:44 pm บอร์ด Joomla Developing Knowledge
0
106
ส 18 ม.ค. 2020 6:44 pm โดย jamepiyawat
วิธีการจัดทำการระบบแจ้้งเตือนใน phpbb
โดย Ittichai_chupol ส 18 ม.ค. 2020 5:42 pm บอร์ด PHP Knowledge
0
60
ส 18 ม.ค. 2020 5:42 pm โดย Ittichai_chupol
Pillow library ปรับขนาดรูปเป็นเปอร์เซ็นเพื่อนำไปใช้งานได้สะดวก
โดย benzas00123 ส 18 ม.ค. 2020 5:25 pm บอร์ด Python Knowledge
0
9
ส 18 ม.ค. 2020 5:25 pm โดย benzas00123
Pillow library Optimize รูปภาพเพื่อให้มีขนาดของข้อมูลที่เล็กลง
โดย benzas00123 ส 18 ม.ค. 2020 2:53 pm บอร์ด Python Knowledge
0
60
ส 18 ม.ค. 2020 2:53 pm โดย benzas00123
ตัวช่วยในการคำนวณแคลอรี่สำหรับผู้ที่รักการออกกำลังกาย
โดย prmindphp ส 18 ม.ค. 2020 11:50 am บอร์ด MindPHP News & Feedback
0
116
ส 18 ม.ค. 2020 11:50 am โดย prmindphp
เราจะเก็บรูปข้อมูลของรูปลง database เราจะใช้ data type อะไรครับ
โดย benzas00123 ส 18 ม.ค. 2020 11:31 am บอร์ด SQL - Database
2
118
ส 18 ม.ค. 2020 1:17 pm โดย benzas00123
อยากทราบวิธีการแก้ไขปัญหาการ อัพโหลดไฟล์ excel แล้วไม่รองรับภาษาไทย
โดย Ittichai_chupol ศ 17 ม.ค. 2020 5:58 pm บอร์ด Programming - PHP
7
57
จ 20 ม.ค. 2020 2:05 pm โดย saravana
ต้องการนับจำนวนอักษรเเละตัดอักษรที่เกิน มีปัญหากับภาษาไทย
โดย thatsawan ศ 17 ม.ค. 2020 5:18 pm บอร์ด Programming - C/C++ & java & Python
0
20
ศ 17 ม.ค. 2020 5:18 pm โดย thatsawan
สอบถามครับ ลูปค่าออกมาแล้วต้องการให้มันเก็บค่าในตัวแปร ต้องทำยังไงครับ
โดย chatee supasand ศ 17 ม.ค. 2020 3:51 pm บอร์ด Programming - C/C++ & java & Python
3
88
ศ 17 ม.ค. 2020 5:19 pm โดย thatsawan
อยากทราบวิธีก่ารเปิด exe ใน ubutu เวอชั่น 14
โดย Ittichai_chupol ศ 17 ม.ค. 2020 2:33 pm บอร์ด Programming - PHP
2
118
ศ 17 ม.ค. 2020 4:14 pm โดย Ittichai_chupol