Encapsulation

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

1. จากในรูปจะเห็นว่าเมื่อ process ที่อยู่บน application layer ของ host หนึ่ง ต้องการจะส่งข้อมูลหรือ message ไปให้อีก host หนึ่ง protocol บน application layer ก็จะทำการส่ง  message นั้นผ่านทาง socket ลงมาให้กับ transport layer

2. transport layer เมื่อได้รับ message แล้ว protocol บน transport layerก็จะทำการตรวจสอบ  message นั้น  ถ้า message  มีขนาดยาวมาก protocol   ก็จะทำการแบ่ง message ออกเป็นหน่วยเล็ก ๆ เรียกว่า data chunk  แล้วทำการ   encapsulate Data chunk นั้นไว้ใน packet ที่เรียกว่า segment ซึ่งที่ header ของ segment นั้น ก็จะระบุหมายเลข port ของ host ต้นทางและ host ปลายทาง เพื่อใช้ในการระบุที่อยู่ของ process ที่เป็นผู้รับข้อมูลบน host นั้น แล้วทำส่งต่อลงไปให้กับ network layer ต่อไป

3. เมื่อ network layer ได้รับ segment แล้ว ก็จะทำการ Encapsulate segment นั้นไว้ใน packet ที่เรียกว่า datagram ซึ่งบน header ของ datagram ก็มีการระบุหมาย IP ของ host ปลายทาง เพื่อใช้ในการระบุที่อยู่ของ host ที่เป็นผู้รับข้อมูลนั้น แล้วทำการส่งต่อลงไปให้กับ link layer

4. link layer เมื่อได้รับ datagram แล้วก็จะทำการ encapsulate datagram นั้นไว้ใน packet ที่เรียกว่า frame โดยบน header ของ frame ก็จะมีการระบุ mac address ของ node ถัดไปที่จะเป็นผู้รับข้อมูล จากนั้น link layer ก็จะทำการส่งต่อ frame ลงไปให้กับ physical later

5.  physical layer เมื่อได้รับ frame แล้วก็จะทำการ transmiss frame นั้นทีละ bit ออกไปยัง link ที่เชื่อมต่อเข้ากับ internet

6. เมื่อ packet เดินทางมาถึง switch (ดูรูป) physical layer ก็จะทำการรับข้อมูลทีละ bit จนได้ครบทั้ง frame แล้ว ก็จะทำการส่งต่อ frame นั้นขึ้นไปบน link layer เนื่องจาก switch ไม่มี network layer ดังนั้น link layer จะทำการตรวจสอบ mac address ของ node ปลายทางที่ต้องการส่งแล้วทำการส่งต่อไปยัง node ตามที่อยู่ mac address ที่ระบุไว้ (ซึ่ง node ต่อไปก็คือ router ดังในรูป)

7. เมื่อ packet เดินทางมาถึง router (ดูรูป) physical layer ก็จะทำการรับข้อมูลทีละ bit จนได้ครบทั้ง frame แล้ว ก็จะทำการส่งต่อ Frame นั้นขึ้นไปบน link layer ซึ่ง link layer จะทำการ decapsulate fame ได้เป็น datagram แล้วทำการส่งต่อขึ้นไปให้ network layer จากนั้น network layer จะทำการตรวจสอบ ip address ของ node หรือ host ปลายทางที่ระบุบน datagram จากนั้นจึงทำการเลือกเส้นทางส่งข้อมูลที่เหมาะสมแล้วส่งข้อมูลไปตาม node หรือ host ที่ระบุไว้ตาม ip address

8. เมื่อ packet เดินทางมาถึง host ปลายทาง (ดูรูป)  physical layer ก็จะทำการรับข้อมูลทีละ bit จนได้ครบทั้ง frame แล้ว ก็จะทำการส่งต่อ Frame นั้นขึ้นไปบน link layer ซึ่ง link layer จะทำการ decapsulate fame ได้เป็น datagram แล้วทำการส่งต่อขึ้นไปให้ network layer จากนั้น network layer จะทำการ decapsulate datagram ได้เป็น segment แล้วทำการส่งต่อขึ้นไปให้กับ link layer ซึ่ง link layer จะทำการตรวจสอบ port ปลายทางของ segment ว่าต้องส่งไปที่ process ใด แล้วจึงทการส่ง segment นั้นขึ้นไปให้กับ process ปลายทาง  เป็นอันสิ้นสุดกระบวนการ decapsulation

UDP ยู ดี พี หรือ User Datagram Protocol ยูสเซอร์ ดาต้าแกรม โปรโตคอล คืออะไร

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

    UDP อยู่ใน Transport layer (ทรานสโพท เลเยอร์) ทำหน้าที่จัดการและควบคุมการรับส่งข้อมูล แต่ไม่มีกลไกความคุมการรับ ส่งข้อมูลให้มีเสถียรภาพและเชื่อถือได้ unreliable (อันรีไลเบิ้ล) และ connectionless (คอนเนคชั่นเลทด์) โดยปล่อยให้เป็นหน้าที่ของแอพพลิเคชั่นเลเยอร์ แต่ UDP มีข้อได้เปรียบในการส่งข้อมูลได้ทั้งแบบ unicast (ยูนิคาสต์), multicast (มัลติคาสต์) และ broadcast (บรอดคาสต์) อีกทั้งยังทำการติดต่อสื่อสารได้เร็วกว่า TCP (ที ซี พี) เนื่องจาก TCP ต้องเสีย overhead (โอเวอร์เฮด) ให้กับขั้นตอนการสื่อสารที่ทำให้ TCP มีความน่าเชื่อถือในการรับส่งข้อมูลนั่นเอง 

จุดเด่น

     UDP ซึ่งมีจุดเด่นที่ความเร็ว ขนาดเล็ก และไม่มีการทำงานเกี่ยวการส่งข้อมูลซ้ำหรือคำนวณอัตราการส่งข้อมูล ซึ่งจะเหมาะกับการส่งข้อมูลแบบ realtime (เรียลไทม์) ซึ่งข้อมูลที่สูญหายบางส่วนหรือข้อมูลที่เกิด delay (ดิเลย์) จะถูกละความสนใจไปมันจะส่งข้อมูลได้เร็วกว่า แบบ TCP และจะไม่มีการสร้าง Connection (คอนเนคชั่น) เกิดขึ้น ทำให้ข้อมูลที่วิ่งในเครือข่ายมีน้อยลงด้วยเป็นการสื่อสารแบบ Connectionless คือข้อมูลจะถูกแบ่งเป็นชิ้นๆ ตามที่อยู่ปลายทาง แล้วผ่านตัวกลางไปยังปลายทาง อาจจะใช้เส้นทางคนละเส้นทางกันก็ได้ รวมทั้งข้อมูลแต่ละชิ้นอาจจะถึงก่อนหลังแตกต่างกันไปได้ด้วย ทำให้การเริ่มต้นส่งทำได้รวดเร็ว ไม่ต้องเสียเวลาสร้าง Connection

Reference : en.wikipedia.org/wiki/User_Datagram_Protocol

Supermicro ipmi port forwarding

The first ports you have to allow are of course TCP 80 and 443 for web management interface. Almost all IPMI implementations have it and quite often it’s the interface with the most features. For example, Supermicro’s implementation only allows BIOS update and port number changes over web interface. This interface unfortunately stops just short of allowing console access.

To get access via IPMI tool (I use Supermicro’s IPMI View) you need to have UDP port 623 allowed through. This will allow logging into the IPMI interface and seeing machine’s status. Unfortunately, this too stops short of console access.

The key to the console (aka KVM) access is in TCP ports 3520 and 5900. These will allow you to see and type into. And only if you ever ran IPMI in nonrestrictive network would you notice something missing.

The missing piece is the menu, allowing you to mount virtual media and similar. For this you need to enable TCP port 623. This will finally allow full control over the hardware.

It’s a bit of annoyance that so many ports are needed but in general this doesn’t present the problem. Unless there are special circumstances, you shouldn’t access IPMI from the outside via port forwarding. What you should do is use VPN and then use IPMI via it.