บทที่ 1 พื้นฐานการสื่อสารข้อมูลสำหรับการโปรแกรมเครือข่าย

(Network Programming Fundamentals)

วัตถุประสงค์การเรียนรู้

1) อธิบายหลักการสื่อสารข้อมูลในระบบเครือข่ายได้

2) อธิบายสถาปัตยกรรม Client-Server และ Peer-to-Peer ได้

3) อธิบายการทำงานของ Socket ได้

4) อธิบายความสัมพันธ์ของ IP Address และ Port Number ได้

5) วิเคราะห์เส้นทางการสื่อสารของข้อมูลในเครือข่ายได้

6) ใช้โปรแกรม Wireshark วิเคราะห์แพ็กเก็ตเบื้องต้นได้

1.1 ภาพรวมของ Network Programming

โปรแกรมเครือข่าย คือ การพัฒนาโปรแกรมที่สามารถรับส่งข้อมูลระหว่างอุปกรณ์ตั้งแต่สองเครื่องขึ้นไปผ่านเครือข่ายคอมพิวเตอร์

ในปัจจุบัน ระบบสื่อสารผ่านเครือข่ายคอมพิวเตอร์ได้เข้ามามีบทบาทสำคัญในชีวิตประจำวันและภาคอุตสาหกรรมอย่างกว้างขวาง ไม่ว่าจะเป็นการใช้งานอินเทอร์เน็ต การสื่อสารผ่านแอปพลิเคชันบนสมาร์ตโฟน การควบคุมอุปกรณ์อัจฉริยะ (Internet of Things: IoT) ระบบอัตโนมัติในโรงงาน (Industrial Automation) ระบบโทรคมนาคม ระบบคลาวด์คอมพิวติ้ง (Cloud Computing) ตลอดจนระบบควบคุมระยะไกล (Remote Monitoring and Control) ล้วนต้องอาศัยการรับส่งข้อมูลผ่านเครือข่ายทั้งสิ้น

การทำงานของระบบดังกล่าวไม่ได้เกิดขึ้นจากอุปกรณ์เครือข่ายเพียงอย่างเดียว แต่ต้องอาศัย โปรแกรมประยุกต์ (Application Program) ที่สามารถติดต่อสื่อสารกันผ่านเครือข่ายได้ ดังนั้น การพัฒนาโปรแกรมที่สามารถรับส่งข้อมูลผ่านเครือข่ายจึงเป็นทักษะสำคัญของวิศวกรโทรคมนาคมในยุคปัจจุบัน

การโปรแกรมเครือข่าย (Network Programming) หมายถึง กระบวนการออกแบบและพัฒนาโปรแกรมที่สามารถแลกเปลี่ยนข้อมูลระหว่างอุปกรณ์ตั้งแต่สองเครื่องขึ้นไปผ่านเครือข่ายคอมพิวเตอร์ โดยอาศัยมาตรฐานการสื่อสาร (Communication Protocol) และส่วนติดต่อการเขียนโปรแกรมเครือข่าย (Socket API) เพื่อให้โปรแกรมสามารถสร้างการเชื่อมต่อ ส่งข้อมูล รับข้อมูล และยุติการสื่อสารได้อย่างถูกต้อง

ความสำคัญของการโปรแกรมเครือข่าย

ในอดีต โปรแกรมส่วนใหญ่ทำงานภายในเครื่องคอมพิวเตอร์เพียงเครื่องเดียว (Standalone Application) เช่น โปรแกรมคำนวณ โปรแกรมพิมพ์เอกสาร หรือโปรแกรมฐานข้อมูลภายในเครื่อง อย่างไรก็ตาม เมื่อมีการเชื่อมโยงเครือข่ายอินเทอร์เน็ต โปรแกรมในปัจจุบันจึงต้องสามารถติดต่อกับเครื่องคอมพิวเตอร์อื่นเพื่อแลกเปลี่ยนข้อมูลแบบเรียลไทม์

ตัวอย่างเช่น

- เว็บเบราว์เซอร์ส่งคำขอไปยังเว็บเซิร์ฟเวอร์เพื่อแสดงหน้าเว็บไซต์

- แอปพลิเคชันสนทนาแลกเปลี่ยนข้อความกับเซิร์ฟเวอร์และผู้ใช้อื่น

- ระบบ Mobile Banking ติดต่อกับเซิร์ฟเวอร์ของธนาคารเพื่อดำเนินธุรกรรม

- กล้องวงจรปิดส่งภาพผ่านเครือข่ายไปยังศูนย์ควบคุม

- เซนเซอร์ IoT ส่งข้อมูลไปยังระบบ Cloud เพื่อวิเคราะห์และแสดงผล

จะเห็นได้ว่าทุกระบบที่กล่าวมาล้วนต้องอาศัยการโปรแกรมเครือข่ายในการรับส่งข้อมูล

ตัวอย่างการประยุกต์ใช้การโปรแกรมเครือข่ายในงานวิศวกรรมโทรคมนาคม

สำหรับวิศวกรโทรคมนาคม การโปรแกรมเครือข่ายมีบทบาทสำคัญในงานด้านต่าง ๆ เช่น

1.การพัฒนาระบบ Internet of Things (IoT) เพื่อเชื่อมโยงเซนเซอร์และอุปกรณ์อัจฉริยะเข้ากับระบบเครือข่าย

2.การพัฒนาระบบควบคุมและตรวจสอบระยะไกล (Remote Monitoring and Control)

3.การพัฒนาระบบ Smart Building และ Smart Factory

4.การสื่อสารข้อมูลระหว่างอุปกรณ์เครือข่าย เช่น Router, Gateway และ Edge Device

5.การจัดเก็บและวิเคราะห์ข้อมูลจากอุปกรณ์โทรคมนาคมบน Cloud Server

6.การพัฒนาระบบสื่อสารแบบเรียลไทม์ เช่น Voice over IP (VoIP), Video Streaming และระบบประชุมทางไกล

องค์ประกอบของการโปรแกรมเครือข่าย

โดยทั่วไป การโปรแกรมเครือข่ายประกอบด้วยองค์ประกอบสำคัญ 4 ส่วน ได้แก่



ตัวอย่างการทำงานของระบบ

ระบบตรวจวัดอุณหภูมิในอาคาร ซึ่งประกอบด้วย ESP32 ทำหน้าที่อ่านค่าจากเซนเซอร์ แล้วส่งข้อมูลผ่านเครือข่าย Wi-Fi ไปยังเซิร์ฟเวอร์ เพื่อจัดเก็บในฐานข้อมูลและแสดงผลบนหน้าเว็บ

ตัวอย่างนี้ ESP32 ทำหน้าที่เป็น Client ที่ส่งข้อมูล ส่วนเซิร์ฟเวอร์ทำหน้าที่รับข้อมูล ประมวลผล และให้บริการแก่ผู้ใช้งานผ่าน Web Dashboard การสื่อสารทั้งหมดเกิดขึ้นได้จากการเขียนโปรแกรมเครือข่ายทั้งฝั่งอุปกรณ์และฝั่งเซิร์ฟเวอร์

การโปรแกรมเครือข่ายเป็นพื้นฐานสำคัญสำหรับการพัฒนาระบบสื่อสารในยุคดิจิทัล โดยเฉพาะในงานด้านวิศวกรรมโทรคมนาคม ซึ่งต้องอาศัยการรับส่งข้อมูลระหว่างอุปกรณ์จำนวนมากผ่านเครือข่าย โปรแกรมเครือข่ายทุกประเภท ไม่ว่าจะเป็นระบบ IoT, ระบบควบคุมอัตโนมัติ, ระบบสื่อสารแบบเรียลไทม์ หรือระบบคลาวด์ ล้วนทำงานบนหลักการเดียวกัน คือ การใช้โปรแกรมประยุกต์ติดต่อสื่อสารผ่าน Socket API และโปรโตคอลเครือข่าย เช่น TCP หรือ UDP

1.2 องค์ประกอบของการสื่อสารข้อมูล (Components of Data Communication)

การสื่อสารข้อมูล (Data Communication) คือ กระบวนการแลกเปลี่ยนข้อมูลระหว่างอุปกรณ์ตั้งแต่สองเครื่องขึ้นไปผ่านสื่อกลางในการสื่อสาร โดยอาศัยกฎเกณฑ์หรือโปรโตคอล (Protocol) เพื่อให้ข้อมูลถูกส่งถึงปลายทางได้อย่างถูกต้อง ครบถ้วน และทันเวลา

ในงานด้านการโปรแกรมเครือข่าย นักพัฒนาไม่ได้เพียงเขียนโปรแกรมให้ส่งข้อมูลเท่านั้น แต่ยังต้องเข้าใจองค์ประกอบของการสื่อสารข้อมูล เนื่องจากแต่ละองค์ประกอบมีผลต่อประสิทธิภาพ ความน่าเชื่อถือ และความปลอดภัยของระบบ

โดยทั่วไป การสื่อสารข้อมูลประกอบด้วยองค์ประกอบสำคัญ 5 ส่วน ได้แก่

1. ผู้ส่งข้อมูล (Sender)

2. ผู้รับข้อมูล (Receiver)

3. ข้อมูล (Message)

4. สื่อกลางในการสื่อสาร (Transmission Medium)

5. โปรโตคอล (Protocol)

1.2.1 ผู้ส่งข้อมูล (Sender)

ผู้ส่งข้อมูล (Sender) คือ อุปกรณ์หรือโปรแกรมที่ทำหน้าที่สร้างหรือส่งข้อมูลไปยังปลายทาง อาจเป็นคอมพิวเตอร์ โทรศัพท์มือถือ เซนเซอร์ ไมโครคอนโทรลเลอร์ หรืออุปกรณ์เครือข่ายอื่น ๆ

ตัวอย่างผู้ส่งข้อมูล ได้แก่

- คอมพิวเตอร์ที่ส่งคำขอไปยังเว็บไซต์

- โทรศัพท์มือถือที่ส่งข้อความผ่านแอปพลิเคชันสนทนา

- ESP32 ที่ส่งข้อมูลอุณหภูมิไปยังเซิร์ฟเวอร์

- กล้อง IP Camera ที่ส่งภาพวิดีโอไปยังระบบบันทึกภาพ

ในเชิงการโปรแกรม ผู้ส่งข้อมูลมักทำหน้าที่เป็น Client ซึ่งเป็นโปรแกรมที่เริ่มต้นการเชื่อมต่อกับระบบ

1.2.2 ผู้รับข้อมูล (Receiver)

ผู้รับข้อมูล (Receiver) คือ อุปกรณ์หรือโปรแกรมที่ทำหน้าที่รับข้อมูลจากผู้ส่ง เพื่อนำไปประมวลผล จัดเก็บ หรือแสดงผล

ตัวอย่างผู้รับข้อมูล ได้แก่

- Web Server

- Database Server

- Cloud Server

- MQTT Broker

- โปรแกรม Dashboard

- ระบบควบคุมอัตโนมัติ

ผู้รับข้อมูลมักทำหน้าที่เป็น Server ซึ่งรอรับการเชื่อมต่อจาก Client และตอบสนองต่อคำขอที่ได้รับ

1.2.3 ข้อมูล (Message)

ข้อมูล (Message) คือ สิ่งที่ถูกส่งผ่านเครือข่าย ซึ่งอาจอยู่ในรูปแบบต่าง ๆ เช่น

- ตัวอักษร (Text)

- ตัวเลข (Numeric Data)

- รูปภาพ (Image)

- เสียง (Audio)

- วิดีโอ (Video)

- ไฟล์ (File)

- ข้อมูลจากเซนเซอร์ (Sensor Data)

- คำสั่งควบคุม (Control Command)

ตัวอย่างข้อมูลที่พบในระบบ IoT

1.2.4 สื่อกลางในการสื่อสาร (Transmission Medium)

สื่อกลางในการสื่อสาร คือ ช่องทางที่ใช้ส่งข้อมูลจากผู้ส่งไปยังผู้รับ แบ่งออกเป็น 2 ประเภท ได้แก่

1) สื่อกลางแบบมีสาย (Guided Media)

ได้แก่

- สายคู่บิดเกลียว (UTP)

- สายโคแอกเชียล

- ใยแก้วนำแสง (Optical Fiber)

ข้อดี

- ความเร็วสูง

- มีสัญญาณรบกวนน้อย

- มีความเสถียรสูง

ข้อเสีย

- ต้องเดินสาย

- เคลื่อนย้ายลำบาก

2) สื่อกลางแบบไร้สาย (Unguided Media)

ได้แก่

- Wi-Fi

- Bluetooth

- ZigBee

- LoRa

- NB-IoT

- 4G LTE

- 5G

ข้อดี

-ติดตั้งง่าย

-รองรับการเคลื่อนที่

-รองรับการเคลื่อนที่

ข้อเสีย

- รองรับการเคลื่อนที่

- ความเร็วและระยะทางขึ้นกับเทคโนโลยีที่ใช้

1.2.5 โปรโตคอล (Protocol)

โปรโตคอล คือ ข้อตกลงหรือกฎเกณฑ์ที่กำหนดรูปแบบและวิธีการแลกเปลี่ยนข้อมูลระหว่างอุปกรณ์ เพื่อให้สามารถสื่อสารกันได้อย่างถูกต้อง

หากไม่มีโปรโตคอล แม้ผู้ส่งและผู้รับจะเชื่อมต่อกันได้ ก็จะไม่สามารถตีความข้อมูลที่แลกเปลี่ยนกันได้

ตัวอย่างโปรโตคอลที่ใช้บ่อย ได้แก่

สำหรับวิศวกรรมโทรคมนาคม การเลือกใช้โปรโตคอลที่เหมาะสมมีผลโดยตรงต่อประสิทธิภาพของระบบ ตัวอย่างเช่น ระบบตรวจวัดเซนเซอร์มักเลือกใช้ MQTT เนื่องจากใช้แบนด์วิดท์ต่ำ ส่วนการสื่อสารผ่านเว็บใช้ HTTP หรือ HTTPS และการสตรีมเสียงหรือวิดีโอแบบเรียลไทม์อาจเลือกใช้ UDP เพื่อลดความหน่วง

ระบบตรวจวัดอุณหภูมิภายในอาคาร ซึ่งประกอบด้วย ESP32 เซนเซอร์อุณหภูมิ และเซิร์ฟเวอร์ ดังแสดงในรูป

องค์ประกอบของระบบสามารถอธิบายได้ดังนี้

- ผู้ส่งข้อมูล (Sender): ESP32

- ผู้รับข้อมูล (Receiver): MQTT Broker และ Web Dashboard

- ข้อมูล (Message): ค่าอุณหภูมิและความชื้น

- สื่อกลาง (Transmission Medium): เครือข่าย Wi-Fi

- โปรโตคอล (Protocol): MQTT

ตัวอย่างนี้แสดงให้เห็นว่า แม้ระบบจะมีองค์ประกอบหลายส่วน แต่การสื่อสารข้อมูลยังคงอาศัยหลักการพื้นฐานเดียวกัน คือ ผู้ส่งสร้างข้อมูล ส่งผ่านสื่อกลาง โดยใช้โปรโตคอลที่ทั้งสองฝ่ายเข้าใจตรงกัน จนกระทั่งข้อมูลถึงผู้รับและสามารถนำไปใช้งานได้

1.3 สถาปัตยกรรมแบบไคลเอนต์–เซิร์ฟเวอร์ (Client–Server Architecture)

สถาปัตยกรรมแบบไคลเอนต์–เซิร์ฟเวอร์ (Client–Server Architecture) เป็นรูปแบบการสื่อสารที่ได้รับความนิยมมากที่สุดในระบบเครือข่ายคอมพิวเตอร์และระบบโทรคมนาคมในปัจจุบัน โดยมีหลักการสำคัญคือ การแบ่งบทบาทของโปรแกรมออกเป็นสองส่วน ได้แก่ ไคลเอนต์ (Client) และเซิร์ฟเวอร์ (Server) ซึ่งทำงานร่วมกันผ่านเครือข่ายโดยใช้โปรโตคอลมาตรฐาน เช่น TCP/IP, HTTP หรือ MQTT

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

1.3.1 ความหมายของ Client

Client คือ โปรแกรมหรืออุปกรณ์ที่เริ่มต้นการสื่อสาร โดยทำหน้าที่ส่งคำขอ (Request) ไปยังเซิร์ฟเวอร์ เพื่อขอใช้บริการหรือขอข้อมูล

Client ไม่จำเป็นต้องเป็นเครื่องคอมพิวเตอร์เสมอไป แต่สามารถเป็นอุปกรณ์ทุกชนิดที่เชื่อมต่อเครือข่ายได้ เช่น

- คอมพิวเตอร์ส่วนบุคคล

- โทรศัพท์มือถือ

- แท็บเล็ต

- ESP32

- Raspberry Pi

- PLC ที่เชื่อมต่อ Ethernet

- Smart Meter

- กล้อง IP Camera

ตัวอย่างเช่น เมื่อผู้ใช้เปิดเว็บเบราว์เซอร์และพิมพ์ URL ของเว็บไซต์ เว็บเบราว์เซอร์จะทำหน้าที่เป็น Client ส่งคำขอไปยัง Web Server เพื่อขอข้อมูลหน้าเว็บ

1.3.2 ความหมายของ Server

Server คือ โปรแกรมหรืออุปกรณ์ที่ทำหน้าที่รอรับการเชื่อมต่อจาก Client ให้บริการข้อมูล ประมวลผลคำขอ และส่งผลลัพธ์กลับไปยัง Client

โดยทั่วไป Server จะทำงานตลอดเวลา (Always-On Service) และสามารถรองรับ Client ได้หลายรายพร้อมกัน

ตัวอย่างของ Server ได้แก่

- Web Server

- Database Server

- File Server

- Mail Server

- DNS Server

- MQTT Broker

- Video Streaming Server

1.3.3 หลักการทำงานของ Client–Server

การสื่อสารระหว่าง Client และ Server มีลำดับขั้นตอนโดยทั่วไปดังนี้

1. Server เปิดโปรแกรมและรอรับการเชื่อมต่อ (Listening)

2. Client สร้างการเชื่อมต่อไปยัง Server

3. Client ส่งคำขอ (Request)

4. Server ประมวลผลคำขอ

5. Server ส่งผลลัพธ์กลับ (Response)

6. Client รับข้อมูลและแสดงผล หรือประมวลผลต่อ

สามารถแสดงลำดับการทำงานได้ดังนี้

การสื่อสารทั้งหมดนี้อาศัยโปรโตคอล เช่น TCP และ HTTP เพื่อให้ทั้งสองฝ่ายเข้าใจรูปแบบของข้อมูลที่รับส่งกัน

1.3.4 ข้อดีของสถาปัตยกรรม Client–Server

1. การบริหารจัดการแบบรวมศูนย์ ข้อมูลและบริการสามารถจัดการจากเซิร์ฟเวอร์เพียงแห่งเดียว

2. รองรับผู้ใช้งานจำนวนมาก เซิร์ฟเวอร์สามารถให้บริการแก่ Client หลายเครื่องพร้อมกัน

3. การบำรุงรักษาง่าย การอัปเดตซอฟต์แวร์ทำที่เซิร์ฟเวอร์เพียงจุดเดียว

4. มีความปลอดภัยสูงกว่า สามารถกำหนดสิทธิ์การเข้าถึงและตรวจสอบผู้ใช้งานได้

5. ขยายระบบได้ง่าย สามารถเพิ่มจำนวน Client ได้โดยไม่ต้องแก้ไขโครงสร้างหลักของระบบ

1.3.5 ข้อจำกัดของสถาปัตยกรรม Client–Server

แม้ว่าสถาปัตยกรรมแบบ Client–Server จะได้รับความนิยม แต่ก็มีข้อจำกัดบางประการ เช่น

- หากเซิร์ฟเวอร์หยุดทำงาน ผู้ใช้ทั้งหมดจะไม่สามารถใช้บริการได้

- เซิร์ฟเวอร์ต้องมีประสิทธิภาพเพียงพอสำหรับรองรับผู้ใช้งานจำนวนมาก

- ต้องมีการสำรองข้อมูลและระบบสำรอง (Backup และ Redundancy)

- ค่าใช้จ่ายในการติดตั้งและดูแลเซิร์ฟเวอร์อาจสูงกว่าระบบขนาดเล็ก

ตัวอย่างการประยุกต์ใช้ในงานวิศวกรรมโทรคมนาคม

สถาปัตยกรรมแบบ Client–Server ถูกนำมาใช้ในระบบโทรคมนาคมและเครือข่ายหลายประเภท เช่น

- ระบบควบคุมสถานีฐานโทรศัพท์เคลื่อนที่

- ระบบบริหารจัดการอุปกรณ์เครือข่าย (Network Management System: NMS)

- ระบบตรวจสอบคุณภาพสัญญาณและประสิทธิภาพเครือข่าย

- ระบบ Smart Grid และ Smart Meter

- ระบบ SCADA ในงานอุตสาหกรรม

- ระบบตรวจวัดสภาพแวดล้อมด้วยเซนเซอร์ IoT

- ระบบกล้องวงจรปิดผ่านเครือข่าย (IP Camera)

ในระบบเหล่านี้ อุปกรณ์ปลายทางจะทำหน้าที่เป็น Client ส่งข้อมูลไปยังศูนย์กลาง ขณะที่เซิร์ฟเวอร์ทำหน้าที่จัดเก็บ ประมวลผล และให้บริการข้อมูลแก่ผู้ใช้งาน

1.12 เครื่องมือสำหรับ Network Programming

1.13 การวิเคราะห์ Packet ด้วย Wireshark

การวิเคราะห์ Packet ด้วย Wireshark (Packet Analysis Using Wireshark)

การสื่อสารข้อมูลผ่านเครือข่ายเกิดขึ้นในรูปของ แพ็กเก็ต (Packet) ซึ่งเป็นหน่วยข้อมูลที่ถูกสร้างขึ้นตามมาตรฐานของโปรโตคอลเครือข่าย แต่ละแพ็กเก็ตจะประกอบด้วยข้อมูลส่วนควบคุม (Header) และข้อมูลของผู้ใช้งาน (Payload) ก่อนถูกส่งผ่านเครือข่ายไปยังปลายทาง

สำหรับผู้พัฒนาระบบเครือข่ายและวิศวกรโทรคมนาคม การเข้าใจลักษณะของแพ็กเก็ตที่รับส่งบนเครือข่ายมีความสำคัญอย่างยิ่ง เนื่องจากสามารถใช้ในการวิเคราะห์การทำงานของโปรโตคอล ตรวจสอบข้อผิดพลาด วิเคราะห์ปัญหาการเชื่อมต่อ และประเมินประสิทธิภาพของระบบได้

Wireshark เป็นโปรแกรมวิเคราะห์แพ็กเก็ต (Network Protocol Analyzer) ที่ได้รับความนิยมอย่างแพร่หลาย สามารถดักจับ (Capture) และแสดงรายละเอียดของแพ็กเก็ตที่รับส่งผ่านเครือข่ายแบบเรียลไทม์ รองรับโปรโตคอลมากกว่าหลายพันชนิด เช่น Ethernet, IPv4, IPv6, TCP, UDP, HTTP, HTTPS, DNS, DHCP, FTP, MQTT และโปรโตคอลด้านอุตสาหกรรมอีกจำนวนมาก

ด้วยความสามารถดังกล่าว Wireshark จึงเป็นเครื่องมือพื้นฐานที่วิศวกรเครือข่าย นักพัฒนาระบบ IoT และผู้ดูแลระบบนิยมใช้ในการตรวจสอบและแก้ไขปัญหาเครือข่าย

หัวข้อ