พื้นฐาน Network - TCP & UDP

กลับไปหน้า Network
🚨 เพื่อการเรียนรู้ที่เข้าใจแบบสูงสุด ควรเรียนรู้ควบคู่ไปกับคลิปวิดีโอในยูทูปที่ผมทำเอาไว้
https://youtu.be/lN3qPN3K2m4?si=8BKj-n6Kr-gOQM7E

TCP และ UDP


ข้อความ 10% มาจาก AI และอีก 90% เขียนออกมาจากใจผมล้วนๆ ผมจะไม่เน้นใช้ AI เขียนให้เพราะมันสื่อสารไม่ตรงใจผมเท่าไหร่

TCP กับ UDP คือโปรโตคอลที่ใช้ในการส่งข้อมูลใน Internet โดยที่ TCP จะเน้นความถูกต้องสมบูรณ์ของข้อมูล แต่จะช้ากว่า UDP

ส่วน UDP จะเน้นความรวดเร็ว แต่ความถูกต้องสมบูรณ์จะสู้ TCP ไม่ได้

TCP Protocol


มันจะมีอยู่ 3 ช่วงหลักๆก็คือ

1. ช่วงเริ่มการเชื่อมต่อ

2. ช่วงส่งข้อมูล

3. ช่วงปิดการเชื่อมต่อ

ช่วงเริ่มการเชื่อมต่อ

ก่อนอื่นให้คุณเข้าใจสัญญาณที่อุปกรณ์มันจะส่งหากันในกรณีนี้ก่อน

1. SYN ความหมายง่ายๆมันคือการขอเริ่มการเชื่อมต่อ

2. ACK ความหมายง่ายๆมันคือการบอกว่าได้รับข้อมูลก่อนหน้าเรียบร้อยแล้ว

ทีนี้ กระบวนการในการเริ่มการเชื่อมต่อมันจะเรียกว่า 3-way Handshake ซึ่งมี 3 ขั้นตอนดังภาพ

TCP 3-way Handshake

1. SYN คือเครื่องต้นทางส่ง SYN ไปขอเริ่มการเชื่อมต่อ

2. SYN+ACK คือเครื่องปลายทางตอบกลับไป เป็นการขอการเชื่อมต่อกลับเพื่อให้การเชื่อมต่อสมบูรณ์ พร้อมกับบอกไปด้วยว่าได้รับ SYN ก่อนหน้าเรียบร้อยแล้ว

3. ACK เครื่องต้นทางส่ง ACK กลับไปอีกครั้งเพื่อสื่อว่าได้รับ SYN จากเครื่องปลายทางแล้ว

เพียงเท่านี้การเชื่อมต่อก็เสร็จสมบูรณ์และพร้อมส่งข้อมูลแล้ว


ช่วงส่งข้อมูล

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


ช่วงปิดการเชื่อมต่อ

ก่อนหน้านี้ผมได้บอกความหมายของ SYN กับ ACK ไปแล้ว แต่ในขั้นตอนนี้มันจะมีสัญญาณเพิ่มมาอีกอันนึงก็คือ FIN

ซึ่ง FIN มันก็ย่อมาจากคำว่า FINISH นั่นแหละ มันเป็นสัญญาณที่ส่งไปเพื่อบอกว่าเสร็จแล้ว และขอปิดการเชื่อมต่อ มันก็จะได้ว่า

1. SYN ความหมายง่ายๆมันคือการขอเริ่มการเชื่อมต่อ

2. ACK ความหมายง่ายๆมันคือการบอกว่าได้รับข้อมูลก่อนหน้าเรียบร้อยแล้ว

3. FIN ความหมายง่ายๆคือมันเป็นการบอกว่าเสร็จแล้ว และขอปิดการเชื่อมต่อ

ซึ่งในขั้นตอนนี้มันจะเรียกว่า 4-way Handshake ซึ่งมี 4 ขั้นตอนดังภาพ

TCP 4-way Handshake

1. FIN เครื่องต้นทางส่ง FIN ไปเพื่อบอกว่าเสร็จแล้ว และขอปิดการเชื่อมต่อ

2. ACK เครื่องปลายทางส่ง ACK กลับคืนมาเพื่อสื่อว่าได้รับ FIN ก่อนหน้าเรียบร้อยแล้ว

3. FIN เครื่องปลายทางอาจจะมีอะไรบางอย่างที่มันยังทำไม่เสร็จ มันก็จะยังไม่ส่ง FIN มาจนกว่าจะทำเสร็จ แต่ถ้าเสร็จแล้วมันก็จะส่ง FIN กลับมา

4. ACK เครื่องต้นทางส่ง ACK กลับไปเพื่อบอกว่าได้รับ FIN ก่อนหน้าเรียบร้อยแล้ว

UDP Protocol


UDP มันไม่มีสถานะการเชื่อมต่ออะไรทั้งนั้น ไม่สนความถูกต้องสมบูรณ์ ขอแค่ส่งได้ให้มันจบๆไป ซึ่งข้อดีคือมันเร็ว แต่ความถูกต้องสมบูรณ์จะสู้ TCP ไม่ได้

ปิดท้าย


ในการใช้งานจริงๆเนี่ย TCP ก็จะเอาไปใช้กับการเชื่อมต่อที่ต้องการความถูกต้องสมบูรณ์ เช่น การโหลดไฟล์อะไรต่างๆ ส่วน UDP เนี่ย จะเอาไปใช้กับการเชื่อมต่อที่ต้องการความรวดเร็ว แต่ไม่จำเป็นต้องสมบูรณ์ก็ได้ เช่น การเล่นเกมออนไลน์

ใครที่เคยเล่นพวก RoV, PUBG, Free Fire หรือเกมออนไลน์อื่นๆ คุณก็อาจจะรู้สึกว่ามันมีบางช่วงที่เน็ตมันกระตุก ตัวละครมันวาร์ปได้ นั่นแหละคือการเชื่อมต่อแบบ UDP เพราะการเชื่อมต่อมันไม่สมบูรณ์ แต่นั่นก็ไม่ใช่ปัญหา เพราะสุดท้ายมันก็เล่นได้ดีแล้วก็เล่นได้เร็วถ้าเน็ตแรงพอ