หน่วยที่ 4 ชั้นสื่อสารนำส่งข้อมูล




หน่วยที่ 4 ชั้นสื่อสารนำส่งข้อมูล

เรื่อง ชั้นสื่อสารนำส่งข้อมูล
____________________________________________________________________________

ทำความรู้จักกับชั้นสื่อสารนำส่งข้อมูล
       ชั้นสื่อสารนำส่งข้อมูล (Transport Layer) มีหน้าที่ส่ง message ของ Application layer ระหว่าง client และ server ของแอพพลิเคชั่น โดยใน Transport Layer นั้นจะมี protocol ที่ใช้งานอยู่ 2 Protocol ด้วยกันคือ TCP และ UDP ซึ่งทั้งคู่ก็ทำหน้าที่ส่ง message เหมือนกัน ต่างกันที่ว่า TCP เป็น Connection-Oriented Service ที่รวมถึง การรับรองว่า message ที่ถูกส่งไปยังปลายทางนั้นจะถูกส่งอย่างถูกต้อง ครบถ้วนและตรงตามลำดับ ส่วน UDP นั้นเป็น Connectionless service ซึ่ง เป็น service ที่ทำการส่ง messages ไปให้ปลายทางอย่างเดียว ไม่มีการ รับรองว่าข้อมูลจะไปถึงปลายทางจริง ๆ หรือไม่

ชั้นสื่อสารนำส่งข้อมูล (Transport Layer)
                 แบ่งเป็นโพรโตคอล 2 ชนิดตามลักษณะ ลักษณะแรกเรียกว่า Transmission Control Protocol (TCP) เป็นแบบที่มีการกำหนดช่วงการสื่อสารตลอดระยะเวลาการสื่อสาร (connection-oriented) ซึ่งจะยอมให้มีการส่งข้อมูลเป็นแบบ Byte stream ที่ไว้ใจได้โดยไม่มีข้อผิดพลาด ข้อมูลที่มีปริมาณมากจะถูกแบ่งออกเป็นส่วนเล็กๆ เรียกว่า message ซึ่งจะถูกส่งไปยังผู้รับผ่านทางชั้นสื่อสารของอินเทอร์เน็ต ทางฝ่ายผู้รับจะนำ message มาเรียงต่อกันตามลำดับเป็นข้อมูลตัวเดิม TCP ยังมีความสามารถในการควบคุมการไหลของข้อมูลเพื่อป้องกันไม่ให้ผู้ส่ง ส่งข้อมูลเร็วเกินกว่าที่ผู้รับจะทำงานได้ทันอีกด้วย

      โปรโตคอลการนำส่งข้อมูลแบบที่สองเรียกว่า UDP (User Datagram Protocol) เป็นการติดต่อแบบไม่ต่อเนื่อง (connectionless) มีการตรวจสอบความถูกต้องของข้อมูลแต่จะไม่มีการแจ้งกลับไปยังผู้ส่ง จึงถือได้ว่าไม่มีการตรวจสอบความถูกต้องของข้อมูล อย่างไรก็ตาม วิธีการนี้มีข้อดีในด้านความรวดเร็วในการส่งข้อมูล จึงนิยมใช้ในระบบผู้ให้และผู้ใช้บริการ (client/server system) ซึ่งมีการสื่อสารแบบ ถาม/ตอบ (request/reply) นอกจากนั้นยังใช้ในการส่งข้อมูลประเภทภาพเคลื่อนไหวหรือการส่งเสียง (voice) ทางอินเทอร์เน็ต
1.      UDP : (User Datagram Protocol)
        เป็นโปรโตคอลที่อยู่ใน Transport Layer เมื่อเทียบกับโมเดล OSI โดยการส่งข้อมูลของ UDP นั้นจะเป็นการส่งครั้งละ 1 ชุดข้อมูล เรียกว่า UDP datagram ซึ่งจะไม่มีความสัมพันธ์กันระหว่างดาต้าแกรมและจะไม่มีกลไกการตรวจสอบความ สำเร็จในการรับส่งข้อมูล
         กลไกการตรวจสอบโดย checksum ของ UDP นั้นเพื่อเป็นการป้องกันข้อมูลที่อาจจะถูกแก้ไข หรือมีความผิดพลาดระหว่างการส่ง และหากเกิดเหตุการณ์ดังกล่าว ปลายทางจะได้รู้ว่ามีข้อผิดพลาดเกิดขึ้น แต่มันจะเป็นการตรวจสอบเพียงฝ่ายเดียวเท่านั้น โดยในข้อกำหนดของ UDP หากพบว่า Checksum Error ก็ให้ผู้รับปลายทางทำการทิ้งข้อมูลนั้น แต่จะไม่มีการแจ้งกลับไปยังผู้ส่งแต่อย่างใด การรับส่งข้อมูลแต่ละครั้งหากเกิดข้อผิดพลาดในระดับ IP เช่น ส่งไม่ถึง, หมดเวลา ผู้ส่งจะได้รับ Error Message จากระดับ IP เป็น ICMP Error Message แต่เมื่อข้อมูลส่งถึงปลายทางถูกต้อง แต่เกิดข้อผิดพลาดในส่วนของ UDP เอง จะไม่มีการยืนยัน หรือแจ้งให้ผู้ส่งทราบแต่อย่างใด
สาเหตุที่ผู้พัฒนาแอปพลิเคชันเลือกใช้โปรโตคอล UDP มากกว่า โปรโตคอล TCP เนื่องจากปัจจัยเหล่านี้
      1.       ไม่มีการสร้างเส้นทางเชื่อมต่อ (No Connection Establishment)
      2.       ไม่มีการควบคุมอัตราการส่งข้อมูล (No Flow Control)
      3.       ไม่มีการเก็บสถานะของการเชื่อมต่อ (No Connection State)
      4.       มีขนาดของ Header เล็กกว่า TCP (Packet Header Overhead)
โครงสร้างของ UDP
มีรายละเอียดดังนี้
•  Source Port Number : หมายเลขพอร์ตต้นทางที่ส่งดาต้าแกรมนี้
•  Destination Port Number : หมายเลขพอร์ตปลายทางที่จะเป็นผู้รับดาต้าแกรม
•  UDP Length : ความยาวของดาต้าแกรม ทั้งส่วน Header และ data นั่นหมายความว่า ค่าที่น้อยที่สุดในฟิลด์นี้คือ 8 ซึ่งเป็นขนาดของ Header
•  Checksum : เป็นตัวตรวจสอบความถูกต้องของ UDP datagram และจะนำข้อมูลบางส่วนใน IP Header มาคำนวณด้วย

ข้อดีและการนําโปรโตคอล UDP ไปประยุกต์ใช้งาน
-          มีการทาํงานที่ไม่ซับซ้อน เหมาะสําหรับการรับ-ส่งข้อมูลสั้นๆ ระหว่าง Client-Server
-          เหมาะสําหรับการส่งข้อมูลแบบ Broadcasting หรือ Multicasting
-          ใช้ในการปรับปรุงข้อมูลของ Routing โดยใช้กับโปรโตคอล Simple Network Management Protocol (SNTP)
-          ใช้ในการส่งข้อมูลแบบ Real –Time Multimedia โดยร่วมกับโปรโตคอล Real-Time Transport Protocol (RTP)

2.       TCP : (Transmission Control Protocol)
          อยู่ใน Transport Layer เช่นเดียวกับ UDP ทำหน้าที่จัดการและควบคุมการรับส่งข้อมูล ซึ่งมีความสามารถและรายละเอียดมากกว่า UDP โดยดาต้าแกรมของ TCP จะมีความสัมพันธ์ต่อเนื่องกัน และมีกลไกควบคุมการรับส่งข้อมูลให้มีความถูกต้อง (reliable) และมีการสื่อสารอย่างเป็นกระบวนการ (connection-oriented)



มีรายละเอียด ดังนี้
•  Source Port Number : หมายเลขพอร์ตต้นทางที่ส่งดาต้าแกรมนี้
•  Destination Port Number : หมายเลขพอร์ตปลายทางที่จะเป็นผู้รับดาต้าแกรม
•  Sequence Number : ฟิลด์ที่ระบุหมายเลขลำดับอ้างอิงในการสื่อสารข้อมูลแต่ละครั้ง เพื่อใช้ในการแยกแยะว่าเป็นข้อมูลของชุดใด และนำมาจัดลำดับได้ถูกต้อง
•  Acknowledgment Number : ทำหน้าที่เช่นเดียวกับ Sequence Number แต่จะใช้ในการตอบรับ
•  Header Length : โดยปกติความยาวของเฮดเดอร์ TCP จะมีความยาว 20 ไบต์ แต่อาจจะมากกว่านั้น ถ้ามีข้อมูลในฟิลด์ option แต่ต้องไม่เกิน 60 ไบต์
•  Flag : เป็นข้อมูลระดับบิตที่อยู่ในเฮดเดอร์ TCP โดยใช้เป็นตัวบอกคุณสมบัติของแพ็กเก็ต
TCP ขณะนั้นๆ และใช้เป็นตัวควบคุมจังหวะการรับส่งข้อมูลด้วย ซึ่ง Flag มีอยู่ทั้งหมด 6 บิต แบ่งได้ดังนี้
Type
Description
URG
ใช้บอกความหมายว่าเป็นข้อมูลด่วน และมีข้อมูลพิเศษมาด้วย (อยู่ใน Urgent Pointer)
ACK
แสดงว่าข้อมูลในฟิลด์ Acknowledge Number นำมาใช้งานได้
DSH
เป็นการแจ้งให้ผู้รับข้อมูลทราบว่าควรจะส่งข้อมูล Segment นี้ไปยัง Application ที่กำลังรออยู่โดยเร็ว
RST
ยกเลิกการติดต่อ (Reset) เนื่องจากในกรณีที่เกิดการสับสนขึ้นด้วยเหตุผลต่างๆ เช่นโฮสต์มีปัญหา ให้เริ่มสื่อสารใหม่
SYN
ใช้ในการเริ่มต้นขอติดต่อกับปลายทาง
FIN
ใช้ส่งเพื่อแจ้งให้ปลายทางทราบว่ายุติการติดต่อ

ความน่าเชื่อถือของการส่งข้อมูลโดยใช้ TCP
การนําข้อมูลจากชั้น Transport layer ไปยังชั้น Network layer จะใช้บริการ ของ Internet Protocol (IP) ทําให้ข้อมูลนั้นไม่มีความน่าเชื่อถือ เนื่องจากโปรโตคอล IP ทำงานแบบ Connectionless
ดังนั้น โปรโตคอล TCP จึงต้องเพิ่มวิธีในการตรวจสอบข้อมูล เพื่อให้มั่นใจว่า ข้อมูลที่ส่งไปนั้น ถึงผู้รับอย่างถูกต้อง
การควบคุมการไหลของข้อมูล (Flow Control)
เป็นกลไกควบคุมการส่งข้อมูล เพื่อปรับอัตราการส่งข้อมูลของผู้ส่งให้เหมาะสมกับผู้รับ ป้องกันไม่ให้ผู้ส่ง ส่งข้อมูลมากเกินจนผู้รับไม่สามารถรับข้อมูลเพื่อนําไป ประมวลผลได้ทัน
โครงสร้างการทำงานของ Flow Control

ข้อมูลของพื้นที่ว่างบน Buffer = พื้นที่ Buffer – (ข้อมูลที่รับเข้ามา – ข้อมูลทีถูกอ่านไป)
ตัวอย่างเช่น host A ส่ง file ขนาด 80 bytes มาที่ host B ซึ่งมี buffer ขนาด 100 bytes
host B ได้รับข้อมูลเข้ามาไว้ที่ buffer แล้ว 50 bytes และ application layer ของ host B ก็ได้เข้ามาอ่านข้อมูลจาก buffer ไปแล้ว 30 bytes อยากทราบว่าจะเหลือพื้นที่ว่างบน Buffer เท่าใด
ข้อมูลที่ยังค้างอยู่ใน buffer = 20  bytes (รับเข้ามา 50 – ถูกอ่านไป 30)
ข้อมูลของพื้นที่ว่างบน buffer = 80 bytes (พื่นที่ 100 – ข้อมูลที่ยังค้าง 20)
ดังนั้น พื้นที่ว่างบน Buffer = 80 bytes
การจัดการเชื่อมต่อ TCP (TCP Connection Management)
          การเชื่อมต่อเพื่อส่งข้อมูลโดยใช้ TCP นั้น จะเริ่มจากการสร้างเส้นทางเพื่อใช้ในการส่งข้อมูล ตามวิธีการของ Connection-Oriented โดยการสร้างเส้นทางเชื่อมต่อจะเริ่มจาก Application ของฝั่งผู้รับต้องการข้อมูลจึงเริ่มการสร้างเส้นทางเพื่อขอข้อมูลจากอีกฝั่ง หนึ่ง เรียกกระบวนการสร้างเส้นทางเพื่อขอข้อมูลดังกล่าวว่า  “Three-Way Handshake”



TCP และ UDP แตกต่างกันอย่างไร
          TCP และ UDP ต่างก็เป็น PROTOCOL สําคัญที่อยู่ใน TRANSPORT LAYER PROTOCOL ซึ่งถูก ออกแบบให้มีคุณสมบัติหน้าที่การทํางานที่เหมาะกับงานที่แตกต่างกัน คุณสมบัติของทั่งสอง PROTOCOL ดังกล่าวมีดังต่อไปนี้
TCP
UDP
Reliable
Unreliable
Connection – oriented
Connectionless
Flow control
No Flow control
Congestion control
No congestion control

CONNECTION-ORIENTED SERVICE คือ ในการติดต่อระหว่าง PROCESS ด้วย TCP ข้อมูลจะต้องถูกส่งถึงปลายทางได้อย่างครบถ้วน สมบูรณ์โดยไม่เกิดข้อผิดพลาด เนื่องจากระหว่างการส่งข้อมูลจะมีการตรวจสอบข้อผดิพลาด อย่างต่อเนื่อง
CONNECTIONLESS คือ ไม่มีการรับประกันความถูกต้องสมบูรณ์ ของข้อมูลที่ส่งมาจากต้นทางไปยังปลายทาง (UNRELIABLE DATA TRANSFER) จะให้ ความสําคัญกับความเร็วในการส่งข้อมูลเท่านั้
การควบคุมการไหลของข้อมูล (Flow Control) เป็นกลไกควบคุมการส่งข้อมูล เพื่อปรับอัตราการส่งข้อมูลของผู้ส่งให้เหมาะสมกับผู้รับ ป้องกันไม่ให้ผู้ส่ง ส่งข้อมูลมากเกินจนผู้รับไม่สามารถรับข้อมูลเพื่อนําไป ประมวลผลได้ทัน
ควบคุมความคับคั่ง (Congestion control) ในความหมายของระบบเครือข่ายหมายถึง ควบคุมปริมาณการใช้งานระบบเครือข่ายไม่ให้มากเกินไปจนทำให้การรับส่งข้อมูลทำได้ช้า