วันพุธที่ 26 เมษายน พ.ศ. 2560

Cache Memory หน่วยความจำแบบแคช (Cache Memory)

Cache Memory

หน่วยความจำแบบแคช (Cache Memory)

หน่วยความจำแบบแคช (Cache Memory) คืออะไร

หน่วยความจำแบบแคช (Cache Memory) เป็นหน่วยความจำประเภทความเร็วสูง โดยมากจะใช้เป็นหน่วยความจำประเภท RAM ซึ่งใช้งานร่วมกับ CPU ที่ต้องการประสิทธิภาพในการประมวลผลสูง เพื่อไม่ให้เกิดสถานะรอ (Wait State) ของ CPU ขึ้น การทำงานของ Cache จะต้องมีวงจรคอยควบคุมเพื่อใหข้อมูลที่ CPU ใช้งานอยู่บ่อยๆ อยู่ในหน่วยความจำแบบ Cache มาก ที่สุด ซึ่งจะเป็นการเพิ่มความเร็วในการทำงานของ CPU นั่นเอง

มี Cache แล้วดีอย่างไร
เนื่องจากเทคโนโลยีการผลิตวงจรรวม (Integrated Circuit) พัฒนาไปมาก ทำให้ CPU ที่มีการผลิตออกมานั้น นับวันจะมีความเร็วสูงขึ้นเรื่อยๆ ตามพัฒนาการของเทคโนโลยี จึงทำให้เกิดปัญหาความเร็วที่แตกต่างกันระหว่าง CPU กับหน่วยความจำหลักมีมากขึ้นตามไปด้วย เป็นเหตุให้ประสิทธิภาพการทำงานของ CPU ต่ำลง เนื่องจาก CPU ไม่สามารถทำงานได้เต็มขีดความสามารถ (ความเร็ว) ที่มันมีอยู่ ดังนั้นหน่วยความจำ Cache จึงเป็นกลไกเข้ามาช่วยบรรเทาปัญหานี้ โดย Cache จะเป็นตัวกลางในการนำข้อมูลจาก ROM RAM หรือฮาร์ดดิสก์ที่ CPU ต้องการใช้งานเข้ามาเก็บพักไว้ที่ Cache ซึ่งนั่นทำให้ CPU ไม่ต้องดำเนินการผ่านหน่วยความจำหลัก ซึ่งเป็นหน่วย ความจำปกติที่ CPU ทำงานด้วย

การทำงานของ Cache
โครงสร้างการทำงานของ Cache ค่อนข้างจะซับซ้อนและมีราคาแพง ถ้าเทียบกับหน่วยความจำประเภทอื่น ในคอมพิวเตอร์ที่ใช้ Cache นั้น เมื่อใดที่ CPU ทำการอ่านข้อมูลของหน่วยความจำ วงจรควบคุม Cache จะทำการตรวจสอบดูว่าข้อมูลที่ CPU ต้องการอ่านนั้นอยู่ภายใน Cache ถ้าอยู่แล้วก็จะทำการส่งไปให้ CPU เลย ซึ่งจะสามารถส่งได้อย่างรวดเร็วมาก แต่ถ้าข้อมูลนั้นไม่มีอยู่ใน Cache CPU จะต้องรอชั่วขณะ เพื่อให้วงจรควบคุมอ่านข้อมูลจากหน่วย ความจำหลักมาใช้ และในขณะเดียวกันก็จะนำข้อมูลนั้นไปไว้ใน Cache ด้วย ซงจะทำให้การอ่านข้อมูลในครั้งต่อไปทำได้เร็วขึ้น
เหตุผลที่ทำให้ Cache เป็นที่นิยม คือ โปรแกรมส่วนใหญ่มีแนวโน้มที่จะใช้ข้อมูลในหน่วยความจำส่วนใดส่วนหนึ่งซ้ำแล้วซ้ำอีก ดังนั้น เมื่อส่วนที่ถูกใช้งานบ่อยๆ ถูกนำมาไว้ใน Cache แล้วก็จะทำให้ประสิทธิภาพของระบบดีขึ้นหน่วยความจำ Cache สามารถแบ่งได้ 2 แบบ
1. Memory Cache: จะเป็นการใช้หน่วยความจำ RAM ชนิดความเร็วสูงเป็นพิเศษมาเก็บคำสั่ง และข้อมูลที่ใช้บ่อยๆ จากหน่วยความจำ RAM แบบปกติของระบบ เพื่อลดเวลาที่ CPU ใช้ในการอ่าน RAM ซึ่งมีความเร็วในการทำงานช้ากว่าการทำงานของ CPU มาก
2. Device Cache: เป็นการออกแบบเพื่อเพิ่มความเร็วในการเข้าถึงข้อมูลในอุปกรณ์อื่นๆ เช่น หน่วยความจำสำรอง โดยการจัดสรร RAM มาใช้เก็บข้อมูลและคำสั่งต่างๆ ที่ใช้บ่อยๆ จากอุปกรณ์ที่มีความเร็วต่ำ เช่น ฮาร์ดดิสก์ มาไว้ใน Cache ทำให้จำนวนครั้งที่ต้องการเรียกใช้ข้อมูลจากอุปกรณ์เหล่านั้นลดลง นอกจากนี้ในบางครั้งจะพบกับ Buffer Memory ซึ่งเป็น Cache สำหรับอุปกรณ์แบบง่ายๆ ทำหน้าที่พักข้อมูลจากอุปกรณ์ไว้ชั่วคราว เพื่อรอให้ CPU มาเรียกอ่านไปใช้ โดยไม่มีการใช้วิธีที่ซับซ้อนในการเลือกว่าข้อมูลใดมีโอกาสสูงสุดที่จะถูกเรียกใช้งาน

จะเพิ่มประสิทธิภาพของ Cache ได้อย่างไร
วิธีการวัดประสิทธิภาพของ Cache ก็คือ อัตราส่วนของจำนวนครั้งที่สามารถอ่านข้อมูลจาก Cache ได้ ต่อจำนวนครั้งที่มีการอ่านข้อมูลทั้งหมด ซึ่งเรียกว่า Hit Rate เช่น ถ้า Hit Rate มีค่า 90% หมายความว่าใน 100 ครั้งที่ทำการอ่านข้อมูลจากหน่วยความจำ จะเป็นการอ่านข้อมูลจาก Cache 90 ครั้ง เพราะฉะนั้นระบบใดที่ให้ค่า Hit Rate ยิ่งสูงก็จะยิ่งมีประสิทธิภาพดี เพราะว่า ส่วนใหญ่ของการอ่านข้อมูลจะอ่านได้จาก Cache ซึ่งใช้เวลาน้อย โดยทั่วไปแล้วถ้าระบบใดมี Hit Rate มากกว่า 60% แสดงว่าระบบนั้นมีประสิทธิภาพที่ดี
การเพิ่มความเร็วในการประมวลผลแก่คอมพิวเตอร์ด้วยการปรับแต่ง Cache ทำได้อย่างง่ายๆ โดยการเพิ่มขนาดของ Cache ให้สูงขึ้น เพราะว่าเมื่อ Cache มีขนาดใหญ่ขึ้นก็จะสามารถเก็บข้อมูลไว้ภายในได้มากขึ้น ทำให้โอกาสที่จะพบข้อมูลใน Cache ก็จะสูงตามไปด้วย

ที่มา http://www.ismed.or.th/SME2/src/upload/knowledge/118915405346e10d05931c0.pdf

หน่วยความจำ

หน่วยความจำ

หน่วยความจำ
แบ่งออกเป็น 2 ประเภท คือ
1. หน่วยความจำหลัก
2. หน่วยความจำสำรอง

1.หน่วยความจำหลัก (Main Memory) คือ หน่วยความจำที่ต่อกับหน่วยประมวลผลกลาง และหน่วยประมวลผลกลางสามารถใช้งานได้โดยตรง หน่วยความจำ ชนิดนีจ้ ะเก็บข้อมูล และชุดคำสั่งในระหว่างประมวลผล และมีกระแสไฟฟ้า เมื่อปิดเครื่องคอมพิวเตอร์ข้อมูลในหน่วย ความจำนีจะหายไปด้วย หน่วยความจำหลักที่ใช้ในระบบคอมพิวเตอร์ปัจจุบัน เป็นชนิดที่ทำมาจากสารกึ่งตัวนำ หน่วยความจำชนิดนีมี้ขนาดเล็ก ราคาถูก แต่เก็บข้อมูลได้มาก และสามารถให้หน่วยประมวลผลกลาง นำข้อมูลมาเก็บ และเรียกค้นได้อย่างรวดเร็ว
หน่วยความจำหลักที่ใช้กับไมโครคอมพิวเตอร์ จึงต้องกำหนดคุณลักษณะในเรื่องช่วงเวลาเข้าถึงข้อมูล(Accesss time) ค่าที่ใช้ทั่วไปอยู่ในช่วงประมาณ 60 นาโนวินาที ถึง 125 นาโนวินาที (1 นาโนวินาทีเท่ากับ 10 ยกกำลัง -9 วินาที) แต่อย่างไรก็ตาม มีการพัฒนาให้หน่วยความจำ สามารถใช้กับซีพียูที่ทำงานเร็วขนาด 33 เมกะเฮิรตซ์ โดยการสร้าง หน่วยความจำพิเศษมา◌ึคั่นกลางไว้ ซึ่งเรียกว่า หน่วยความจำแคช (cache memory) ซึ่งเป็นหน่วยความจำที่เพิ่มเข้ามา เพื่อนำชุดคำสั่ง หรือข้อมูลจากหน่วยหลักมาเก็บไว้ก่อน เพื่อให้ซีพียูเรียกใช้ได้เร็วขึน้แบ่งตามลักษณะการเก็บข้อมูล
1.หน่วยความจำแบบลบเลือนได้ (volatile memory) คือถ้าเป็นหน่วยความจำที่เก็บข้อมูลไว้แล้ว หากไฟฟ้าดับ คือไม่มีไฟฟ้าจ่ายให้กับวงจรหน่วยความจำ ข้อมูลที่เก็บไว้จะหายไปหมด
แรม (Random Access Memory: RAM)
หน่วยความจำแบบลบเลือนได้เป็นหน่วยความจำหลักที่สามารถนำโปรแกรม และข้อมูลจากอุปกรณ์ภายนอก หรือหน่วยความจำรองมาบรรจุไว้ หน่วยความจำแรมนีต้ ่างจากรอมที่สามารถเก็บใหม่อีกครัง้ จึงจะนำข้อมูลหรือโปรแกรมมาเขียนใหม่อีกครัง้ หน่วยความจำแรมมีขนาดแตกต่างกันออกไป หน่วยความจำชนิดนีบ้ างครัง้ เรียกว่า read write memory ซึ่งหมายความว่า ทัง้ อ่านและบันทึกได้ หน่วยความจำเป็บแรมที่ใช้อยู่สามารถแบ่งได้ 2 ประเภท คือ
1. ไดนามิกแรมหรือดีแรม (Dynamic RAM : DRAM) DRAM จะทำการเก็บข้อมูลในตัวเก็บประจุ ( Capacitor ) ซึ่งจำเป็นจะต้องมีการ refresh เพื่อ เก็บข้อมูลให้คงอยู่ โดยการ refresh นี ้ทำให้เกิดการหน่วงเวลาขึน้ ในการเข้าถึงข้อมูล และก็เนื่องจากที่มันต้อง refresh ตัวเองอยู่ตลอดเวลานีเ้อง จึงเป็นเหตุให้ได้ชื่อว่า Dynamic RAM ปัจจุบันนีแ้ ทบจะหมดไปจากตลาดแล้ว
2. Static Random Access Memory (SRAM) จะต่างจาก DRAM ตรงที่ว่า DRAM จะต้องทำการ refresh ข้อมูลอยู่ตลอดเวลา แต่ในขณะที่ SRAM จะเก็บข้อมูลนัน้ ๆ ไว้ และจะไม่ทำการ refresh โดยอัตโนมัติ ซึ่งมันจะทำการ refresh ก็ต่อเมื่อ สั่งให้มัน refresh เท่านัน้ ซึ่งข้อดีของมัน ก็คือความเร็ว ซึ่งเร็วกว่า DRAM ปกติมาก แต่ก็ด้วยราคาที่สูงกว่ามาก จึงเป็นข้อด้อยของมันเช่นกัน
2. หน่วยความจำไม่ลบเลือน (nonvolatile memory) คือ หน่วยความจำเก็บข้อมูลได้ โดยไม่ขึน้ กับไฟฟ้าที่เลีย้งวงจร
รอม (Read Only Memory : ROM)
รอมจึงเป็นหน่วยความจำที่เก็บข้อมูลหรือโปรแกรมไว้ถาวร เช่นเก็บโปรแกรมควบคุม การจัดการพืน้ ฐานของระบบ ไมโครคอมพิวเตอร์ (bios) รอม ส่วนใหญ่เป็นหน่วยความจำไม่ลบเลือนแต่อาจยอมให้ผู้พัฒนาระบบ ลบข้อมูลและ เขียนข้อมูลลงไปใหม่ได้ การลบข้อมูลนีต้ ้องทำด้วยกรรมวิธีพิเศษ เช่น ใช้แสงอุลตราไวโลเล็ตฉายลงบนผิวซิลิกอน หน่วยความจำประเภทนี ้มักจะมีช่องกระจกใสสำหรับฉายแสงขณะลบ และขณะใช้งานจะมีแผ่นกระดาษทึบปิดทับไวเรียกหน่วยความจำประเภทนีว้ ่า อีพร็อม(Erasable Programmable Read Only Memory : EPROM)หน่วยความจำความเร็วสูง (Cache Memory)
หน่วยความจำแคช เป็นหน่วยความจำขนาดเล็กที่มีความเร็วสูง ทำหน้าที่เหมือนที่พักคำสั่ง และข้อมูลระหว่าง การทำงาน เพื่อให้การทำงานโดยรวมเร็วขึน้ แบ่งเป็นสองประเภท คือ แคชภายใน (Internal Cache) และแคชภายนอก (External Cache) โดยแคชภายใน หรือ L1 หรือ Primary Cache เป็นแคชที่อยู่ในซีพียู ส่วนแคชภายนอก เป็นชิปแบบ SRAM ติดอยู่บนเมนบอร์ด ทำงานได้ช้ากว่าแบบแรก แต่มีขนาดใหญ่กว่า เรียกอีกชื่อได้ว่า L2 หรือ Secondary Cache

2.หน่วยความจำรอง (secondary memory) ใช้เป็นส่วนเพิ่มความจำให้มีขนาดใหญ่มากขึน้ ทำงานติดต่ออยู่กับส่วนความจำหลัก ส่วนความจำรองมีความจุมากและมีราคาถูก แต่เรียกหาข้อมูลได้ช้ากว่าส่วนความจำหลักข้อมูลที่จะเก็บไว้ในส่วนความจำนัน้ เป็นรหัสแทนเลขฐานสอง (binary) คือ ๐ กับ ๑ ซึ่งต้องเก็บไว้เป็นกลุ่ม ๆ และมีแอดเดรสตามที่กำหนด เพื่อความสะดอกขอนิยามไว้ดังนี ้
บิต (bit) เป็นชื่อที่เขียนย่อจาก binary digit ซึ่งหมายถึงตัวเลขฐานสองคือ ๐ กับ ๑ ซึ่งเป็น

ส่วนประกอบที่เล็กที่สุดของหน่วยความจำ
ไบต์ (byte) เป็นชื่อที่ใช้เรียกกลุ่มของบิต ซึ่งขึน้ อยู่กับการเลือกใช้ เช่น ๖ บิต ๘ บิต…….ก็ได้ ซึ่งเรียกว่า ๖ บิตไบต์ ๘ บิตไบต์ ๑๖ บิตไบต์……..ตามลำดับ เป็นต้น
ขนาดของส่วนความจำบอกเป็นจำนวน K คำ ซึ่ง K ย่อมาจากคำว่า kilo อันหมายถึง 1,000 แต่ค่าที่แท้จริงคือ = 1,024
ในยุคสังคมสารสนเทศทุกวันนี ้ข้อมูลและโปรแกรมคอมพิวเตอร์จะมีจำนวนหรือขนาดใหญ่มากตามความ เจริญก้าวหน้าของเทคโนโลยีและความซับซ้อนของปัญหาที่พบในงานต่างๆ หน่วยความจำหลักที่ใช้เก็บข้อมูล ในคอมพิวเตอร์จึงต้องมีขนาดใหญ่ตามไปด้วย โดยทั่วไปหน่วยความจำหลักจะมีขนาดจำกัด ทำให้ไม่พอเพียงสำหรับ การเก็บข้อมูลจำนวนมาก ในระบบคอมพิวเตอร์จึงมักติดตัง้หน่วยความจำรอง เพื่อนำมาใช้ เก็บข้อมูลจำนวนมาก เป็นการเพิ่มขีดความสามารถด้านจดจำของคอมพิวเตอร์ให้มากยิ่งขึน้ นอกจากนีถ้ ้า มีการปิดเครื่องคอมพิวเตอร์ ในขณะทำงานข้อมูลและโปรแกรมที่เก็บไว้ในหน่วยความจำหลักหรือแรมจะสูญหายไปหมด หากมีข้อมูลส่วนใด ที่ต้องการเก็บไว้ใช้งานในภายหลังก็สามารถเก็บไว้ในหน่วยความจำรอง หน่วยความจำรองที่ นิยมใช้กันมากจะเป็น จานแม่เหล็กซึ่งจะมีทัง้ แผ่นบันทึกและฮาร์ดดิสก์
- ฮาร์ดดิสก์
- แผ่นบันทึก
- ซีดีรอม
- ดีวีดี
- หน่วยความจำแบบแฟลช

ที่มา http://www.notecyber.com/Doc/it05.pdf

Central Processing Unit : CPU

Central Processing Unit : CPU

หน่วยประมวลผลกลาง (Central Processing Unit : CPU) หน่วยประมวลผลกลาง หรือไมโครโพรเซสเซอร์ของไมโครคอมพิวเตอร์ มีหน้าที่นำคำสั่งและข้อมูลที่ เก็บไว้ใน หน่วยความจำมาแปลความหมาย และกระทำตามคำสั่งพืน้ ฐานของไมโครโพรเซสเซอร์ ซึ่งแทนด้วยรหัสเลขฐานสอง การทำงานของคอมพิวเตอร์ ใช้หลักการเก็บคำสั่งไว้ที่หน่วยความจำ ซีพียูอ่านคำสั่งจากหน่วยความจำมาแปลความหมาย และกระทำตามเรียงกันไปทีละคำสั่ง หน้าที่หลักของซีพียู คือควบคุมการทำงานของคอมพิวเตอร์ทัง้ ระบบ ตลอดจนทำการประมวลผล เทคโนโลยีไมโครโพรเซสเซอร์ได้พัฒนาอย่างรวดเร็ว โดยเริ่มจากปี พ.ศ. 2518 บริษัทอินเทลได้พัฒนา ไมโครโพรเซสเซอร์ที่เป็นที่รู้จักกันดีคือ ไมโครโพรเซสเซอร์เบอร์ 8080 ซึ่งเป็นซีพียูขนาด 8 บิต ซีพียูรุ่นนีจ ะรับข้อมูล เข้ามาประมวลผลด้วยตัวเลขฐานสองครัง้ ละ 8 บิต ต่อมาประมาณปี พ.ศ. 2524 มีการพัฒนาเป็นซีพียูแบบ 16 บิต ที่มีการรับข้อมูลจากภายนอกทีละ 8 บิต แต่การประมวลผลบวกลบคูณหารภายในจะกระทำทีละ 16 บิต ต่อมาโดยนำเอาซีพียู 80386 มาเป็นซีพียูหลักของระบบ ซีพียู 80386 เพิ่มเติมขีดความสามารถอีกมา เช่น รับส่งข้อมูล ครัง้ ละ 32 บิต ประมวลผลครัง้ ละ 32 บิต ประกอบด้วยส่วนใหญ่ ๆ 2 ส่วน คือ หน่วยคำนวณ และ หน่วยควบคุม 1.หน่วยควบคุม) (Control Unit) ทำหน้าที่ควบคุมการทำงาน ควบคุมการเขียนอ่านข้อมูลระหว่างหน่วยความจำของซีพียู ควบคุมกลไกการทำงาน ทัง้หมดของระบบ ควบคุมจังหวะเวลา โดยมีสัญญาณนาฬิกา เป็นตัวกำหนดจังหวะการทำงาน 2. หน่วยคำนวน (Arithmetic and logic unit เป็นหน่วยที่มีหน้าที่นำเอาข้อมูลที่เป็นตัวเลขฐานสองมาประมวลผลทางคณิตศาสตร์ และ ตรรกะ เช่น การบวก การลบ การเปรียบเทียบ และ การสลับตัวเลข เป็นต้นการคำนวณทำได้เร็วตามจังหวะการควบคุมของหน่วยควบคุม

วันอังคารที่ 11 เมษายน พ.ศ. 2560

Voice VLAN ตอนที่ 1 : ทำความรู้จักกับ Voice VLAN

Voice VLAN ตอนที่ 1 : ทำความรู้จักกับ Voice VLAN

สวัสดีครับ ในบทความนี้ จะมาพูดถึงเรื่อง Voice VLAN บน Cisco Switch กันครับ
ที่โต๊ะทำงานเราในบริษัททั่วไปก็จะมีโทรศัพท์ตั้งโต๊ะเอาไว้ติดต่อกัน ภายใน หรือ ไว้โทรหาลูกค้าได้ ซึ่งเมื่อก่อนเราจะใช้งานโทรศัพท์แบบ Analog ต้องเดินสายโทรศัพท์มาที่โต๊ะทำงานด้วย และที่โต๊ะทำงานยังต้องมีสาย LAN เพื่อให้ต่อใช้งานระบบเครือข่ายกับ Notebook อีกด้วย….
ในปัจจุบันเราสามารถลดค่าใช้จ่ายในการเดินสายโทรศัพท์แบบ Analog และลดความยุ่งยากในการดูแล จึงเปลี่ยนมาใช้งานโทรศัพท์ที่สามารถใช้งานผ่านระบบ IP ได้ นั่นก็คือ IP Phone นั่นเอง…
เมื่อนำ IP Phone มาใช้งานในระบบ เราจึงต้องมีการจัดการ Traffic ให้ใช้งานได้อย่างมีประสิทธิภาพมากขึ้น โดยการทำ VLAN ให้กับกลุ่มของ IP Phone เพื่อให้ Traffic ที่เป็น Voice over IP สามารถใช้งานได้มีประสิทธิภาพ และ ไม่ไปปะปนกับ Traffic Data ของ Users ทั่วไป
Image 2
เมื่อเราทำ VLAN แยกกันแล้วเป็น VLAN Voice กับ VLAN Data เมื่อเราต้องการจะต่อใช้งาน Notebook และ IP Phone โดยทั่วไปก็จะต้องต่อแยก Port กัน ตามรูปด้านล่าง
Image 4
ซึ่งการต่อลักษณะนี้ทำให้เกิดข้อเสีย คือ
  • เปลือง Port บน Switch (User 1 คน ใช้ Notebook และ IP Phone ที่โต๊ะ ต้องเสีย Port ที่ Switch ไป 2 Port)
  • ต้องลากสาย LAN ที่เชื่อมต่อจาก Switch ไปที่ IP Phone (ต้องลากสาย LAN ถึง 2 เส้น มาที่โต๊ะ User สำหรับ Notebook และ IP Phone)
เราจะมานำเสนอวิธีการ ที่สามารถแก้ปัญหานี้ โดยที่เราลากสาย LAN ที่เชื่อมต่อจาก Switch มาที่โต๊ะ เพียงแค่ 1 เส้น เท่านั้น !!!
Image 6ที่ IP Phone จะมี Port ให้ใช้งาน ดังนี้
  • Port ที่เชื่อมต่อไปที่ Switch 1 Port
  • Port ที่เชื่อมต่อไปที่ PC/Notebook 1 Port
Image 7
ปัญหาที่ตามมาก็คือ เราจะแยก VLAN Voice ของ IP Phone และ VLAN Data ของ Notebook ได้อย่างไร เมื่อต่อผ่านสาย LAN เส้นเดียวกัน ???
Image 8
เราจึงใช้งานฟีเจอร์ “Voice VLAN” โดยใช้คำสั่ง “switchport voice vlan xx” ที่ Interface ที่เชื่อมต่อไปหา IP Phone และ Notebook บน Switch เพื่อให้ IP Phone ทราบว่าตัวเองจะต้องใช้ VLAN อะไรในการใช้งานสำหรับ Voice นั่นเองครับ
.
ในบทความนี้ผมพูดเกริ่นนำเพื่อให้รู้จักกับ Voice VLAN กันก่อนนะครับ ซึ่งในตอนต่อไป ผมจะเขียนถึงหลักการทำงาน และ ตัวอย่างการ configure ให้นะครับ

ARP คืออะไร ? มาทำความรู้จักและเข้าใจการทำงานของ ARP (Address Resolution Protocol) กันดีกว่า

ARP คืออะไร ? มาทำความรู้จักและเข้าใจการทำงานของ ARP (Address Resolution Protocol) กันดีกว่า

สวัสดีครับ ใบบทความนี้เราจะมาเรียนรู้เรื่อง Address Resolution Protocol หรือเราเรียกย่อๆว่า ARP นั่นเองครับ
ARP จะทำงานเมื่อมีการติดต่อสื่อสารบน LAN (Ethernet) ระหว่างเครื่องต้นทาง และ เครื่องปลายทาง ใช้ ค้นหาและจับคู่ระหว่าง MAC Address กับ IP Address เพื่อให้ส่งถึงปลายทางในระดับ L2 ตาม OSI Model ได้ ลองมาดูเพื่อทำความเข้าใจกันต่อนะครับ
image-1
เมื่อเครื่อง NB1 ต้องการส่งข้อมูลหาเครื่อง NB2 จะเกิดการทำงานตาม OSI Model ดังนี้
(สมมุติว่าผมทำการ Ping จาก NB1 ไป NB2)
  • ที่ Layer 3 เครื่อง NB1 จะสร้าง IP Packet ขึ้นมา โดยใน IP Packet จะระบุ Source IP address และ Destination IP address เพื่อใช้ในการส่งข้อมูล (Data)
  • IP Packet ของ NB1 จะถูก Encapsulation ลงมาที่ Layer 2 คือ Ethernet Frame โดยใน Ethernet Frame จะระบุ Source MAC address และ Destination MAC address
cats
จากรูป เป็น Ethernet Frame ของเครื่อง NB1 จะเห็นว่า เครื่อง NB1 จะไม่มีข้อมูล Destination MAC address ของเครื่อง NB2 ทำให้ยังไม่สามารถส่งข้อมูลได้
NB1 จึงจะต้องทำการถามหา MAC address ของ NB2 เพื่อให้การ Encapsulation บน Ethernet Frame ของ NB1 นั้นสมบูรณ์ และ สามารถส่งข้อมูลไปหา NB2 ได้
image-3_
NB1 จึงเรียกใช้งาน ARP โดยส่ง ARP Request ออกไป ซึ่งใน Field ของ ARP จะมีดังนี้
  • Source MAC address (Sender) : อันนี้ทราบอยู่แล้วเพราะเป็น MAC Address ของเครื่องผู้ส่งเอง
  • Source IP address (Sender) : อันนี้ทราบอยู่แล้วเพราะเป็น IP ของเครื่องผู้ส่งเอง
  • Destination MAC address (Target) : อันนี้ยังไม่ทราบ จึงต้องส่ง ARP Request ไปถาม ระบุเป็น 0000.0000.0000
  • Destination IP address (Target) : อันนี้ทราบอยู่แล้วว่าต้องการจะส่งไป IP ไหน
จากนั้นทำการ Encapsulation บน Ethernet Frame เนื่องจากยังไม่ทราบ Dest. MAC address จึงระบุเป็น FFFF.FFFF.FFFF แล้วส่งออกไป
Note : สังเกตดีๆและอย่าสับสนระหว่าง Dest. MAC address ใน ARP Request กับ Ethernet Frame นะครับ

image-4_
เมื่อเครื่อง NB2 ได้รับ ARP Request เข้ามา ก็จะพิจารณาว่า มันคือเครื่องเป้าหมายที่ NB1 ต้องการถาม MAC address หรือเปล่า โดยพิจารณาจาก Destination IP address ที่ NB1 ส่งมา

image-5
ถ้าใช่ มันก็จะใส่ข้อมูลของตัวเองลงไป และ ตอบกลับไปหาคนที่ส่งมา นั่นคือ NB1 โดยใช้ ARP Reply

image-6
เมื่อ NB1 ได้รับ ARP Reply กลับมา ก็จะทำการเก็บข้อมูล ARP เอาไว้เป็น Cache หรือ ARP Cache เพื่อใช้ในการส่งข้อมูลในครั้งถัดไป โดยที่ไม่ต้องมาทำการส่ง ARP Request ใหม่ทุกครั้งเมื่อมีการส่งข้อมูล

image-7
ในการส่งข้อมูลต่างๆ ในครั้งถัดไป ก็จะสามารถส่งข้อมูลได้เลย เพราะที่ NB1 มี ARP Cache เก็บไว้ ซึ่งจับคู่ Destination IP address กับ Destination MAC address เอาไว้อยู่ จึงสามารถ Encapsulation บน Ethernet Frame ได้เลย โดยไม่ต้อง ARP Request ใหม่ทุกครั้งที่ส่งข้อมูล จนกว่า ARP Cache จะหายไป (ARP Timeout)

ถัดมาผมจะพามาดูหน้าตาจริงๆ และการทำงาน ของ ARP ผ่าน โปรแกรม Wireshark กันครับ
ผมทำการ show arp cache บนเครื่องผม โดยใช้คำสั่ง “arp -a”
image-8
รูปด้านบน อันนี้คือข้อมูล ARP บนเครื่องผมทีมีอยู่ เดี๋ยวผมจะลอง Ping ไปที่ 192.168.1.52 ซึ่งเครื่องผมยังไม่มีข้อมูล Destination MAC address ของเครื่อง 192.168.1.52 ดังนั้น เครื่องผมจะต้องทำการส่ง ARP Request ออกไป มาลองดูกันครับ

image-9
รูปด้านบน สังเกตว่าจะขึ้น Request timed out มา 1 packet ใช่ไหมครับ นั่นคือการที่เครื่องผมทำการ ARP อยู่ เมื่อได้ข้อมูลจากการ ARP แล้ว เครื่องผมก็สามารถติดต่อสื่อสารกับเครื่อง 192.168.1.52 ได้ เดี๋ยวผมจะลองดู ARP Cache ที่เครื่องผมอีกครั้ง โดยใช้คำสั่ง “arp -a”

image-10_
รูปด้านบน สังเกตไหมครับ เครื่องผมมีข้อมูล ARP ของเครื่อง 192.168.1.52 แล้ว เดี๋ยวลองมาดูฝั่ง Wireshark กันบ้าง

ARP Request Packet
image-12

ARP Reply Packet
image-13

รูปด้านล่าง หลังจากที่เครื่องผมได้รับข้อมูล ARP เก็บไว้ที่ ARP Cache แล้ว ก็สามารถส่งข้อมูลต่างๆ ได้ตามปกติ ซึ่งในตัวอย่างข้อมูลของผมคือ Ping (ICMP)
image-10_
image-14
จบแล้วครับสำหรับเรื่อง ARP ก็หวังว่าน่าจะพอเป็นประโยชน์ให้กับผู้ที่สนใจบ้างนะครับ แล้วพบกันใหม่ในบทความถัดไปครับ ^_^

การขยาย VLAN บน Cisco Switch มากกว่า 1 ตัว โดยใช้ Trunk Port

การขยาย VLAN บน Cisco Switch มากกว่า 1 ตัว โดยใช้ Trunk Port

การขยาย VLAN บน Cisco Switch มากกว่า 1 ตัว โดยใช้ Trunk Port และตัวอย่างการตั้งค่า Trunk Port

สวัสดีครับทุกท่าน รอบที่แล้วผมได้เขียนเกี่ยวกับเรื่อง VLAN ไปแล้ว ในครั้งนี้ผมจะมาพูดถึงเรื่องที่เกี่ยวข้องกับ VLAN ต่อ เมื่อเรามีการใช้งาน VLAN บน Switch มากกว่า 1 ตัวขึ้นไป จะมีวิธีการยังไงดีให้สามารถใช้งานได้ สำหรับท่านใดยังไม่ได้อ่านเรื่อง VLAN ลองตามเข้าไปดูก่อนนะครับ เพื่อจะได้เข้าใจในเรื่องนี้ง่ายขึ้น
OK ครับ !! วันนี้ผมจะมาพูดถึงการทำ VLAN บน Switch ที่มีการเชื่อมต่อมากกว่า 1 ตัวขึ้นไป พร้อมกันรึยังครับ !! มาดูกันเลย
รูปภาพ 1ถ้า เรามีการใช้งาน VLAN บน Switch 1 ตัว เครื่องที่อยู่ภายใต้ VLAN เดียวกันก็จะสามารถติดต่อสื่อสารกันได้ แต่ไม่สามารถติดต่อระหว่าง VLAN ได้ แต่ถ้าเรามี Switch มาต่อเพิ่ม และต้องการขยาย VLAN ออกไปยัง Switch ตัวอื่นๆ จะสามารถทำได้อย่างไรบ้าง ลองมาดูรูปตัวอย่างกันครับ
รูปภาพ 4
จากรูปด้านบน เมื่อนำ Switch มาต่อเพิ่มเพื่อขยาย VLAN ออกไปใช้งานบน Switch ตัวอื่นๆ ผมก็ใช้สาย 1 เส้น ต่อการส่งข้อมูล 1 VLAN ผมก็ต้องทำการตั้งค่าพอร์ตของ Switch ให้เป็นสมาชิกของ VLAN นั้นๆ
  • เส้นสีเขียวผมก็ตั้งค่าพอร์ตให้เป็นสมาชิกของ VLAN 10
  • เส้นสีฟ้าผมก็ตั้งค่าพอร์ตให้เป็นสมาชิกของ VLAN 20
เมื่อ Notebook ใน VLAN 10 (สีเขียว) ต้องการจะส่งข้อมูลหากันข้าม Switch ก็จะส่งไปตามเส้นสีเขียวตามที่เราตั้งค่าพอร์ตเอาไว้ และเมื่อ Notebook ใน VLAN 20 (สีฟ้า) ต้องการจะส่งข้อมูลหากันข้าม Switch ก็จะส่งไปตามเส้นสีฟ้าตามที่เราตั้งค่าพอร์ตเอาไว้
รูปภาพ 5
แบบนี้เราก็จะสามารถขยาย VLAN ออกไปยัง Switch หลายๆตัวได้แล้วครับ… แต่ !!! ถ้าเรามี VLAN ซัก 100 VLAN เราคงจะต้องใช้ สายที่เชื่อมต่อระหว่าง Switch ซัก 100 เส้นเลยใช่ไหมครับ !@#

โอเคครับ ตอนนี้ท่านกำลังประสบปัญหากับการขยาย VLAN ไปยัง Switch ตัวอื่น แต่จะต้องใช้สายหลายเส้นใช่ไหมครับ ??
วันนี้ NetPrime ขอนำเสนอวิธีการที่ดีกว่านั้น เราจะใช้สายเพียงเส้นเดียว แต่เราสามารถทำให้หลายๆ VLAN วิ่งผ่านได้พร้อมกัน เราจะเรียกว่า การทำ “Trunk Port” นั่นเองครับ (หรือเรียกอีกอย่างนึงว่า Tagged)
รูปภาพ 6จากรูปด้านบน เราจะใช้สายเชื่อมต่อระหว่าง Switch เพียง 1 เส้น แต่ทำให้สามารถส่งผ่าน VLAN ได้หลายๆ VLAN ได้ครับ เราจะเรียกว่า “Trunk”
แล้ว Switch จะรู้ได้อย่างไรว่าข้อมูลที่ถูกส่งมาเป็นของ VLAN10 หรือ VLAN20 เพราะมันถูกส่งมาบนพอร์ตเดียวกัน !! ถูกต้องไหมครับ ฉะนั้น Switch จึงต้องมีวิธีการในการแยก traffic ของ VLAN เพื่อให้สามารถส่งข้อมูลไปตาม VLAN ได้อย่างถูกต้อง โดยวิธีการแยกแยะ VLAN ของ Switch จะมีอยู่ 2 วิธีการ ดังนี้
1. Inter Switch Link (ISL)
ใช้งานได้บนอุปกรณ์ Cisco เท่านั้น (Cisco Proprietary) ใช้วิธีเพิ่มฟิลด์ขนาด 26 Bytes ประกอบด้วยหมายเลข  VLAN    ขนาด 10 Bits เข้าไปข้างหน้า Ethernet Frame (เป็นการ Encapsulate Ethernet Frame โดยการเพิ่ม ISL Header และ CRC เข้าไป)
รูปภาพ 7
2. IEEE 802.1Q
เป็นมาตรฐาน ใช้วิธีเพิ่ม field ขนาด 4 Bytes ประกอบด้วยหมายเลข VLAN ขนาด 12 Bits เข้าไประหว่าง Ethernet Frame  และยังรองรับการทำ Native VLAN ด้วย
รูปภาพ 9
จาก 2 วิธีการด้านบนเราจะเห็นว่า Switch จะแยก traffic ของแต่ละ VLAN โดยการแปะ Tagged หมายเลข VLAN เข้าไปที่ Ethernet Frame ทำให้ เวลาส่ง traffic ผ่าน Trunk Port ตัว switch สามารถแยกแยะ traffic ของ VLAN ได้นั่นเองครับ..
** โดยวิธีที่นิยมใช้งานในปัจจุบันมากที่สุดคือ IEEE 802.1Q ครับ

ลองมาดูตัวอย่างการส่งข้อมูลกันครับ

หมายเหตุ : ตัวอย่างการส่งข้อมูลนี้ จะอ้างอิงจากวิธีการของ IEEE 802.1Q
จากรูปด้านบน เมื่อ PC : Mac address : AAAA อยู่ใน VLAN สีเขียว ต้องการจะส่งข้อมูลไปที่เครื่อง PC : Mac address : BBBB ที่อยู่ใน VLAN สีเขียวเหมือนกัน แต่อยู่คนละ Switch กัน โดยสายที่เชื่อมต่อระหว่าง Switch เราตั้งค่าให้เป็น Trunk
รูปภาพ 14
Step 1 – PC : Mac address : AAAA ส่งข้อมูลเข้ามาที่พอร์ต Fa0/0 ของ Switch ฝั่งซ้าย ก็จะจำเอาไว้ว่า Mac : AAAA ถูกส่งข้อมูลเข้ามาที่พอร์ต Fa0/0 และพอร์ตนี้เป็นสมาชิกของ VLAN สีเขียว
Step 2 – Switch ฝั่งซ้าย ดูจากตาราง Mac address Table เห็นว่า PC : Mac address : BBBB จะต้องส่งออกไปทางพอร์ต Fa0/24
Step 3 – Switch ฝั่งซ้ายจึงส่งข้อมูลออกไปทางพอร์ต Fa0/24 โดยแปะ Tagged ลงไปใน Ethernet Frames นั้นด้วยว่า Frame นี้ หรือ ข้อมูลนี้ เป็นของ VLAN สีเขียวนะ
Step 4 – เมื่อ Switch ฝั่งขวา รับข้อมูลเข้ามา ก็จะมาดูในตาราง Mac address Table พบว่า PC : Mac address : BBBB อยู่ใน VLAN สีเขียวเหมือนกัน และต้องส่งออกไปยังพอร์ต Fa0/1
Step 5 – Switch ฝั่งขวาจึงเอา Tagged ของ VLAN สีเขียวออก และส่งข้อมูลออกไปหา PC : Mac address : BBBB ทางพอร์ต Fa0/1
การตอบกลับของ PC : Mac address : BBBB ไปหา PC : Mac address : AAAA ก็ใช้หลักการเดียวกันกับที่กล่าวมาตั้งแต่ Step 1 – 5 เลยครับ
หมายเหตุ : กรณีตัวอย่างนี้ Switch ทั้ง 2 ฝั่งได้ทำการ Learning Mac address เรียบร้อยแล้ว ถ้าท่านใดยังไม่เข้าใจเรื่องการ Learning Mac address ไว้ผมจะเขียนให้อีกครั้งนะครับ แต่สามารถไปดู Video จาก อ.โก้ ได้ครับ
>> Switch ทำงาน และเรียนรู้ MAC address อย่างไร? <<

ลองมาดูการตั้งค่า Trunk Port บน Cisco Switch กันบ้างครับ

Switch(config)# interface fa0/24
!! เข้าไปที่พอร์ตที่ต้องการจะตั้งค่า
Switch(config-if)# switchport mode trunk
!! ตั้งค่าพอร์ตให้เป็น trunk
เท่านี้ พอร์ตที่เราตั้งค่าก็จะเป็น trunk port และสามารถส่ง traffic ผ่านพอร์ตนี้ได้มากกว่า 1 VLAN แล้วครับ

ลองมาดูตัวอย่างการใช้งานครับ

รูปภาพ 15

การตั้งค่าบน Switch
รูปภาพ 16

การตรวจสอบ Trunk

รูปภาพ 17รูปภาพ 18
จบแล้วครับ สำหรับเรื่อง Trunk Port ก็หวังว่าจะเป็นประโยชน์กับผู้ที่สนใจนะครับ แล้วพบกันครั้งต่อไปนะคร้าบบบ

VLAN คืออะไร ?

VLAN คืออะไร ?

โดยปกติแล้ว ถ้าเรารู้จัก LAN ก็จะสามารถทำความเข้าใจกับ VLAN ได้ง่ายขึ้น ซึ่ง LAN ก็หมายถึงการเชื่อมต่ออุปกรณ์ Network ต่างๆ เข้าด้วยกันภายใน location เดียวกัน อาจจะเป็นตึกเดียวกัน ชั้นเดียวกัน หรือภายในพื้นที่เดียวก็ได้
LANอุปกรณ์ที่เชื่อมต่อภายใน LAN เดียวกัน ก็จะสามารถติดต่อสื่อสารกันได้ และ อุปกรณ์ทั้งหมดก็จะอยู่ใน Broadcast Domain เดียวกัน
Broadcast Domain คือ ขอบเขตหรือบริเวณที่ Broadcast Traffic สามารถส่งกระจายไปถึงได้ ถูกแบ่งได้จากอินเตอร์เฟสของอุปกรณ์ L3 ขึ้นไป
ถ้ามีการใช้งานมากๆ บน LAN ก็จะทำให้ traffic แบบ broadcast ยิ่งมีมากขึ้นไปด้วย จะส่งผลให้ Network ทำงานได้ช้าลง นอกจากจะทำให้ Network ทำงานช้าแล้ว ยังส่งผลต่ออุปกรณ์ต่างๆด้วย ผมเคยเจอปัญหาของลูกค้าในการใช้งาน LAN วงใหญ่ๆ แล้ว Printer ใช้งานไม่ได้ ปรากฎว่า มี broadcast เยอะมากๆ จน Printer ประมวลผลไม่ทัน
ถ้าเราต้องการจะแยก Network ออกจากกัน หรือพูดง่ายๆ คือ แบ่ง broadcast domain ออกเป็น 2 วง หรือ หลายๆ วง ก็สามารถทำได้โดยแยก Switch ไปอีกตัวนึงเลย ตามรูปด้านล่าง
broadcast domainจาก รูปเราก็จะสามารถแยกวง หรือ แยก broadcast domain ออกจากกันได้แล้ว แต่ก็เปลือง Switch ไปด้วยใช่ไหมครับ !! VLAN จะเข้ามาช่วยได้ครับ โดยให้ผลเหมือนกับการแบ่ง Switch ออกจากกันเลย แต่ใช้ Switch เพียงตัวเดียวก็สามารถทำได้

VLAN หรือ Virtual LAN เป็นความสามารถของอุปกรณ์สวิตช์ที่สามารถกำหนดขอบเขตของ Broadcast Domain บน Layer 2 หมายความว่า บน Switch 1 ตัว สามารถแยก broadcast domain ได้หลายๆ วง หรือ แยก subnet ได้นั่นเอง
broadcast doamin-2

ประโยชน์ของการทำ VLAN หลักๆมีอะไรบ้าง ?

  • ลดจำนวน broadcast traffic ลงในเครือข่าย
  • ลดความเสี่ยง ป้องกันการ flooding ภายใน network ให้จำกัดภายใน VLAN เดียว
  • เพิ่มความปลอดภัย เพราะแต่ละ VLAN ไม่สามารถสื่อสารกันได้
  • มีความยืดหยุ่นในการใช้งาน เพียงแค่เปลี่ยน config บน port ของ switch ให้อยู่ภายใน VLAN กำหนด โดยไม่ต้องไปย้ายสาย

ลองมาดูวิธีการตั้งค่า VLAN กันครับ

1. สร้าง VLAN บน Switch ที่ต้องการ
Switch# configure terminal
Switch(config)# vlan 10
!! สร้าง VLAN หมายเลข 10
Switch(config-vlan)# name Sales
!! ตั้งชื่อ VLAN หมายเลข 10 เป็น Sales
.
เลขของ VLAN สามารถระบุได้ตาม range ได้ดังนี้vlan-rangeNote : บน Cisco Switch ทุกตัว จะมี default เป็น VLAN 1 และพอร์ตทุกพอร์ตก็จะเป็นสมาชิกของ VLAN 1
ตรวจสอบการสร้าง VLAN ด้วยคำสั่ง “show vlan brief”
show vlan-1
ลองดูรูปด้านล่าง จะเห็นว่า บน Switch มีการสร้าง VLAN 10 ขึ้นมาแล้ว และตอนนี้พอร์ตของ Switch ทุกพอร์ตจะเป็นสมาชิกของ VLAN 1 อยู่ โดย default หมายความว่า ถ้าเราเอา devices มาต่อที่พอร์ต devices เครื่องนั้นก็จะอยู่ใน VLAN 1 ทันที ถ้าเราต้องการจะให้ devices นั้นอยู่ใน VLAN 10 เราจะต้องตั้งค่าพอร์ตนั้นให้เป็นสมาชิกของ VLAN 10 ลองดูที่ขั้นตอนถัดไปครับ
create-vlan-switch
2. นำพอร์ตของ Switch เข้ามาเป็นสมาชิกของ VLAN
Switch# configure terminal
Switch(config)# interface Fa0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
ตรวจสอบด้วยคำสั่ง “show vlan brief”
show vlan-2
จะสังเกตุว่าพอร์ต Fa0/1 จะถูกย้ายเข้ามาเป็นสมาชิกของ VLAN 10 แล้ว
จากรูปด้านล่าง ตอนนี้เรานำพอร์ต Fa0/1 ไปเป็นสมาชิก VLAN 10 แล้ว หมายความว่า ถ้านำ devices ใดๆ มาต่อกับพอร์ต Fa0/1 ก็จะอยู่ใน VLAN 10 และก็จะติดต่อกับเครื่องที่นำมาต่อกับพอร์ต Fa0/2 , Fa0/3 , Fa0/4 ที่อยู่ใน VLAN 1 ไม่ได้แล้วครับ
assign-vlan-switchจบแล้วครับ สำหรับเรื่อง VLAN หวังว่าน่าจะเป็นประโยชน์กับผู้ที่สนใจครับ เจอกันใหม่ในบทความหน้านะคร้าบบบ

มาทำความรู้จักกับ OSI Model 7 Layers กันดีกว่า !!!

มาทำความรู้จักกับ OSI Model 7 Layers กันดีกว่า !!!

การทำงานของระบบเครือข่ายคอมพิวเตอร์ แต่เดิมนั้น การติดต่อสื่อสารกันระหว่างเครื่องคอมพิวเตอร์ ก็จะถูกใช้งานภายใต้ผู้ผลิตเจ้านั้นๆ ยกตัวให้เห็นภาพอย่างง่ายๆ เช่น
– Software ของ Apple ต้องลงบนเครื่อง Apple
– Software ของ Microsoft ต้องลงบน Windows
แบบนี้ เราจะเรียกว่าเป็น Proprietary แปลได้ว่า เป็นของผมแต่เพียงผู้เดียว ทำให้ถ้าเราต้องการที่จะใช้งานหลายๆบริษัทผู้ผลิต (Multi-Vendors) ก็จะไม่สามารถใช้งานร่วมกันได้ (Not Compatible)
จึงมีองค์กรต่างที่มากำหนดมาตรฐานต่างๆขึ้นสำหรับการสื่อสารบนเครือข่าย เช่น IETF , IEEE และอื่นๆ เพื่อให้ผู้ผลิตแต่ละรายนั้นสามารถผลิตอุปกรณ์ พัฒนา software หรือ protocol ได้เป็นไปตามมาตรฐานเดียวกัน และสามารถใช้งานร่วมกันได้

มาพูดถึง OSI Model กันบ้าง

องค์กรมาตรฐานระหว่างประเทศ (The International Organization for Standardization) หรือที่เราเรียกย่อๆว่า ISO (ไอโซ่) ได้พัฒนา Model ของการทำงานบนระบบเครือข่ายขึ้นมาเป็นมาตรฐานกลาง ในปัจจุบันใช้เพื่ออ้างอิงการสื่อสารและเปรียบเทียบการทำงานบนเครือข่าย ผู้ผลิตหลายๆบริษัท ที่ผลิตอุปกรณ์หรือ software ต่างๆขึ้นมาก็จะต้องผลิตตามมาตรฐานที่กำหนดขององค์ที่ดูแลในแต่ละส่วน ซึ่ง Model นี้ก็ถูกนำมาใช้มาเปรียบเทียบเพื่อให้เข้าใจและอธิบายการทำงานของแต่ละส่วน ได้ง่ายขึ้น !!!  ผมยกตัวอย่างของคำว่ามาตรฐานให้ดูง่ายๆครับ เช่น
เวลาขับรถเกียร์ออโต้ เราเข้าไปที่เกียร์ D ก็คือ ไปข้างหน้า เข้าไปที่เกียร์ R ก็ถอยหลัง ไม่ว่าเราจะซื้อยี่ห้อไหนมา ก็จะถูกออกแบบให้เป็นมาตรฐานเดียวกัน
และ Model ที่ผมพูดถึงนี้เรียกว่า Open System Interconnection (OSI) นั่นเอง !!!
อย่างที่ผมบอกนะครับ OSI Model เป็นเพียง Model ที่ใช้อ้างอิงในการสื่อสารเท่านั้น ปัจจุบันโลกเครือข่ายเราใช้งานบน TCP/IP เป็นหลักครับ แต่ที่ยังพูดถึง OSI Model เพราะว่า การแบ่งเป็น Layer ของมันสามารถมองเป็นภาพกว้างของการทำงานบนเครือข่ายในแต่ละส่วนได้ เพื่อมาใช้ในการสอน ในการอธิบาย และในการแก้ปัญหาได้ง่ายขึ้นครับ
ผมจะไม่ย้อนไปพูดถึงประวัติของมันนะครับ


OSI Model ใช้อ้างอิงการสื่อสาร (Reference Model) แบ่งออกเป็นชั้น (Layer) โดยมีตั้งแต่ชั้นที่ 1 ถึงสวรรค์ชั้น 7 (Layer 1 – 7) โดย Layer 1 จะอยู่ด้านล่างสุด และเรียงขึ้นไปจนถึง Layer 7 แต่ละ Layer ก็มีชื่อเรียกตามรูปแบบการสื่อสารและการทำงานของมันในแต่ละชั้นนั่นเอง
osi
บน OSI Model ก็จะแบ่งเป็น 2 กลุ่มใหญ่ คือ
  • ตั้งแต่ Layer 1 – 4 เรียกว่า Lower Layer
  • ตั้งแต่ Layer 5 – 7 เรียกว่า Upper Layer
รูปภาพ 16
โดยส่วน มากเราจะวุ่นวายกันอยู่ที่ Lower Layer มากกว่า Upper Layer ครับ ใครที่ทำงานเป็น Network Engineer จะมองภาพออกครับว่า เราจะยุ่งอยู่กับ Lower Layer มากกว่า

ทีนี้เรามาดูกันว่าในแต่ละ Layer มันมีหน้าที่อะไรบ้าง

Layer 1 (Physical Layer)

เป็น ชั้นล่างสุด จะมีการกำหนดคุณสมบัติทางกายภาพของฮาร์ดแวร์ที่ใช้เชื่อมต่อระหว่าง คอมพิวเตอร์ทั้งสองระบบ เช่น
  • สายที่ใช้รับส่งข้อมูลจะเป็นแบบไหน
  • ข้อต่อที่ใช้ในการรับส่งข้อมูลมีมาตรฐานอย่างไร
  • ความเร็วในการรับส่งข้อมูลเท่าใด
  • สัญญาณที่ใช้ในการรับส่งข้อมูลมีรูปร่างอย่างไร
  • ใช้แรงดันไฟฟ้าเท่าไหร่
ข้อมูลใน Layer ที่ 1 นี้จะมองเห็นเป็นการรับส่งข้อมูลทีละบิตเรียงต่อกันไป
physical-layer-1
จากรูป แสดงถึงการส่งข้อมูลบน Physical layer ครับ แสดงให้เห็นว่า ข้อมูลจะมาเป็นอย่างไรก็ตาม ก็จะถูกแปลงเป็นสัญญาณเพื่อส่งไปยังปลายทาง แล้วฝั่งปลายทางก็จะนำสัญญาณที่รับมาแปลงกลับเป็นข้อมูลเพื่อส่งให้เครื่อง Client ต่อไป
ยังไม่ได้พูดถึงการส่งข้อมูลบน OSI นะครับ เอาไว้รอบหน้า ตรงนี้ผมอยกขึ้นมาเพื่อให้เห็นภาพเบื้องต้น
เพราะ ฉะนั้น อุปกรณ์ต่างๆที่มีความสามารถในการนำพาสัญญาณไป ก็พวก  Card LAN (NIC) , สาย UTP , สาย Fiber หรือพวก เต้าเสียบ หัวต่อต่างๆ RJ45 , RJ11 , RS323 ก็จัดอยู่ใน Physical Layer ครับ

Layer 2 (Data-Link Layer)

เป็นชั้นที่ทำหน้ากำหนดรูปแบบของการส่ง ข้อมูลข้าม Physical Network โดยใช้ Physical Address อ้างอิงที่อยู่ต้นทางและปลายทาง ซึ่งก็คือ MAC Address นั่นเอง รวมถึงทำการตรวจสอบและจัดการกับ error ในการรับส่งข้อมูล ข้อมูลที่ถูกส่งบน Layer 2 เราจะเรียกว่า Frame
ซึ่งบน Layer 2 ก็จะแบ่งเป็น LAN และ WAN ครับ
ซึ่ง ปัจจุบัน บน Layer 2 LAN เรานิยมใช้เทคโนโลยีแบบ Ethernet มากที่สุด ส่วน WAN ก็จะมีหลายแบบแตกต่างกันไป เช่น Lease Line (HDLC , PPP) , MPLS , 3G และอื่นๆ
Ether-Frame
สำหรับ LAN ยังมีการแบ่งย่อยออกเป็น 2 sublayers คือ
Logical Link Control (LLC)
IEEE 802.2 ซึ่งจะให้บริการกับ Layer ด้านบนในการเข้าใช้สัญญาณใน การรับ-ส่งข้อมูล ตามมาตรฐาน IEEE802 แล้ว จะอนุญาตให้สถาปัตยกรรมของ LAN ที่ต่างกันสามารถทำงานร่วมกันได้ หมายความว่า  Layer ด้านบนไม่จำเป็นต้องทราบว่า Physical Layer ใช้สายสัญญาณประเภทใดในการรับ-ส่งข้อมูล เพราะ LLC จะรับผิดชอบในการปรับ Frame ข้อมูลให้สามารถส่งไปได้ในสายสัญญาณประเภทนั้นได้ และไม่จำเป็นต้องสนใจว่าข้อมูลจะส่งผ่านเครือข่ายแบบไหน เช่น Ethernet , Token Ring บลาๆๆ และไม่จำเป็นต้องรู้ว่าการส่งผ่านข้อมูลใน Physical Layer จะใช้การรับส่งข้อมูล แบบใด LLC จะเป็นผู้จัดการเรื่องเหล่านี้ได้ทั้งหมดครับ
Media Access Control (MAC)
IEEE 802.3 ใช้ควบคุมการติดต่อสื่อสารกับ Layer 1 และรับผิดชอบในการรับ-ส่งข้อมูลให้สำเร็จและถูกต้อง โดยมีการระบุ MAC Address ของอุปกรณ์เครือข่าย ซึ่งใช้อ้างอิงในการส่งข้อมูลจากต้นทางไปยังปลายทาง เช่น
จาก ต้นทางส่งมาจาก MAC Address หมายเลข AAAA:AAAA:AAAA ส่งไปหาปลายทางหมายเลข BBBB:BBBB:BBBB เมื่อปลายทางได้รับข้อมูลก็จะรู้ว่าใครส่งมา เพื่อจะได้ตอบกลับไปถูกต้อง นั่นเอง
layer2บน Ethernet (IEEE802.3) เมื่อมันมีหน้าที่ในการรับผิดชอบการรับ-ส่งข้อมูลให้สำเร็จและถูกต้อง มันจึงมีการตรวจสอบข้อผิดพลาดในการส่งข้อมูลด้วย ที่เราเรียกว่า Frame Check Sequence (FCS) และยังตรวจสอบกับ Physical ด้วยว่าช่องสัญญาณพร้อมสำหรับส่งข้อมูลไหม ถ้าว่างก็ส่งได้ ถ้าไม่ว่างก็ต้องรอ กลไลนี่เรารู้จักกันในชื่อ CSMA/CD นั่นเองครับ
CSMA/CD มันก็คือกลไลการตรวจสอบการชนกันของข้อมูล บน Ethernet ถ้าเกิดมีการชนกันเกิดขึ้น มันก็จะส่งสัญญาณ (jam signal) ออกไปเพื่อให้ทุกคนหยุดส่งข้อมูล แล้วสุ่มรอเวลา (back off) เพื่อส่งใหม่อีกครั้ง

Layer 3 (Network Layer)

ทำหน้าที่ส่งข้อมูลข้ามเครือข่าย หรือ ข้าม network โดยส่งข้อมูลผ่าน Internet Protocol (IP) โดยมีการสร้างที่อยู่ขึ้นมา (Logical Address) เพื่อใช้อ้างอิงเวลาส่งข้อมูล เราเรียกว่า IP address ข้อมูลที่ถูกส่งมาจากต้นทาง เพื่อไปยังปลายทาง ที่ไม่ได้อยู่บนเครือข่ายเดียวกัน จำเป็นจะต้องพึ่งพาอุปกรณ์ที่ทำงานบน Layer 3 นั่นก็คือ Router หรือ Switch Layer 3 โดยใช้ Routing Protocol (OSPF , EIGRP) เพื่อหาเส้นทางและส่งข้อมูลนั้น (IP) ข้ามเครือข่ายไป
layer3-1
โดยการทำงานของ Internet Protocol (IP) เป็นการทำงานแบบ Connection-less หมายความว่า IP ไม่มีการตรวจสอบข้อมูลว่าส่งไปถึงปลายทางไหม แต่มันจะพยายามส่งข้อมูลออกไปด้วยความพยายามที่ดีที่สุด (Best-Effort) เพราะฉะนั้น ข้อมูลที่ส่งออกไปแล้วไม่ถึงปลายทาง ต้นทางก็จะไม่รู้เลย ถ้าส่งไปแล้วข้อมูลไม่ถึงปลายทาง ฝั่งต้นทางจะต้องทำการส่งไปใหม่ บน Layer 3 จึงมี Protocol อีกตัวนึงเพื่อใช้ตรวจสอบว่าปลายทางยังมีชีวิตอยู่ไหม ก่อนที่จะส่งข้อมูล นั่นคือ ICMP ครับ แต่ผู้ใช้งานจะต้องเป็นคนเรียกใช้ protocol ตัวนี้เองนะครับ
จริงๆ แล้ว ก็ยังมีรายละเอียดของ ICMP , ARP อีกที่ทำงานบน Layer 3 แต่เบื้องต้น เอาไว้เท่าที่ก่อนละกันครับ สำหรับ Layer 3

Layer 4 (Transport Layer)

ทำหน้าที่เชื่อมต่อกับ Upper Layer ในการใช้งาน network services ต่างๆ หรือ Application ต่าง จากต้นทางไปยังปลายทาง (end-to-end connection) ในแต่ละ services ได้ โดยใช้ port number ในการส่งข้อมูลของ Layer 4 จะใช้งานผ่าน protocol 2 ตัว คือ TCP และ UDP
layer4-1
เมื่อข้อมูลถูกส่งมาใช้งานผ่าน services Telnet ไปยังปลายทางถูกส่งลงมาที่ Layer 4 ก็จะทำการแยกว่า telnet คือ port number 23 เป็น port number ที่ใช้ติดต่อไปหาปลายทาง แล้วฝั่งต้นทางก็จะ random port number ขึ้นมา เพื่อให้ปลายทางสามารถตอบกลับมาได้เช่นเดียวกัน
layer4-2
ทีนี้เรามาดู protocol 2 ตัว ใน Layer 4 กันต่อครับ
Transmission Control Protocol (TCP) มีคุณลักษณะที่สำคัญ ดังนี้
  • จัดแบ่งข้อมูลจากระดับ Application ให้มีขนาดพอเหมาะที่จะส่งไปบนเครือข่าย (Segment)
  • มีการสร้าง Connection กันก่อนที่จะมีการรับส่งข้อมูลกัน (Connection-oriented)
  • มีการใช้ Sequence Number เพื่อจัดลำดับการส่งข้อมูล
  • มีการตรวจสอบว่าข้อมูลที่ส่งไปถึงปลายทางหรือไม่ (Recovery)
บน TCP ก่อนจะส่งข้อมูลนั้นจะต้องทำการตรวจสอบก่อนว่า ปลายทางสามารถติดต่อได้ โดยจะทำการสร้างการเชื่อมต่อระหว่างผู้ส่งและผู้รับก่อน โดยใช้กลไล Three-Way Handshake เพื่อให้แน่ใจว่าข้อมูลที่ส่งจะสามารถส่งถึงผู้รับแน่นอน
layer4-3
นอกจาก Three-Way Handshake แล้ว TCP ยังมีกลไก Flow Control เพื่อควบคุมการส่งข้อมูลเมื่อเกิดปัญหาบนเครือข่ายระหว่างที่ส่งข้อมูลอยู่ หรือ กลไล Error Recovery ในกรณีที่มีข้อมูลบางส่วนหายไปขณะส่ง ก็ให้ทำการส่งมาใหม่ (Retransmission) แต่ผมขอพูดเรื่องกลไลต่างๆไว้เพียงเบื้องต้นละกันนะครับ
นอก จากนั้นยังสามารถทำการจัดสรรค์หรือแบ่งส่วนของข้อมูลออกเป็นส่วนๆ (Segmentation) ก่อนที่จะส่งลงไปที่ Layer 3 อีกด้วย และข้อมูลที่ถูกแบ่งออก ก็จะใส่ลำดับหมายเลขเข้าไป (Sequence number) เพื่อให้ปลายทางนำข้อมูลไปประกอบกันได้อย่างถูกต้อง
User Datagram Protocol (UDP) มีคุณลักษณะที่สำคัญ ดังนี้
  • ไม่มีการสร้าง Connection กันก่อนที่จะมีการรับส่งข้อมูลกัน (Connectionless)
  • ส่งข้อมูลด้วยความพยายามที่ดีที่สุด (Best-Effort)
  • ไม่มีการตรวจสอบว่าข้อมูลที่ส่งไปถึงปลายทางหรือไม่   (No Recovery)
บน UDP จะตรงข้ามกับ TCP เลยครับ เพราะ ไม่มีการสร้างการเชื่อมต่อกันก่อน หมายความว่าถ้า services ใดๆ ใช้งานผ่าน UDP ก็จะถูกส่งออกไปทันทีด้วยความพยายามที่ดีที่สุด (ฺBest-Effort) และไม่มีการส่งใหม่เมื่อข้อมูลสูญหาย (No Recovery) หรือส่งไม่ถึงปลายทางอีกด้วย
ข้อดีของ มันก็คือ มีความรวดเร็วในการส่งข้อมูล เพราะฉะนั้น services ที่ใช้งานผ่าน UDP ก็มีมากมาย เช่น TFTP , DHCP , VoIP และอื่นๆ เป็นต้น
ผมชอบภาพนี้ เพราะเปรียบเทียบการทำงานของ TCP และ UDP ได้เห็นภาพดีเหมือนกันครับ
layer4-4
อ้าวๆๆ เหนื่อยกันหรือยังครับ ผ่านไปแล้ว สำหรับ Lower Layer นะครับ คือ Layer 1 –  4 ซึ่งส่วนมากแล้วชาว Network Engineer ก็จะวุ่นวายกับ Lower Layer มากกว่า Upper Layer (5-7) ซะอีก แต่จะไม่พูดถึงก็ไม่ได้ใช่ไหมครับ ถ้าอย่างนั้นก็ไปดูกันต่อเลยครับ

Layer 5 (Session Layer)

ทำหน้าที่ควบคุมการเชื่อมต่อ session เพื่อติดต่อจากต้นทาง กับ ปลายทาง ลองดูจากรูปตัวอย่างเผื่อจะทำให้เข้าใจง่ายขึ้น (รึเปล่า) 55+
layer5-1
เมื่อฝั่ง ต้นทางต้องการติดต่อไปยังปลายทางด้วย port 80 (เปิด Internet Explorer) ฝั่งต้นทางก็จะทำการติดต่อไปยังปลายทาง โดยการสร้าง session ขึ้นมา เป็น session ที่ 1 ส่งผ่าน Layer 4 โดย random port ต้นทางขึ้นมาเป็น 1025 ส่งไปหาปลายทางด้วย port 80
ระหว่าง ที่ session ที่ 1 ใช้งานอยู่ เราติดต่อไปยังปลายทางอีกครั้งด้วย port 80 (เปิด Google Chrome) ฝั่งต้นทางก็จะทำการสร้าง session ที่ 2 ขึ้นมา ส่งผ่าน Layer 4 โดย random port ต้นทางขึ้นมาเป็น 1026 ส่งไปหาปลายทางด้วย port 80
แล้วแต่ละ session ฝั่งปลายทาง ก็จะตอบกลับมาด้วย port ที่ฝั่งต้นทางส่งมา ทำให้สามารถแยก session ออกได้ เมื่อเราส่งข้อมูลบนเครือข่ายนั่นเองครับ

Layer 6 (Presentation Layer)

ทำหน้าที่ในการแปล หรือ นำเสนอ structure , format , coding ต่างๆของข้อมูลบน application ที่จะส่งจากต้นทางไปยังปลายทาง ให้อยู่ในรูปแบบที่ฝั่งต้นทางและปลายทาง สามารถเข้าใจได้ทั้ง 2 ฝั่ง
ผมอ่านจากเว็บนึงกล่าวไว้ก็เข้าใจง่ายดีนะครับ
Most computers use the ASCII table for characters. If another computer would use another character like EBCDIC than the presentation layer needs to “reformat” the data so both computers agree on the same characters.
เค้าบอก ว่า computer ส่วนมากใช้ ASCII format ถ้าจะติดต่อพวก computer mainframe จะใช้พวก EBCDIC format ซึ่ง Layer 6 ก็จะทำการ reformat ข้อมูล ซึ่งสามารถทำให้ทั้ง 2 เครื่องสามารถเข้าใจ format ข้อมูลที่จะสื่อสารกันได้

Layer 7 (Application Layer)

ทำหน้าที่ติดต่อระหว่างผู้ใช้ (user) กับ application ที่ใช้งานบนเครือข่าย เช่น Web Browser (HTTP) , FTP , Telnet เป็นต้น สรุปแล้วมันก็คือพวก application ที่ใช้งานผ่าน network นั่นเองครับ
จบแล้วครับ สำหรับ OSI Model ผมก็หวังว่า บทความนี้จะทำให้หลายๆท่าน ได้รู้จักและเข้าใจ OSI Model กันไม่มากก็น้อยครับ แล้วเจอกันในบทความต่อไปนะครับ ขอบคุณครับ

Laravel

  Laravel Framework คือ PHP Framework ตัวหนึ่งที่ถูกออกแบบมาเพื่อพัฒนาเว็บแอพพลิเคชั่นต่างๆ ในรูปแบบ MVC (Model Views Controller) ซึ่งมีการแ...