พื้นฐาน Network - Port และ Port forwarding
← กลับไปหน้า Networkhttps://youtu.be/hH_w1OKcmqQ?si=lTD78vLC-U3xvCME
ปัญหาของ NAT
ข้อความ 10% มาจาก AI และอีก 90% เขียนออกมาจากใจผมล้วนๆ ผมจะไม่เน้นใช้ AI เขียนให้เพราะมันสื่อสารไม่ตรงใจผมเท่าไหร่
อย่างที่ได้บอกไปว่า NAT มันใช้ IP ตัวเองในการออกอินเทอร์เน็ตแทนเครื่องในวงแลน มันหมายความว่าอุปกรณ์อื่นๆในอินเทอร์เน็ต จะเห็นแค่ IP ของ NAT แต่จะไม่เห็นว่าอุปกรณ์ที่อยู่หลัง NAT มีอะไรบ้าง ซึ่งก็จะมีแค่ NAT เท่านั้นที่เห็นอุปกรณ์ในวงแลนของมัน
มันเลยมีปัญหาเกิดขึ้นว่า อุปกรณ์ใน NAT สามารถติดต่อโลกภายนอกได้ แต่อุปกรณ์ภายนอกจะติดต่อเข้ามาหาภายในเนี่ย ดันทำไม่ได้
มันเลยต้องมีการทำ Port forwarding เพื่อให้อุปกรณ์ภายนอกติดต่อเข้ามาหาภายในได้ แต่ก่อนอื่น คุณต้องเข้าใจคำว่า Port ก่อน
Port คืออะไร
ก่อนอื่น คุณต้องเข้าใจเรื่อง Port เนี่ย คุณต้องเข้าใจคำว่า Session ก่อน
Session
มันก็คือสถานะการเชื่อมต่อต่างๆ อย่างเช่น การโหลดไฟล์, การโหลดหนัง, การล็อกอินอะไรต่างๆ ก็แยกกันไปเป็นแต่ละ session
Port (พอร์ต)
ในที่นี้ไม่ใช่ช่องเอาไว้เสียบสายแลนนะ อย่าเข้าใจผิด แต่มันคือพอร์ตที่ระบบคอมพิวเตอร์มันกำหนดขึ้นมาเอง เพื่อใช้ในการแยก session ต่างๆ
เพื่อให้เห็นภาพง่ายๆ คุณมาดูภาพด้านล่างนี้

คุณจะเห็นได้ว่า เครื่อง A จะโหลดไฟล์อะไรบางอย่างผ่านอินเทอร์เน็ตโดยการผ่าน NAT โดยที่ NAT มันก็จะจองพอร์ตอะไรสักอย่างเอาไว้ ซึ่งพอร์ตที่ระบบมันรองรับเนี่ยจะมีทั้งหมด 0-65535 แต่พอร์ตที่จะสุ่มเพื่อจองขึ้นมา จะอยู่ในช่วง 49152 – 65535
สมมติว่ามันจองไว้ที่พอร์ต 50000 สำหรับเครื่อง A พอเวลาเครื่อง A ส่งข้อมูลวิ่งออกไป แล้วถูกตอบกลับมาเนี่ยมันก็จะแนบพอร์ตมาด้วยว่าเป็นพอร์ต 50000 เมื่อข้อมูลมันส่งกลับมาหา NAT แล้วมันพบว่าเป็นพอร์ต 50000 เนี่ย มันก็จะรู้แล้วว่าต้องส่งต่อไปให้เครื่อง A
ถ้าหากว่าไม่มีพอร์ต มันก็ไม่รู้ว่าจะต้องส่งไปให้เครื่องไหน เพราะในความเป็นจริงมันจะมีอุปกรณ์ใช้งานอยู่เยอะมากๆ แต่ว่าจริงๆแล้วมันมีรายละเอียดเยอะกว่านี้ มันมีเรื่องของ IP กับ MAC เข้ามาเกี่ยวข้องด้วย แต่ในรอบนี้ผมจะโฟกัสไปที่ Port เพราะกำลังสอนเรื่อง Port
คุณจะเห็นได้ว่าถ้าเป็นข้อมูลขาเข้า-ขาออกที่ NAT มันรู้จัก มันก็จะสามารถส่งข้อมูลได้แบบปกติ เพราะมันจำ Session ได้
แต่ถ้าหากว่าอยู่ดีๆมีข้อมูลที่วิ่งเข้ามาดื้อๆโดยที่มันไม่รู้จักแต่แรกละ? ผลคือ ข้อมูลจากโลกภายนอกก็จะเข้าไปหาภายใน NAT ไม่ได้
ซึ่งมันก็คือปัญหาของ NAT ที่ผมได้บอกไปในตอนแรกนั่นแหละ มันจึงเป็นเหตุผลที่ต้องมีการทำ Port forwarding
Port forwarding คืออะไร
กลับมาที่เรื่องของ Port forwarding ที่ผมได้พูดถึงในข้างต้น มันก็คือการที่เราไปตั้งค่า NAT ตั้งแต่ทีแรก
สมมติว่าผมอยากให้เครื่องภายนอกสามารถติดต่อเครื่อง A ที่อยู่หลัง NAT ได้ ผมก็จะไปตั้งค่า NAT ว่า "ถ้ามีข้อมูลวิ่งเข้ามาที่พอร์ต 60000 ให้ส่งข้อมูลต่อไปที่เครื่อง A"
แล้วเวลาที่เครื่องภายนอกจะติดต่อเข้ามาหาเครื่อง A เนี่ย ก็ทำได้ด้วยการติดต่อเข้าไปที่ NAT ที่พอร์ต 60000 อะไรประมาณนี้