ยินดีต้อนรับเข้าสู่เว็บไซต์
หน้าแรก       ชั้นสื่อสารทรานสปอร์ต         การส่งมอบข้อมูลจากโปรเซสถึงโปรเซส        แบบตัวอย่างไคลเอนต์/เซิร์ฟเวอร์        การกำหนดตำแหน่งที่อยู่        โพรโทคอล UDP,TCP และ SCTP        ชั้นสื่อสารแอปฟลิเคชั่น
โพรโทคอล UDP, TCP และ SCTP
                                                                                           
       ชุดโพรโทคอล TCP/IP แบบดั้งเดิมนั้น จะกำหนดโพรโทคอลไว้ 2 ตัวด้วยกันคือ UDP และ TCP แต่ปัจจุบันมีการนำโพรโทคอลตัวใหม่เพิ่มเติมเข้ามาคือ SCTP โดยรูปที่ 11.6 ได้แสดงถึงตำแหน่งของโพรโทคอลทั้งสาม ที่ถูกผนวกรวมอยู่ภายในชุดโพรโทคอล TCP/IP บนชั้นสื่อสารทรานสปอร์ต
       
โพรโทคอล UDP (User Datagram Protocol)
        เฮดเดอร์ของโพรโทคอล UDP ประกอบตัวยฟิลด์ที่ใช้บรรจุหมายเลขพอร์ตต้นทางและปลายทาง ฟิลด์กำหนดความกว้างของข้อมูล และฟิลด์ Checksum ที่ใช้ตรวจสอบความถูกต้องของข้อมูล ในส่วนของแพ็กเก็ตที่ประกอบขึ้นจาก UDP นี้จะเรียกว่ายูสเชอร์ดาต้าแกรม (User Datagram) ซึ่งแสดงไว้ดังรูปที่ 11.7
       
เนื่องจาก UDP เป็นโพรโทคอลแบบคอนเน็กชันเลส จึงไม่ต้องสร้างคอนเน็กซันกับสถานีปลายทางก่อนการส่งข้อมูล ดังนั้น UDP จะส่งข้อมูลทันทีเมื่อมีข้อมูลที่ต้องการส่ง อีกทั้งยังไม่รับประกันข้อมูลที่ส่งไป ว่าจะถึงปลายทางหรือไม่ อย่างไรก็ตาม หากข้อมูลที่ส่งไปไม่ถึงปลายทางหรือเกิดข้อผิดพลาดขึ้นมา ชั้นสื่อสารที่อยู่เหนือกว่าจะเป็นผู้แก้ไขเอง จึงกล่าวได้ว่า UDP เป็นโพรโทคอลที่มีความน่าเชื่อถือต่ำ แต่ก็ส่งข้อมูลได้อย่างรวดเร็ว ต่อไปนี้เป็นรายละเอียดฟิลด์ภายในเฮดเดอร์ของโพรโทคอล UDP
       • Source Port Address คือหมายเลขพอร์ตของฝั่งต้นทาง
       • Destination Port Address คือหมายเลขพอร์ตของฝั่งปลายทาง
       • Total Length คือฟิลด์ที่ใช้กำหนดความกว้างของยูสเซอร์ดาต้าแกรม ซึ่งมีหน่วยเป็นไบต์
       • Checksum คือฟิลด์สำหรับตรวจสอบข้อผิดพลาด โดยใช้ Checksum ขนาด 16 บิต
โพรโทคอล TCP (Transmission Control Protocol)
       TCP เป็นโพรโทคอลแบบคอนเน็กชันโอเรียนเต็ด มีความนำเชื่อถือสูง เพราะจะต้องสถาปนาการเชื่อมต่อกับสถานีปลายทาง (สร้างคอนเน็กชัน) ก่อนการส่งข้อมูลจริง สำหรับการสร้างคอนเน็กซันเพื่อกำหนดเส้นทางการเชื่อมต่อกับสถานีปลายทางนั้น TCP จะสร้างวงจรเสมือน (Virtual Circuit) ระหว่างฝั่งส่งกับฝั่งรับเพื่อให้การรับส่งข้อมูลสามารถดำเนินการได้อย่างต่อเนื่องและมีความคล่องตัว ภายในเซกเมนต์ของโพรโทคอล TCP ประกอบไปด้วยเฮดเดอร์ขนาด 60 - 20 ไบต์ แล้วตามด้วยข้อมูลของโปรแกรมประยุกต์ ทั้งนี้เฮดเดอร์ขนาด 20 ไบต์นั้น จะไม่ได้รวมฟิลด์ Options แต่ถ้าฟิลด์ Options ถูกรวมเข้าไป ก็จะทำให้มีขนาดเป็น 60 ไบต์
       
และต่อไปนี้คือรายละเอียดภายในเฮดเดอร์ของโพรโทคอล TCP
       • Source Port Address คือหมายเลขพอร์ตของฝั่งต้นทาง
       • Destination Port Address คือหมายเลขพอร์ตของฝั่งปลายทาง
       • Sequence Number เนื่องจากข้อมูลมีการแบ่งออกเป็นหลายเชกเมนต์ ดังนั้น หมายเลขลำดับจึงเป็นสิ่งสำคัญ เพื่อให้ฝั่งรับนำไปจัดเรียงข้อมูลให้กลายเป็นชุดข้อมูลหนึ่งๆ ได้เหมือนเดิม
       • Acknowledgment Number เป็นหมายเลขขนาด 32 บิต ใช้สำหรับตอบกลับไปยังฝั่งตันทางเพื่อยืนยันว่าได้รับข้อมูลแล้ว โดยเลขรหัสที่ตอบกลับไป จะระบุหมายเลขลำดับถัดไปของข้อมูลด้วย เพื่อให้ฝั่งตันทางส่งข้อมูลลำดับถัดจากหมายเลขลำดับนั้นมาให้
       • Header Length (HLEN) เป็นฟิลด์ที่ใช้ระบุความกว้างหรือขนาดของเฮดเดอร์ ซึ่งมีขนาด 4 บิต ทำให้สามารถแทนค่าตัวเลขระหว่าง 0 ถึง 15 (เหมือนกับไอพีดาต้าแกรม) และด้วยหน่วยนับมีความยาวเป็น 4 เท่าของไบต์ ดังนั้น เมื่อนำมาคูณด้วย 4 จึงทำให้มีคำสูงสุดเท่ากับ 60 ไบต์ อย่างไรก็ตาม เฮดเดอร์ขนาดเล็กสุดจะมีขนาด 20 ไบต์ ส่วนที่เหลืออีก 40 ไบต์นั้น เป็นส่วนของ Option
       • Reserved เป็นฟิลด์ขนาด 6 บิตที่สงวนไว้เพื่อใช้งานในอนาคต
       • Control เป็นฟิลด์ขนาด 6 บิต โดยแต่ละบิตจะมีหน้าที่เฉพาะและเป็นอิสระกัน ซึ่งประกอบไปด้วย
       • URG (Urgent Pointer Field Significant) เป็นบิตที่ใช้กำหนดว่าข้อมูลนี้จะต้องดำเนินการโดยด่วน เพื่อแจ้งต่อโฮสต์ปลายทางให้หยุดอ่านข้อมูลก่อนหน้านั้นชั่วคราว ด้วยการอ่านข้อมูลเร่งด่วนที่อยู่ภายในเซกเมนต์ส่วนนี้ก่อนที่จะดำเนินกิจกรรมเดิมต่อ
       • CK (Acknowledgment Field Significant) เป็นบิตที่เตรียมไว้สำหรับตรวจสอบหมายเลขรหัส Acknowledgment ซึ่งตามปกติ เมื่อมีการสร้างคอนเน็กชันเพื่อเชื่อมต่อและเริ่มสื่อสาร ก็จะใช้รหัส ACK เพื่อตอบรับหมายเลขลำดับอยู่แล้ว
       • PSH (push Function) เป็นบิตที่ใช้แจ้งโฮสต์ปลายทางว่าให้ส่งข้อมูลต่อไปยังชั้นสื่อสารแอปพลิเคชัน ทันที กล่าวคือ ปกติโฮสต์ปลายทางเมื่อได้รับข้อมูลแล้ว จะนำไปเก็บไว้ในบัฟเฟอร์จนกระทั่งมีปริมาณ พอหมาะจึงส่งไปยังชั้นสื่อสารแอปพลิเคชัน แต่หากมีการเช็ตบิตนี้ โฮสต์ปลายทางก็จะส่งช้อมูลนี้ไปยังชั้นสื่อสาร แอปพลิเคชันทันที ส่งผลต่อความเร็วในการส่งข้อมูล (Throughput) สูงขึ้น
       • RST (Reset the Connection) เป็นบิตที่ใช้สำหรับรีเซตเพื่อตั้งค่าใหม่หรือเพื่อเปิดการเชื่อมต่อรอบใหม่ โดยเฉพาะกรณีเกิดปัญหาในระหว่างการสื่อสารและไม่สามารถดำเนินการต่อไปได้ ตัวอย่างเช่น กรณีพบข้อผิดพลาดจากหมายเลขลำดับในระหว่างการสื่อสาร ก็จะทำการรีเซตเพื่อให้คอนเน็กชันสิ้นสุดลง หลังจากรีเซตแล้วก็จะเปิด คอนเน็กชันรอบใหม่ เป็นต้น
       • SYN (Synchronize The Sequence Numbers) เป็นบิตร้องขอเพื่อประสานการเข้าจังหวะระหว่าง โฮสต์ต้นทางกับปลายทาง ซึ่งขั้นตอนที่สมบูรณ์จะประกอบด้วย
       • FIN (Connection Termination) เป็นบิตที่ใช้สำหรับยุติการเชื่อมต่อ เช่น ในกรณีของโฮสต์ทั้ง สองฝั่งได้การสื่อสารกันเป็นที่เรียบร้อยแล้ว และต้องการยุติการเชื่อมต่อ ซึ่งขั้นตอนที่สมบูรณ์จะ ประกอบด้วย Disconnect Request → Disconnect Confirmation → ACK of Disconnect Confirmation
       • Window size เป็นฟิลด์ขนาด 16 บิตที่โฮสต์ปลายทางใช้กำหนดขนาดหน้าต่าง ใช้สำหรับการเลื่อน หน้าต่าง (Sliding-Window)
       • Checksum เป็นฟิลด์ขนาด 16 บิตใช้สำหรับตรวจสอบข้อผิดพลาด
       • Urgent pointer เป็นฟิลด์พอยเตอร์เพื่อชี้ไปยังตำแหน่งสุดท้ายของข้อมูลที่ต้องการส่งอย่างเร่งด่วน (จะถูกใช้งานในกรณีที่มีการเซ็ตค่าบิต URG ในฟิลด์ Control)
       • Options and Pading เป็นส่วนเหลือของ TCP เฮดเดอร์ที่กำหนดไว้เพิ่มเติมเป็นออปชัน เช่น ใช้เพิ่มขนาดด้วยการปะต่อเข้ากับข้อมูลจริง เพื่อให้มีขนาดตามที่ต้องการหรือให้มีความยาวเพียงพอกับวัตถุประสงค์การใช้งาน
โพรโทคอล SCTP (Stream Control Transmission Protocol)
       SCTP เป็นโพรโทคอลตัวใหม่บนชั้นสื่อสารทรานสปอตที่มีความน่าเชื่อถือ ถูกออกแบบมาเพื่อใช้งานกับแอปพลิเคชันบนอินเทอร์เน็ต ซึ่งมีความทันสมัยกว่า TCP โดยรายละเอียดต่อไปนี้จะเปรียบเทียบระหว่างโพรโทคอล ซึ่งประกอบด้วย UDP TCP และ SCTP
       UDP เป็นโพรโทคอลแบบคอนเน็กชันเลส ที่ไม่มีการสร้างคอนเน็กชันกับปลายทาง การส่งผ่านข้อมูลจะเป็นแบบเมสเสจโอเรียนเต็ด โดยกระบวนการส่งมอบข่าวสารไปยัง UDP จะมีการเอ็นแคปซูเลตอยู่ภายในยูสเซอร์ดาต้าแกรมและส่งผ่านไปยังเครือข่าย ข้อสำคัญ UDP ก็คือ เป็นโพรโทคอลที่มีความน่าเชื่อถือต่ำ กล่าวคือข่าวสารที่ส่งไปอาจสูญหายหรือซ้ำซ้อนได้ รวมถึงไม่มีการจัดลำดับหมายเลขขอ
       TCP เป็นโพรโทคอลแบบคอนเน็กชันโอเรียนต็ด ที่จะสร้างคอนเน็กชันกับปลายทางก่อนการส่งข้อมูลจริง ในการส่งผ่านข้อมูลจะเป็นแบบไบต์โอเรียนเต็ด (Byte-Oriented) สำหรับข่าวสารที่จัดส่งไปจะเป็นแบบสตรีมของไบต์ที่ส่งไปในรูปแบบของเซกเมนต์ โพรโทคอล TCP มีความน่าเชื่อถือ หากเซกเมนต์ที่ส่งไปสูญหาย ก็จะส่งซ้ำไปให้ใหม่ อีกทั้งยังมีกระบวนการตรวจสอบเซกเมนต์ที่ซ้ำซ้อน และไบต์ที่ส่งไปยังปลายทางจะมีการจัดลำดับหมายเลข รวมถึงยังมีกลไกการควบคุมการไหลของข้อมูล และการควบคุมข้อผิดพลาด
       SCTP เป็นโพรโทคอลที่นำข้อดีของ UDP และ TCP มาใช้ และยังผนวกคุณสมบัติเฉพาะตัวเพิ่มเติม เข้าไป SCTP เป็นโพรโทคอลแบบคอนเน็กชันโอเรียนเต็ดเหมือนกับ TCP ที่มีความน่าเชื่อถือสูง แต่การส่งผ่าน ข้อมูลจะเป็นแบบเมสเสจโอเรียนเต็ด โดยข้อมูลจะถูกแบ่งออกเป็นชุดข้อมูลหลายๆ ชุดที่เรียกว่า Chunk เพื่อ สนับสนุนการส่งข้อมูลแบบ Multistream ดังรูปที่ 11.11 (TCP จะเป็นแบบ Singlestream) สำหรับแนวคิดของ Multistream นั้น เปรียบเสมือนกับช่องทางการจราจรบนท้องถนน ที่แต่ละเลนสามารถใช้จราจรของตนเองได้ กล่าวคือ ข้อมูลจะถูกขนส่งแยกกันในแต่ละ Chuk ดังนั้น โพรโทคอล SCTP จึงเหมาะกับระบบงานแบบเรียลไทม์ โดยเฉพาะระบบออดิโอและวิดีโอ
       
       นอกเหนือจกคุณสมบัติของ Multistream แล้ว SCTP ยังสนับสนุนคุณสมบัติการเชื่อมต่อหลายผู้ให้บริการ (Multi-Homing) โดยพิจารณาจากรูปที่ 11.12 ที่เครื่องไคลเอนต์หนึ่งเครื่องได้เชื่อมต่อแลนสองเครือข่ายด้วยสองหมายเลขไอพี (Multiple IP Address) และฝั่งเซิฟเวอร์ก็เช่นกัน ที่มีการเชื่อมต่อทั้งสองเครือข่ายด้วยหมายเลขไอพีสองเบอร์บนเครื่องเดียว ซึ่งถือเป็นระบบรองรับความทนทานต่อความผิดพลาด (Fault-Tolerant) กล่าวคือ หากมีเส้นทางสื่อสารเส้นหนึ่งเกิดล้มเหลว อินเตอร์เฟซอีกเส้นหนึ่งก็สามารถมาใช้เพื่อการส่งผ่านข้อมูล ได้โดยปราศจากการอินเตอร์รัปต์ อีกทั้งยังช่วยป้องกันปัญหาในกรณีของ Single Point of Failure ได้เป็นอย่างดี