Ethernet Protocol คือมาตรฐานของอะไรในระบบ Computer Network มีที่มาที่ไปอย่างไร มีข้อมูลอะไรอยู่ในนั้นบ้าง เรามาเรียนรู้กันไปด้วยครับ
ในช่วงปี คศ.1945–1952 มนุษย์ได้เริ่มรู้จักกับสิ่งเรียกว่า Computer วันเวลาผ่านไปต่อมาจนถึงช่วงปี คศ.1969 เริ่มมีการพัฒนาระบบที่ทำให้ Computer รับส่งข้อมูลกันได้ โดยการนำ Computer มาเชื่อมต่อกันได้หลายเครื่องเป็นระบบเครือข่ายท้องถิ่น ซึ่งตอนนั้นเราเรียกว่า LAN (Local Area Network)
ในยุคนั้นได้มีการเริ่มวิจัยและพัฒนา Protocol (กลไก,วิธีการในการสื่อสารระหว่างอุปกรณ์) ที่ใช้สำหรับ ให้ Computer รับส่งข้อมูลกันได้เป็นระบบเครือข่ายท้องถิ่น LAN (Local Area Network)
- ในปี คศ.1972 ได้มีการเริ่มวิจัยและพัฒนาระบบเพื่อให้ Computer ทำงานในลักษณะที่นำเชื่อมต่อกันเป็นเครือข่ายท้องถิ่นเพื่อให้รับส่งข้อมูลกันได้ หรือที่เรียกว่า LAN “Local Area Network” โดย Bob Metcalfe และ David Boggs ที่ศูนย์วิจัย Xerox PARC (Palo Alto Research Center)
- ในปี คศ.1976 มาตรฐานนี้ก็เผยแพร่ให้ใช้งานในเวอร์ชั่นแรก มีความสามารถใช้งานเชื่อมต่อกันได้ถึง 100 เครื่อง ทำความเร็วประมาณ 3Mbps
- ในปี คศ.1978 มีการเริ่มต้นวิจัยและพัฒนาร่วมกันของบริษัท DEC, Intel, และ Xerox เพื่อให้ใช้งานระบบ LAN ได้มีประสิทธิภาพมากขึ้น
- ในปี คศ.1980 ระบบ LAN ได้ถูกพัฒนาจนทำความเร็วได้ถึง 10Mbps เป็นมาตรฐานที่เรียกว่า “DIX Ethernet”
- ในปี คศ.1982 มีการปรับปรุงเพิ่มเติมโดยกลุ่มบริษัทเดิม (DEC, Intel, และ Xerox) จนเกิดเป็นมาตรฐานใหม่คือ “Ethernet II” ซึ่งเป็นมาตรฐานหรือ Protocol ที่ถูกใช้อย่างแพร่หลายจนถึงทุกวันนี้
- ในปี คศ.1983 มีสถาบันที่ชื่อว่า IEEE (Institute of Electrical and Electronics Engineers) เป็นสถาบันทางอิเล็กทรอนิกส์และวิศวกรรมไฟฟ้า มีหน้าที่ค้นคว้า,วิจัยและกำหนดมาตรฐานทางด้านการสื่อสาร เพื่อนำมาใช้กับ Software อุปกรณ์ในชั้นสื่อสาร Physical (Layer 1) และ Data Link (Layer 2) IEEE ได้นำ Ethernet II มาพัฒนาต่อ โดยตั้งชื่อโครงการนี้ว่า Project 802
- ในปี คศ.1985 IEEE ได้ออกมาตรฐานขึ้นมาใหม่คือ “IEEE 802.3” มีชื่อมาตรฐานเต็มๆว่า IEEE 802.3 Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications คือ กระบวนการลดการพยายามลดการชนกันของข้อมูล/ของสัญญาณดิจิตอล ก่อนที่จะส่งไปบนสื่อสัญญาณ(ในยุคนั้นก็คือสายโคแอกเชียล) คือ อุปกรณ์จะ “ฟัง” สัญญาณที่วิ่งบนสื่อสัญญาณนั้นๆ (carrier sense) เพื่อตรวจสอบว่ามีการส่งข้อมูลกันอยู่หรือไม่ หากอุปกรณ์ตรวจจับได้ว่าสื่อสัญญาณนั้น มีการใช้งานอยู่ มันจะไม่ส่งข้อมูลของตนเองออกไป หากอุปกรณ์ตรวจจับได้ว่าสื่อสัญญาณนั้น ไม่มีการใช้งานแล้ว มันก็จะทำการส่งข้อมูลออกไปได้
โดยทั้ง 2 มาตรฐานนี้ Ethernet II และ IEEE 802.3 เราเรียกรวมๆว่า Ethernet Protocol เอาไว้ใช้สำหรับการรับส่งข้อมูลกันระหว่าง Node ต่อ Node (Node-to-Node) ตามรูปด้านบน คือเพื่อใช้เชื่อมต่อในลักษณะ LAN (Local Area Network เครือข่ายท้องถิ่น)
มาตรฐาน IEEE 802.3 นี้จะแตกต่างจาก Ethernet II บ้างเล็กน้อย แต่ทั้งสองมาตรฐานนี้ยังสามารถใช้ร่วมกันได้ จากรูปด้านบน อธิบายแต่ละ Field โดยคร่าวดังนี้
- Field : Type ใน Ethernet II จะใช้สำหรับระบุประเภทของ Protocol ที่ถูกบรรจุห่อหุ้ม (Encapsulation) มาใน Field : DATA ซึ่ง Xerox ได้กำหนดค่าตัวเลขที่ใช้บอก Type โดยมีค่าเกิน 1500(ฐาน10) ทั้งหมด เช่น Type ที่จะบุว่าเป็น IPv4 ค่านี้ก็คือ 0x0800(ฐาน16) แปลงเป็นฐาน10 คือ 2048 ซึ่งการกำหนดค่าตัวเลข Type นี้ ได้เปลี่ยนจาก Xerox มาเป็น IEEE ดูแลเมื่อปี 1997
- Field : Legth ใน IEEE 803.2 จะเห็นว่าอยู่ตำแหน่งเดียวกันกับ Type ของ Ethernet II ใช้สำหรับระบุขนาดของ Field : Payload คือ LLC+SNAP+DATA ซึ่งจะมีค่ารวมกันแล้วไม่เกิน 1500 Bytes
- Field : DATA หรือ Payload นั้น ของ Ethernet II จะรองรับข้อมูลจาก Layer ด้านบนที่ถูก Encapsulation ลงมาได้สูงสุดที่ 1500 Byte ส่วน IEEE 802.3 จะรองรับ DATA (Payload) สูงสุดได้ที่ 1492 Bytes
แล้วมาตรฐาน IEEE 802.3 นี้จะรู้ได้อย่างไรว่า Type ที่ถูก Encapsulation จาก Layer 3 ลงมานั้น เป็น IPv4 หรือ ARP หรืออื่นๆ?
จากรูปด้านบน Field : Type จะอยู่ในส่วน Header Field ที่เรียกว่า SNAP จะมี Field : Type ระบุอยู่ ซึ่งข้อกำหนดนี้ถูกระบุในมาตรฐาน IEEE 802.2
ในมาตรฐาน IEEE 802.3 ก็จะมีมาตรฐาน IEEE 802.2 ที่ใช้ระบุข้อกำหนดเพิ่มของ Ethernet Protocol โดยจะมี
- Field : LLC + SNAP เพิ่มเติมเข้ามาด้วย โดย LLC จะทำหน้าที่ Flow control และ Error control ถ้ามองในมุมมอง OSI Model ก็จะอยู่ในเลเยอร์ย่อย (Sub-Layer) เพิ่มขึ้นมาใน Layer2 ตามรูปด้านบน ส่วน SNAP จะทำหน้าที่สำหรับระบุ Type ครับ
ในการรับส่งข้อมูลกันได้ ก็ต้องมีการระบุที่อยู่ ซึ่งใน Ethernet protocol นี้ จึงมีข้อมูลที่มีส่วนสำคัญที่ใช้ระบุที่อยู่ผู้รับและผู้ส่ง โดย Field ที่ว่านี้ก็คือ
- Field : Source Address และ Destination Address ซึ่ง Field ที่ว่านี้มีขนาด 48 บิต และเราจะเรียกมันว่า “MAC addresse” คำว่า MAC มาจากคำว่า Media Access Control จะทำหน้าที่ Multiple access เช่น CSMA/CD (กระบวนการลดการชนกันของข้อมูล) ใน Field : Source Address และ Destination Address จะเก็บข้อมูลที่เรียกว่า
- MAC Address หรือเรียกว่า Hardware address หรือ Physical address มีความยาว 48-bit
รูปแบบการเขียนจะใช้เลขฐาน16 เช่น 74–5D-22–3E-C8–74 เพื่อกำหนดให้กับ Network interface card (NIC) โดยจะไม่ซ้ากัน
จากรูปด้านบน ของข้อมูลแต่ละส่วนของ MAC address จะเห็นว่า 24-bit แรก กำหนดให้เป็นหมายเลขของผู้ผลิต (vendor) เรียกว่าเลข OUI ถูกกำหนดโดยองค์กร IEEE (Institute of Electrical and Electronics Engineers) ส่วน 24-bit หลัง กำหนดให้กับ network interface card (NIC) ผู้ผลิตสามารถกำหนดให้กับอุปกรณ์ตนเองได้เลย สรุปทั้งหมด 48-bit นี้จะระบุให้กับ network interface card (NIC) เป็นเลขที่ไม่ซ้ากัน
รายละเอียดปลีกย่อยเพิ่มเติม ในส่วนของ 8 Bit ด้านซ้ายสุด ในตำแหน่ง 2 bit ขวาสุด(2 bit แรก) สำหรับ bit แรกนั้นจะเป็น bit ที่ระบุว่าจะเป็น Multicast,Boardcast หรือ Unicast และ bit ที่ 2 ก็เป็นการกำหนดว่าให้ใช้ได้ทั่วไป หรือ ใช้ส่วนตัว
MAC address จะมี 3 ประเภท ดังนี้
1. Unicast MAC address จะมี Byte แรกเป็นเลขคู่เสมอ เช่น 02, 04, 06 เป็นต้น เป็นการติดต่อกันแบบ 1-ต่อ-1 (one-to-one) Network Device ได้รับ Ethernet Frame ที่มี Destination MAC เป็น Unicast MAC address ส่งมาตรงกับ MAC Address ของตนเองก็จะรับ Frame นั้นมาอ่านข้อมูล แต่ถ้าไม่ตรงจะทำการ Drop Frame นั้นทิ้งไป
2. Multicast MAC address จะมี Byte แรกเป็นเลขคี่เสมอ เช่น 01, 03, 05 เป็นต้น เป็นการติดต่อกันแบบ 1-ต่อ-กลุ่มที่ต้องการ (one-to-many) ใช้กับ Network Device ที่ต้องการติดต่อกันแบบเป็นกลุ่มในการส่งจากต้นทางในครั้งเดียว ก็จะทำ Multicast MAC address มาใช้กับอุปกรณ์นั้นๆ
3. Broadcast MAC address จะมีทุกๆ Byte เป็น FF หรือทั้งหมด เป็นการติดต่อกันแบบ 1-ต่อ-ทั้งหมด (one-to-all) แม้ว่า Network Device นั้นไม่มี MAC Address ของตนเองเป็น FF ก็ตาม แต่เมื่อมี Ethernet Frame ที่ระบุ Destination MAC address ที่เป็น Boardcast ส่งมาแล้ว ก็จะรับ Frame นั้นมาอ่านข้อมูลเสมอ
ข้อมูลทั้งหมดใน Ethernet Frame ก่อนจะถึงส่วนของ Field : DATA (Payload) จะเป็นส่วนของ Dest.MAC + Src.MAC + Type/Length รวมกันจะมีขนาด 14 Bytes โดยเราจะเรียกทั้ง 3 ส่วนนี้ว่า Ethernet Header , Frame Header , Layer 2 Header , Data Link Header แล้วแต่จะสะดวกเรียก ถ้าเจอในตำราเล่มไหน หรือจากบทความไหน ก็ให้เข้าใจว่าคือสิ่งเดียวกันครับ
- Field : Data หรือ Payload คือส่วนที่บรรจุข้อมูลที่ถูกห่อหุ้ม (Encapsulation) มาจาก Layer บน (Upper Layer) ลงมา จะเห็นว่ามีขนาดไม่เกิน 1MTU=1500Bytes คือ ถ้าถอด Frame Ethernet หรือเรียกว่า De-Encapsulation ออกมา ก็จะเห็นข้อมูล Header ของ IP Packet (Network Layer 3)
ส่วน Field คือที่อยู่ท้ายสุดของ Ethernet Frame คือ
- Field : FCS (Frame Check Sequence) หรือที่เรียกอีกชื่อว่า Check Sum เอาไว้ใช้สำหรับเป็นข้อมูลเพื่อตรวจสอบความถูกต้องของข้อมูล ที่ถูกรับส่งผ่านเครือข่าย โดยใช้วิธีการ CRC (Cyclic Redundancy Check) เพื่อสร้างค่าตรวจสอบที่เกี่ยวข้องกับข้อมูลใน Frame นั้นๆ ค่า FCS ที่ได้จะถูกเพิ่มเข้าไปในส่วนท้ายของ Ethernet frame ก่อนที่จะถูกส่งไปยังเครือข่าย เมื่อถึงปลายทาง ผู้รับข้อมูลจะทำการคำนวณหาค่า FCS เช่นกัน จากข้อมูลทั้งหมดใน Frame ที่ได้รับ (รวมถึงค่า FCS ที่ถูกส่งมาด้วย) โดยใช้วิธีการ CRC เดียวกัน ถ้าค่า FCS ที่ถูกคำนวณไม่ตรงกับค่า FCS ที่ถูกส่งมา จะถือว่ามีข้อผิดพลาดในข้อมูลที่ถูกส่ง และ Frame นั้นจะถูก Drop ทิ้งทั้งหมด
ตามชั้นของการสื่อสารตาม OSI Model การทำงานของมาตรฐาน Ethernet นั้นจะอยู่ในลำดับชั้นของการสื่อสาร คือ Layer 2 (Data-Link Layer) ข้อมูลที่ใช้รับส่งกันนี้ เราจะเรียกมันว่า Layer 2 Frame หรือ “Ethernet Frame” ก็ได้ ซึ่งคำว่า Frame ก็คือชื่อหน่วยของข้อมูลใน Layer2 ครับ
ถึงตรงนี้ เราก็รู้คร่าวๆกันแล้วนะครับว่า Ethernet Frame มีข้อมูลอะไรอยู่บ้าง ทีนี้ แล้วเค้ารับส่งข้อมูลอย่างไร?
ถ้าตาม OSI Model ข้อมูลจะถูก Encapsulation (ห่อหุ้ม) จนถึง Layer 2 ออกมาเป็นสิ่งที่เรียกว่า Frame และส่งเป็นสัญญาณดิจิตอล ผ่านตัวกลางที่เรียกว่า สื่อสัญญาณ (Media) ต่างๆ ซึ่งเราเรียกชั้นของการสื่อสารนี้ว่า Physical Layer หรือ Layer 1 ตามรูปด้านบน
ก่อนที่จะส่ง Frame ออกไปจะมี Field ที่เรียกว่า Preamble ขนาด 8 Bytes ก่อนที่จะถึงส่วนของ Ethernet Header ใช้สำหรับบอกจุดเริ่มของ Frame ใช้เพื่อให้ฝั่งรับทำการล็อคไว้เพื่อเทียบจังหวะสัญญาณนาฬิกาของตนเองกับฝั่งส่งให้ตรงกัน หรือเรียกว่าการทำ Clock Synchronize แต่ก่อนจะถึงส่วนของ Preamble จะมีส่วนที่เรียกว่า IFG (Interframe Gap) เป็นช่วงเวลาของการรอที่จะเริ่มส่ง Frame ถัดไป IFG นี้มีขนาด 12 Bytes (96 Bits) ซึ่ง Frame ถัดไปจะมาถึงช้าหรือเร็ว ก็ขึ้นอยู่กับ Bandwidth ของสื่อสัญญาณ ดังนี้
10Mbps Ethernet 9.6 μsec
100Mbps Ethernet 0.96 μsec
1Gbps Ethernet 96ns
10Gbps Ethernet 0.96ns
สรุปแล้วในส่วนของ IFG + Preamble จะเป็นการทำงานในชั้นของการสื่อสาร Physical Layer 1
ข้อมูลในส่วน Preamble ที่ส่งออกไปจะเป็น 1010101… ถ้าใน IEEE 802.3 จะมี 1 Byte สุดท้ายก่อนถึง Ethernet Header เรียกว่า SFD (Start Frame Delimiter) มีข้อมูลเป็น “10101011” เป็นการระบุเพิ่มเติมว่า จะถึงส่วนของ Ethernet Frame แล้วนะ ส่วนของ Ethernet II ในส่วนของ Preamble เป็น 101010.. จนครบ 64 Bits (8 Bytes)
Network Interface จะรู้ได้อย่างไร ว่า Ethernet Frame ที่ตนเองได้รับมาเป็นมาตรฐานอะไร? เป็น Ethernet II หรือ IEEE 802.3
เมื่อ Network Interface ได้รับ Ethernet Frame ก็จะพบ Field ที่มีขนาด 2 Bytes เป็น Field ที่ถัดจาก Field 6 Bytes ที่เป็น Source MAC
ถ้าค่าใน Field 2 Bytes แรกนี้ มีค่ามากกว่า 1500(ฐาน10) นั่นคือ Ethernet Frame นี้เป็นมาตรฐาน Ethernet II (เนื่องจาก Xerox ได้กำหนดค่า Ethernet Type เกิน 1500 ไว้ทั้งหมดในยุคเริ่มแรกของการวิจัย) แต่ถ้า Field 2 Bytes แรกนี้มีค่า น้อยกว่า หรือ เท่ากับ 1500(ฐาน10) นั่นคือ Ethernet Frame นี้เป็นมาตรฐาน IEEE 802.3
แต่ก็มีข้อกำหนดเพิ่มเติมอีกด้วยว่า ใน Ethernet Frame เราไม่สามารถที่จะส่ง DATA (Payload) ที่มีขนาดน้อยกว่า 46 Bytes ได้ เช่น หากมีการส่งข้อมูล (Payload) ที่มีนาด 1 Bytes ก็จะมีกระบวนการที่เรียกว่า Padding คือจะเติม 0 ไป 45 Bytes + 1Bytes ข้อมูลที่จะส่ง ก็จะเท่ากับ 46Bytes ข้อมูลขั้นต่ำครับ
เพราะว่าในยุคนั้นความยาวสูงสุดของสายเคเบิลจะอยู่ที่ 2.5 km. และความเร็วรับส่งสูงสุดตอนนั้นอยู่ที่ 10Mbps ในกระบวนการ CSMA/CD หรือ ตรวจจับการชนกันของข้อมูล (ซึ่งกระบวนการ CSMA/CD นี้ก็มีใน Ethernet II ด้วย และ IEEE 802.3 ก็มาระบุข้อกำหนดเพิ่มเติม) คือเมื่อระยะสายยาวขึ้นก็ต้องใช้เวลาในการตรวจสอบสอบมากขึ้น ดังนั้นจึงเกิดเป็นช่วงเวลามาตรฐานที่จะต้องใช้ช่วงระยะเวลา 512 Bits ก็คือขนาดของ Ethernet Frame ต้องมีขนาดขั้นต่ำคือ 64 Bytes นั่นเอง ถ้าน้อยกว่านี้จะไม่สามารถตรวจสอบการชนกันของข้อมูลได้ก่อนที่ข้อมูลจะถึงปลายทาง เช่น เคเบิลยาว 2.5km แล้วเราส่งข้อมูล 1 Bytes กว่าจะส่งปลายทาง แต่ CSMA/CD ใช้เวลาเพียง 8 Bits ในการฟังสัญญาณ(Carrier Sense)จาก Host อื่นๆ คือฟังไม่นานก็สรุปแล้วว่าไม่ชน ทั้งๆที่ระยะเวลา 8 Bits นั้น Host อื่นๆที่ส่งสัญญาณมา อาจชน(Collision)กับสัญญาณที่เราส่งออกไปแล้ว แต่สัญญาณจาก Host อื่นนั้น ยังมาไม่ถึงเราให้เราตรวจจับ(Detection)ได้ ฉะนั้นเราต้องมีเวลามากพอในการตรวจจับ(Detection) ดังนั้นถ้า Ethernet Frame มี DATA ใน Payload ที่น้อยกว่า 46 Bytes ก็ต้องทำการ Padding ให้ครบ 46 Bytes และจะไปรวมกับ Ethernet Header 14 Bytes และ FCS อีก 4 Bytes ก็จะเท่ากับ 64 Bytes นั่นเอง ก็จะใช้กระบวนการ CSMA/CD นี้ได้อย่างได้ผลนั่นเอง
กระบวนการของ CSMA/CD ผมจะอธิบายคร่าวๆ เพิ่มเติมดังนี้ครับ
ในช่วงแรกของการใช้ Ethernet protocol จะใช้งานผ่านสายโคแอกเชียล และมี Computer มาเชื่อมต่อกันโดยผ่านสายเส้นเดียวกัน ในโครงข่ายแบบ Bus หรือที่เรียกว่า Bus Tolopogy เนื่องจากมีหลายเครื่องเชื่อมต่อกับสายเคเบิลเส้นเดียวกันนี้ จึงมีความเป็นไปได้ที่แต่ละเครื่องจะส่งสัญญาณพร้อมกัน เมื่ออุปกรณ์สองเครื่อง (หรือมากกว่า) ส่งพร้อมกัน การส่งสัญญาณเหล่านั้นจะชนกันและข้อมูลจะสูญหาย
ดังนั้นจึงต้องมีกระบวนการที่เรียกว่า CSMA/CD การทำงานคร่าวๆจะเป็นดังนี้ครับ
1. Carrier Sense คือ Host แต่ละ Host จะ “ฟัง” สัญญาณที่วิ่งบนสื่อสัญญาณนั้นๆ เพื่อตรวจสอบว่ามีการส่งข้อมูลกันอยู่หรือไม่ หากอุปกรณ์ตรวจจับได้ว่าสื่อสัญญาณนั้น มีสัญญาณอยู่ มันจะไม่ส่งข้อมูลของตนเองออกไป หากไม่มีการใช้งานแล้ว มันก็จะทำการส่งข้อมูลออกไปได้ เมื่อส่งออกไปแล้ว มันก็จะฟังสัญญาณของตัวเองที่ส่งออกไปด้วย หากไม่มีการชนกันมันก็ฟังสัญญาณของตนเองได้ด้วยอย่างถูกต้อง
2. Multiple Access คือ เมื่อ Host แต่ละ Host มีการส่งสัญญาณหลาย Host พร้อมกัน ไล่เลี่ยกัน เช่น Host A ก็ส่ง และ Host C ก็ส่ง
3. Collision คือ สัญญาณหรือข้อมูลของ Host A และ Host C นั้นเริ่มชนกันแล้ว
4. Collision Dection คือ Host A ตรวจจับสัญญาณบนสื่อสัญญาณได้ว่า มีสัญญาณเข้ามาในขณะที่ตนเองกำลังส่งสัญญาณออกไปยังไม่เสร็จ นั่นคือ Host A ทราบว่าสัญญาณหรือข้อมูลนั้นชนกันแล้ว Host A จะทำการหยุดส่งทันที และทำการส่งสัญญาณ ที่เรียกว่า JAM เพื่อให้ Host อื่นๆบน Segment เดียวกันทราบว่ามีการชนกันเป็นผลให้ทั้ง Host A และ Host C จะหยุดส่งสัญญาณหรือข้อมูลนั้นทันที และทุก Host บน Segment เดียวกันนั้น ก็จะสุ่มช่วงเวลาใหม่ และจะส่งสัญญาณหรือข้อมูลนั้นใหม่อีกครั้ง
จะเห็นว่ายิ่งจำนวน Host บน Segment เดียวกันมีจำนวนมาก ก็มีโอกาสเกิดการชนกันของสัญญาณมากขึ้น จนถึงปัจจุบันกระบวนการ CSMA/CD ไม่ค่อยได้ใช้แล้วเพราะเรามีอุปกรณ์ที่เรียกว่า Switch ไว้ใช้งานเป็นตัวกลาง สำหรับบทความเกี่ยวกับ Switch อ่านได้ในลิงค์นี้ได้เลยครับ -> https://medium.com/@akenetjpk/dbff0f575bc3
โดยสรุปแล้ว Ethernet II ได้รับความนิยมสูงมาก เพราะสามารถระบุ Protocol (Type) เพื่อที่จะรองรับ Payload จาก Upper Layer เพื่อใช้งาน IP Protocol(Layer3) ได้ เพราะการจะใช้งาน IP Protocol เพื่อการติดต่อแบบ Host-to-Host ได้นั้นต้องใช้ ARP Protocol ก่อน ซึ่ง Type ของ ARP Protocol ก็คือ 0x806 (2054ฐาน10)
ดังนั้นในยุคนั้น จึงไม่นิยมที่จะใช้ IEEE 802.3 เพราะ IEEE 802.3 ที่มี Fileld LLC ไม่สามารถที่จะระบุ Type ARP ได้ กว่าที่ IEEE 802.3 จะระบุ Type ได้ ก็ต้องรอจนมีมาตรฐาน IEEE 802.3 with SNAP ที่มี Field Type เพิ่มขึ้นมา ซึ่งอุปกรณ์ Network Interface ต่างๆในยุคนั้นก็นิยมที่จะใช้ Ethernet II กันอย่างแพร่หลายแล้ว ไม่อยากที่จะเปลี่ยน Network Interface ใหม่ จนถึงปัจจุบันนี้มาตรฐาน Ethernet II ก็ยังมีใช้อยู่จนถึงทุกวันนี้
จากยุคแรกที่ใช้งานกันแบบ Bus , Ring หรือ Star topology และอื่นๆ ยุคถัดมา ก็มีอุปกรณ์เข้าช่วยเป็นตัวกลาง เพื่อเชื่อมต่อคอมพิวเตอร์ได้ง่ายขึ้น มีอุปกรณ์ตัวกลางขึ้นมาคือ Hub , Bridge และถึงปัจจุบันเราใช้อุปกรณ์ที่เรียกว่า Switch (ลักษณะการทำงานของ Hub,Bridge และ Switch อ่านได้ในบทความนี้ได้เลยครับ -> https://medium.com/@akenetjpk/dbff0f575bc3) และเปลี่ยนสื่อสัญญาณจากสาย Coaxial เป็นสาย UTP(สายทองแดงคู่ตีเกลียว) หรือที่เรียกกันว่าสาย LAN และ Fiber optic (สายใยแก้วนำแสง) จนถึงสัญญาณวิทยุ (Wirless ไร้สาย) ทำให้ได้ความเร็วมากขึ้นเป็น 100Mbps , 1Gpbs , 10Gbps จนถึง 100Gbps เกิดเป็นมาตรฐาน IEEE 802.xxx เพื่อใช้งานกับสื่อสัญญาณต่างๆมากขึ้นจากยุคแรก
เราลองมาดูข้อมูลคร่าวๆใน Ethernet Frame โดยใช้โปรแกรม WireShark Packet capture กันครับ
เมื่อใช้โปรแกรม WireShark ดูข้อมูลจะเห็นข้อมูลใน Frame ชุดนี้เป็นข้อมูล DNS
ติดต่อกันแบบ Process-to-Process โดยใช้ UDP ใน Layer 4 และระบุ Host-to-Host ด้วย IPv4 ใน Layer 3 ถูกห่อหุ้ม (Encapsulation) มาถึง Layer 2 เพื่อให้ติดต่อกันได้แบบ Node-to-Node โดยใช้ Ethernet II protocol ซึ่งมีขนาด Ethernet Header = 14 Bytes
เราก็จะเห็นว่าใน Ethernet Header มีข้อมูล Dst.MAC , Src.MAC และ Type คือ 0x0800 ก็คือเป็นการบอกว่า ใน Layer ด้านบน(Upper Layer) ที่ขนข้อมูลมาใน Payload นั้น เป็น IPv4 protocol และ Ethernet Frame นี้มีขนาดทั้งหมด 255 Bytes จะถูกส่งไปในสื่อสัญญาณ Physical Layer (Layer 1) ซึ่งถ้านำขนาดทั้งหมด 255 Bytes ลบด้วย Ethernet Header 14 Bytes จะได้ 241 Bytes ซึ่งก็ไม่เกิน 1500 Bytes ของขนาด Payload สำหรับมาตรฐาน Ethernet II
สำหรับบทความนี้ผมขอจบไว้เพียงเท่านี้ หากมีข้อผิดพลาดใด รบกวนคอมเม้นท์เพื่อให้ผมทำการแก้ไขได้ครับ ขอบคุณครับ
References:
- https://www.freecodecamp.org/news/the-complete-guide-to-the-ethernet-protocol/
- https://www.oreilly.com/library/view/ethernet-the-definitive/9781449362980/ch04.html
- https://forum.huawei.com/enterprise/en/Ethernet-and-IEEE-802-- Encapsulation/thread/667233344464764928–667213871523442688
- https://www.certificationkits.com/cisco-certification/cisco-ccna-640-802-exam- certification-guide/cisco-ccna-ethernet-technologies-part-i/
- https://www.macnica.co.jp/en/business/semiconductor/articles/microchip/135075/
- https://www.nctatechnicalpapers.com/Paper/2001/2001-hub-bridge-switch-router-defining-the-functions-of-these-different-devices/download
- https://arxiv.org/pdf/1610.00635