Ethernet และ UTP Cable คืออะไร ? มันมี Noise ในระบบได้ด้วยอ่อ ?

เมื่อหลายวันก่อน เราได้เจอสิ่งที่น่าตกตะลึงบนโลกอินเตอร์เน็ตในประเทศไทย ตกตะลึงจนต้องย้อนกลับไปอ่านหนังสือ Data Communication ที่ใช้ตอนเรียนและบอกเลยว่าไม่ตรงคือ เรียกได้ว่า รื้อตำราเรียนทุกเล่มบนโลกทิ้งไปได้เลย สาย Computer Network ต้องร้องเ_ย อึ้งกันทั้งวงการ คือ สาย LAN แบบ Audiophile Grade อ่านไม่ผิดครับ ลองไปหาดูได้ มันมียัน Switch Audiophile Grade ที่รวม ๆ เดินระบบสักเสี้ยวนึง ราคาน่าจะเดิน 10G ไม่ก็ 25G ได้ทั้งระบบเลย เกี้ยวกราดมาก ๆ ทำให้เราอยากจะมาเล่าถึง Ethernet ทั้งในส่วนที่เป็น Physical และ Data Link Layer มันมันทำงานยังไง มันมี Protocol อะไรรองรับบ้าง

Ethernet คืออะไร ?

Ethernet หรือถ้าเอาตามมาตรฐาน IEEE เราจะใช้ว่า IEEE 802.3 เป็นมาตรฐานที่ IEEE กำหนดขึ้นมาเพื่อให้เป็นมาตรฐานของ Ethernet นั่นเอง โดยถ้าเรามองจาก OSI Model ตัวมาตรฐาน IEEE 802.3 จะคุมอยู่ที่ Layer 1 และ 2 คือ Physical Layer และ Data Link Layer

ซึ่งภายในมาตรฐาน 802.3 นั้นก็จะมีมาตรฐานย่อย ๆ ที่ถูกพัฒนาขึ้นมาเรื่อย ๆ ถ้าเราไปย้อนดูจริง ๆ น่าจะเริ่มต้นที่ราว ๆ ปี 1983 กันไปเลย ถึงตอนนี้ปี 2021 ก็ผ่านมา 38 ปีแล้ว นานกว่าอายุเราอี๊กกก ตัวมาตรฐานมันก็จะไล่ลงไปตั้งแต่ 802.3a ลงไปเรื่อย ๆ จนถึงมาตรฐานที่ Purpose ขึ้นมาล่าสุดคือ 802.3dd ที่ตอนนี้ยังไม่ได้ใช่ จริง ๆ เป็นเรื่องปกตินะที่มันจะมีการ Purpose ออกมาแล้วแล้วค่อยไล่ออกเป็นมาตรฐานตัวเต็มทีหลัง อารมณ์เดียวกับพวก HTTP/1.1 ไป HTTP/2.0 ที่ก่อนหน้าก็เป็นแค่ Purposed เท่านั้น แต่ตอนนี้ก็ออกมาเป็นมาตรฐานตัวเต็มให้เราใช้งานกันแล้ว

Network Upgrade (อีกแล้ว) เดิน Fibre Optics กับมี 10G Link แล้วจ้าาาาา
วันนี้เราเปลี่ยนมาใช้ Fibre Optics แล้วที่ทำความเร็วได้ถึง 10 เท่าจากของเดิมเลย จะเป็นยังไง มันคืออะไร ลองมาดูกัน

แต่การเรียก IEEE 802.3....  บางทีมันอาจจะยากไปหน่อย เราอาจจะเคยได้ยินพวกคำว่า 100BASE-TX (FE) หรือ 1000BASE-T (GbE) ถ้าเราลองแยกส่วนประกอบของตัวเลขออกมา ตัวเลขชุดแรกจะเป็นความเร็วสูงสุดที่มันทำได้ คือ 100 และ 1,000 ในหน่วย Mbps (Megabit Per Second)  ส่วนคำว่า BASE เป็นการบอกว่า เราจะใช้การส่งสัญญาณแบบ Baseband (สั้น ๆ คือ เป็นการส่งสัญญาณแบบที่เราจะใช้ตัวกลางเต็มในการส่งข้อมูล 1 อย่าง อุปกรณ์อื่น ๆ ไม่สามารถมาใช้งานได้พร้อม ๆ กันในเวลาเดียวกัน) และสุดท้ายคือ T ย่อมาจากคำว่า Twisted Pairs เดี๋ยวเรามาคุยกันว่าสายนี้มันเป็นยังไง นอกจาก T เฉย ๆ แล้วมันยังมีพวก CX, LX, SX และ LH อีก พวกนี้จะเป็นตัวกลางอื่น ๆ ละเช่นพวก Fibre Optics ถ้าอยากรู้ว่า Fibre Optics เป็นยังไงลองอ่านจากบทความด้านบนที่เราเคยเดินสาย Fibre Optics ได้

ปล. B เราใช้แทน Byte และ b เราจะใช้แทน Bit (1 Byte = 8 Bits) ในระบบ Network เวลาเราพูดถึงความเร็ว เราจะใช้หน่วยเป็น Bit/s (bps) แต่ถ้าเราพูดถึงความเร็วของ Protocol ในการโอนถ่ายข้อมูลเช่น USB เราจะใช้หน่วยเป็น Byte/s ทำให้ 1000 Mbps ไม่เท่ากับ 1,000 MBps (หรือเขียนว่า 1,000 MB/s ก็ได้)

ส่วนใหญ่แล้ว ณ วันที่เขียนจริง ๆ เราก็จะใช้กันอยู่หลัก ๆ ที่ใช้กันตามบ้านทั่ว ๆ ไปจะ 2 มาตรฐานด้วยกันคือ 100BASE-TX หรือเรียกว่า Fast Ethernet (ส่วนใหญ่ตอนนี้ใช้กับกล้องวงจรปิดซะเยอะ) และ 1000BASE-T หรือเรียกว่า Gigabit Ethernet และบ้านที่โหด ๆ หน่อยก็อาจจะรันเป็นพวก 10GBASE-T หรือ 10 Gigabit Ethernet ทำให้วันนี้เราจะมาโฟกัสที่ 3 มาตรฐานเหล่านี้กัน

Physical Layer

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

ใน 3 มาตรฐานนี้ จะกำหนดให้ Physical Layer เป็นสายแบบ TP (Twisted-Pairs) ซึ่งถ้าเราไปเดินซื้อสายจริง ๆ เราสามารถแบ่งเป็น สายแบบ UTP (Unshield Twisted-Pairs) และ STP (Shielded Twisted Pair) สาย 2 แบบนี้แตกต่างกันที่สายแบบ STP จะมีการหุ้มฉนวนไว้ที่แต่ละ Twisted Pair เพื่อป้องกันสัญญาณรบกวนของแต่ละสายข้างใน ซึ่งตัวสายเอง มันก็จะมีมาตรฐานของมันเองอีก ที่เราเรียกกัน CAT อะไรนั่นแหละ ไม่ใช่แปลว่าแมว แต่มันย่อมาจากคำว่า Category โดยที่มันจะไล่เลขมาเรื่อย ๆ แต่สายที่เราใช้กันอยู่ตอนนี้จะเริ่มต้นที่ CAT5, CAT5e, CAT6, CAT6a และถ้ารวย ๆ หน่อยก็ CAT8 (CAT7 มันไม่ค่อยมีคนใช้เท่าไหร่ ไม่พูดถึงละกัน) ซึ่งแต่ละตัวมันก็จะมีความไม่เหมือนกันในคุณสมสมบัติต่าง ๆ อยู่ สำหรับเรื่องของ UTP/STP ถ้าจำง่าย ๆ เลยอะไรที่ก่อน CAT7 จะเป็น UTP หรือ STP ได้ทั้งหมด แต่ถ้าเป็นตั้งแต่ CAT7 ขึ้นไปจะเป็นสายแบบ STP ทั้งหมด สำหรับตามบ้านทั่ว ๆ ไปแล้วเราจะเริ่มใช้ที่ CAT5e ขึ้นไปเป็นหลัก ไม่ค่อยมี CAT5 เยอะมากแล้ว เราเคยเขียนรายละเอียดเต็ม ๆ และวิธีการเข้าหัวไว้แล้วที่ Link ด้านบนได้เลย

อย่างตัวอย่างที่เราเอามาให้ดูวันนี้เป็นสายที่เราใช้งานในบ้านเราเอง เป็นสายแบบ CAT6 UTP เราอาจจะเห็นมันมีหลาย ๆ สีก็ไม่ได้มีความหายอะไรเลย มันเอาไว้ให้เรา Label เฉย ๆ นะทุกสีเหมือนกันหมด อย่างที่เราเอามาเป็นสีน้ำเงิน น่าจะเป็นมาตรฐานแล้วละ หรือถ้าใช้สี.... จะกลายเป็นเครื่องคนดีทันที

ถ้าเราปลอกสายออกมา เราจะเจอกับสายที่พัน ๆ กันอยู่และมีแกนพลาสติกอยู่ตรงกลาง ตัวแกนทำให้สายแข็ง และคงทนต่อการหักงอมากขึ้น ถ้าเราลองไปซื้อพวกสาย CAT5 ส่วนใหญ่จะไม่มีแกนพลาสติกสักเท่าไหร่ แล้วแต่สายแหละ ถ้าเราลองคลี่ออกมา เราจะเห็นว่ามันเป็น 4 เปียแยก ๆ กัน แบ่งเป็น 4 สีคือ สีส้ม เขียว น้ำเงิน และ น้ำตาล

ส่วนถ้าเป็นสายแบบ STP ที่แต่ละเปียมันจะมีพวก Foil มาหุ้มอีกทีนึง เพื่อป้องกันสัญญาณรบกวนด้วย ทำให้สายแบบ STP จะมีความสามารถในการส่งสัญญาณที่ความถี่สูง ๆ ได้ ทำให้นำไปสู่ Data Rate หรือความเร็วในการส่งข้อมูลมากขึ้นนั่นเอง ตัวอย่างเช่นสายแบบ CAT6 ที่ใช้สายแบบ UTP จะสามารถส่งสัญญาณได้ที่ความถี่ 250 MHz แต่พอเราโดดไปเล่นพวก CAT6a ที่เป็นแบบ STP เราจะส่งได้ถึง 500 MHz หรือ 2 เท่าของสายรุ่นก่อนหน้าเลย จะเห็นได้เลยว่าการใช้สายแบบ STP ทำให้เราสามารถใช้ความถี่ที่สูงขึ้นได้ แต่ก็ขึ้นกับมาตรฐานของสายด้วยเช่นกัน​ (สาเหตุที่ทำให้สายแบบ STP มันทำงานบนความถี่สูง ๆ ได้คือฉนวนมันทำให้ Crosstalk ในสายลดลง ไปหาอ่านเพิ่มได้)

สำหรับคนที่อาจจะ งง เรื่องของ Hz นิยามของมันก็คือ 1 วินาที เราเปลี่ยนกี่ครั้ง อธิบายให้ง่ายขึ้น 20 Hz คือ ใน 1 วินาที เราส่งข้อมูลได้ 20 ชิ้น

สำหรับหัวจริง ๆ แล้ว ถ้าเราใช้งานสาย TP ส่วนใหญ่แล้วเราจะใช้หัวที่เรียกว่า RJ45 หรือ Registered Jack 45 หรือที่บ้าน ๆ เราเรียกว่าหัวแลนแหละ

ถ้าเราเอามาตรฐานของสายไปเทียบลงกับมาตรฐานของ Ethernet เราต้องมาดูที่ความเร็วสูงสุดของ มาตรฐานนั้น ๆ เช่น FE ส่งได้ 100 Mbps ก็คือสายไหนที่วิ่งได้สุงสุดที่ 100 Mbps ก็จะใช้ส่งบนมาตรฐาน FE ได้ หรือ GbE เองก็จะเป็นสาย CAT ไหนก็ได้ที่ส่งข้อมูลได้เร็วสุดที่ 1 Gbps ซึ่งก็คือ CAT5e ขึ้นไปนั่นเอง แค่ว่า ความยาวที่ได้ 1 Gbps มันก็จะไม่เท่ากัน เช่น CAT5e กับ CAT6 มันส่ง Data Rate ได้สูงสุดที่ 1 Gbps เท่ากันก็จริง แต่ CAT5e ส่ง 1 Gbps ได้บนสายยาวไม่เกิน 10 เมตรเท่านั้นแต่ CAT6 สามารถส่งได้ถึง 100 เมตรบน 1 Gbps Data Rate ไปเลย

อีกส่วนของมาตรฐานนอกจาก Physical Layer ก็จะเป็นฝั่งของ Data Link Layer ที่ควบคุมการส่งข้อมูลกันแล้ว โดยพื้นฐาน Ethernet จะมีการส่งข้อมูลหน่วยเป็น Frame โดยที่ 1 Frame จะมีขนาดแตกต่างกัน แต่โดยส่วนใหญ่แล้วถ้าเราใช้งานทั่ว ๆ ไป มันจะอยู่ที่ 1,522 Byte ต่อ Frame ยกเว้นกรณีที่เป็นพวก Jumbo Frame

โดยที่ในแต่ละ Frame น้องเขาจะประกอบไปด้วย 6 ส่วนด้วยกัน เริ่มจากหัวสุดก่อนเลย จะเป็น MAC Source และ MAC Destination หรือก็คือ MAC Address ของ ต้นทาง และ ปลายทาง ซึ่งจะใช้ชิ้นละ 6 Bytes หรือ 48-bits ตามมาตรฐาน (ใน Layer 2 เราจะอ้างอิงที่อยู่ด้วย MAC Address ส่วน IP Address จะอยู่บน Layer 3 แปลงผ่าน ARP) ส่วนต่อไปขนาดที่ 4 Bytes ถ้าเราเข้าไปหาเขาจะเขียนว่า IEEE802.1q อันนี้มันเป็นสิ่งที่เรียกว่า VLAN Tag ลองไปหาอ่านเรื่องของ VLAN ได้ ส่วนต่อไปขนาด 2 Bytes จะเป็น Ethernet Type เพื่อบอกว่า Packet ที่เรากำลังส่งอันนี้มันคืออะไร เช่น 0x0842 เป็น Wake on Lan ส่วนต่อไปเป็นตัวสำคัญแล้วคือ Payload หรือข้อมูลที่ส่ง และสุดท้ายเราเรียกว่า Frame Check Sequence หรือเป็นส่วนที่ใช้ในการตรวจสอบความถูกต้องของข้อมูลที่ปลายทาง โดยที่ใน Ethernet เราจะใช้ 32-bits CRC ในการตรวจสอบ (เดี๋ยวมาเล่าว่า CRC ทำงานยังไง ทำไมถึงเช็คข้อมูลได้)

ที่เราไม่พูดเรื่องขนาดของ Payload เพราะเราสามารถกำหนดขนาดของมันได้ด้วยผ่านค่าที่เรียกว่า MTU (Maximum Transmittion Unit) โดยทั่วไป เรากำหนดไว้ที่ 1,500 MTU แต่เราสามารถกำหนดให้เล็กกว่านั้นก็ได้เช่นกันต่ำสุดที่ 64 หรือถ้ามากกว่า 1500 เราจะต้องไปลองดูพวกเรื่องของ Jumbo Frame ที่เราสามารถยัดเข้าไปได้ถึง 9,000 Bytes ต่อ Frame ได้เลย

สาระน่ารู้ สาเหตุที่การทำ Jumbo Frame จริง ๆ คือ เราต้องการที่จะลด Overhead ให้น้อยลง เรารู้อยู่แล้วว่า การส่งครั้งนึงมันมีต้นทุนอยู่แล้วทั้งเรื่องขนาดและเวลาในการวิ่งไปมา ดังนั้นการยัดของเพิ่มมากขึ้นต่อรอบเลยทำให้เราสามารถลดเวลาในการขนส่งข้อมูลได้ ตัวอย่าง ถ้าเราต้องการจะส่งข้อมูลขนาด 20 GB คิดออกมาได้ 21,474,836,480 bytes ถ้าเราใช้ 1,500 MTU เป็นพื้นฐานก็เอามาหารได้เลยมันจะได้ประมาณ 14M Packet แต่ถ้าเราอัด Jumbo Frame ที่ 9,000 MTU เลย เราจะเหลือแค่ 2.3M Packet เท่านั้น ลดเวลาในการส่งได้มหาศาลมาก ๆ แต่ ๆ การขยาย MTU ก็อาจจะทำให้เสียเวลามากขึ้นได้เหมือนกัน เพราะเราแบ่งข้อมูลออกมาเป็นก้อนใหญ่ขึ้น ถ้าเกิด Error มันก็ต้องส่งใหม่ และส่งทีก็คือใหญ่มากใช้เวลาอีก ทำให้การปรับ MTU จริง ๆ มันคือการจูน เหมือนจูนรถเลย

ทำให้ถ้าเรารวมทั้งหมดแล้ว ถ้าเราไม่นับ Payload เราจะใช้อยู่ทั้งหมด 22 Bytes เมื่อรวม Payload แบบ 1500 MTU เข้าไป เราก็จะอยู่ที่ 1,522 Bytes/Frame จริง ๆ ถ้าพูดถึงเรื่อง Packet บน GbE มันจะมีการเอาเทคนิค Carrier Extension กับ Packet Bursting ลองไปหาอ่านเอาได้

หลังจากเราสร้าง Packet ออกมาได้แล้ว ถึงเวลาที่ข้อมูลจะต้องถูกส่งออกไปแล้ว ใน Ethernet เลือกใช้ CSMA/CD (Carrier-Sense Multiple Access Accross with Collision Detection) เป็นวิธีในการจัดการตัวกลาง (Medium Access Control) สิ่งที่มันทำคือ มันจะพยายามลองดูว่าในระบบ มีการส่งข้อมูลอยู่หรือไม่ ถ้าส่งแล้ว Packet ไม่ชนก็จบ แต่ถ้าเกิดส่งแล้วเจอว่าชน มันจะส่งใหม่ แต่การที่จะส่งใหม่ มันจะมีเวลาของมันอยู่ คือมันจะทำการสุ่มเวลาขี้นมา เมื่อถึงเวลา มันจะพยายามส่งใหม่แบบนี้ไปเรื่อย ๆ จนกว่าจะผ่าน แต่ถ้าเราทำแบบนี้เลย มันก็จะชิบหายแน่นอน เพราะมันจะลองไปเรื่อย ๆ ๆ จนระบบแตกได้เลย ดังนั้นมันจะมีการกำหนดสิ่งที่เรียกว่า MaxAttempt ลงไปว่า ให้มันลองส่งได้กี่ครั้ง ถ้าเกินกว่านั้นไม่ให้ส่งก็ถือว่าเป็น Packet Loss ไป

อ่อ อีกเรื่องใน Data Link Layer มันต้องมีเรื่องของการทำ Flow Control ด้วย บน Ethernet ก็ต้องมีกลไกนี้เช่นกัน มันจะใช้วิธีที่เรียกว่า Pause Frame หรือก็คือ การให้ปลายทางโยน Frame พิเศษตัวนึงที่ผ่านการตกลงกันระหว่างอุปกรณ์ที่ใช้มาตรฐาน Ethernet แล้วว่า ถ้าได้ Frame นี้คือ ให้หยุดส่งก่อนไปที่ต้นทาง ไส้จริง ๆ ก็คือ การใส่ Ethernet Type เป็น 0x8808 และใส่เวลาที่ต้องการให้หยุดลงไปใน Content ได้เลย ทำให้วิธีนี้ เราจำเป็นที่จะต้องใช้การเชื่อมต่อแบบ Full Duplex เท่านั้น ถึงจะทำได้ ซึ่ง Ethernet มันก็เป็นแบบนั้นแหละ

Error บนการส่งข้อมูล

ในการส่งข้อมูลบน Ideal คือ ข้อมูลที่เราส่งทั้งหมด 100% จะต้องส่งถึงปลายทางอย่างถูกต้องทั้งหมด แต่เอาจริง ๆ ในโลกแห่งความเป็นจริง มันไม่ได้เป็นแบบนั้นเสมอน่ะสิ มันอาจจะมีสัญญาณรบกวนที่ทะลุฉนวนของสายเข้ามาได้ หรือจะเป็นปัญหาของสเปกสายเอง และอีกหลาย ๆ สาเหตุที่ทำให้เกิดความผิดพลาดขึ้นได้ ถ้าเรามาดูที่ Error จริง ๆ แล้ว เราสามารถแบ่ง Error ออกมาได้ 2 ประเภทด้วยกัน

อย่างแรกคือ Single-Bit Error พูดง่าย ๆ คือ มันมีผิดแค่ Bit เดียว จาก 0 เป็น 1 หรือ 1 เป็น 0 เมื่อเทียบกับต้นฉบับ โหดร้ายขึ้นมาหน่อย เราจะเรียกว่า Burst Error คือผิดมากกว่า 1 อีก

ถ้าเราส่งข้อมูลแล้วผิดไม่ว่าจะเกิดจากอะไรก็ตาม อาจจะทำให้เกิดความผิดพลาดในระดับที่เครื่องต้องปิดตัวได้เลย หรือถ้าเอาให้เห็นภาพง่าย ๆ ไฟล์ที่เราโหลดมา ก็อาจจะใช้ไม่ได้เลยก็ได้ เพราะมันมีสัก Bit ผิด หรือมากกว่านั้นยิ่งหนักเข้าไปใหญ่ ดังนั้น เราจะต้องมีวิธีอะไรบางอย่างมาเพื่อเช็คความถูกต้องของข้อมูลที่ได้รับมาก่อน หลัก ๆ แล้ว เราจะสามารถใช้ได้ 3 วิธีคือ Parity Check, Checksum และ Cyclic Redundancy Check (CRC) ในบทความนี้เราจะมาเล่าเฉพาะ CRC  เพราะใน Ethernet ใช้ CRC-32 ในการตรวจสอบความผิดพลาด

Cyclic Redundancy Check (CRC)

หลักการของ CRC สั้น ๆ คือมันเป็นวิธีการทำ Error Detection วิธีนึงที่เราจะใช้การหาร เออแค่นี้พอแหละ เดี๋ยวไปดูวิธีจะเข้าใจ ข้อดีของการใช้ CRC ที่เหนือกว่าวิธีอื่น ๆ คือ มันสามารถหา Burst Error ได้ ทำให้มันมีความน่าเชื่อถือสูงกว่าวิธีอื่นอยู่เยอะเลย เพื่อความสนุกสนาน เรามาลองทำ CRC ด้วยมือกัน แต่แน่นอนว่าเราจะขอไม่ทำ CRC-32 นะ มันเยอะไป

เรามาเริ่มกัน ในตัวอย่างนี้ เราจะกำหนดให้ส่งข้อมูลที่มีขนาด K Bits และ เราจะใช้ Frame ขนาด n Bits สิ่งที่เราต้องทำคือการหาสิ่งที่เรียกว่า Frame Check Sequence (FCS)  ครั้งนี้เราจะแทนค่า K = 10 Bits และ n = 6 Bits ทำให้จำนวน Bits ของ FCS ที่เราต้องการคือ n - 1 = 5 Bits สิ่งที่เราต้องจำได้คือ XOR (Exclusive OR) จำง่าย ๆ คือ เหมือนกัน เป็น 0 ต่างกันเป็น 1

ฝั่งของ Sender เราจะทำการหา FCS โดยการหารยาวทั่ว ๆ ไปนี่แหละ เราเอา K ของเรา แล้วต่อท้ายด้วย 0 จำนวนเท่ากับ จำนวน Bit ของ FCS คือ 5 Bits (ตัวสีส้ม) หารด้วย Frame ของเราคือ 101001 เราก็หารไปลงไปเรื่อย ๆ จนสุดท้าย เราจะได้เศษมา เศษนี่แหละคือ FCS ของเรา ดังนั้นข้อมูลที่เราต้องส่งไปปลายทางจริง ๆ ก็คือ ข้อมูลของเรา แล้วพ่วงท้ายด้วย FCS หรือก็คือเศษที่เราพึ่งหารไปนั่นเอง

ฝั่ง Receiver ก็จะได้รับข้อมูล ที่มีตั้งข้อมูล และ FCS ที่เราต่อท้ายมา เราไม่ต้องสนนะว่า FCS คือตรงไหนช่างมัน เวลาทำ เราทำเหมือนเดิมเลยคือ เราก็เอาข้อมูลที่ได้มา หารด้วย Frame เดิมเลย หารไปเรื่อย ๆ จนจบ เราจะเห็นเลยว่า ถ้าข้อมูลของเราถูกต้อง หารออกมามันจะต้องไม่เหลือเศษ แต่ถ้ามีเศษขึ้นมาแปลว่า ข้อมูลนั้นมีความผิดพลาดบางอย่าง

ทำให้เราเห็นได้เลยว่า การที่ CRC มันจะทำงานได้ มันจะต้องมี Frame ที่ตกลงกันไว้แล้วทั้ง 2 ฝั่งคือค่าด้านบนเลย นั่นคือของจริงเลย นอกจากนี้ การใช้ CRC มันทำให้เรามั่นใจได้เลยว่า ข้อมูลที่เราส่งไปความถูกต้องเรียกได้ว่าแทบจะ 100% เลย โอกาสที่จะเจอข้อมูลผิดคือน้อยมาก ๆๆๆๆๆๆ หรือถ้าผิดจริง ๆ มันน่าจะเปิดแล้วมีอาการสะดุด หรือเปิดไม่ได้เลยดีกว่า

จาก FCS บน CRC ถ้าเครื่องรู้แล้วว่าผิด สิ่งที่มันทำ มันอาจจะพยายามใช้พวก Error Correction Algorithm เพื่อทำการแก้ไข Bit ที่ผิดพลาด หรือถ้ามันไม่สามารถทำได้ มันจะส่ง NAK (Negative-acknowledgment) เพื่อบอกให้ต้นทาง รู้ว่าบางอย่างผิดพลาดไป ส่งใหม่ ๆ ๆ ดังนั้นท้ายสุดจริง ๆ ถึง Error Correction จะทำไม่สำเร็จ เพราะอาจจะเกิดความผิดพลาดที่เยอะเกินไป มันก็จะไม่ยอมใช้ข้อมูลที่ผิดแน่นอน มันก็จะขอใหม่นั่นเอง

ในระบบ Network มันมี Noise ทำให้เสียงที่ออกเป็น Analog เปลี่ยนได้เหรอ ???

คือ เอ่อ....  บอกเลยว่าตอนเจอครั้งแรกคือ มึน งง จนต้องถอดแว่นแล้วใส่ใหม่แล้วอ่านอีกที ห่ะ อะไรนะ !! วอททททท !! หลาย ๆ วันที่ผ่านมา เราไปนอนคิด นั่งคิด ยืนคิดอยู่นานมากว่า เห้ยยย มันเป็นไปได้จริง ๆ เหรอฟร๊ะ เพราะเวลาเราเชื่อมต่อพวกนี้ เท่าที่เห็นใน Comment เราเห็นว่า เขาเอาสาย Lan นั้นเลย ต่อจาก Switch สักอย่างแล้วเข้า Player เลย แล้วต่อเข้าลำโพง

ซึ่งจริง ๆ ใน Player มันก็จะต้องมี NIC (Network Interface Card) ที่รับข้อมูลการ Streaming จาก Router ที่ออก Internet เป็น Digital ซึ่งมันก็ต้องผ่านการทำ Error Checking บนมาตรฐาน Ethernet ตามที่เราเล่าไป ถ้าเกิดมันผิดจริง ๆ สัก Bit มันก็ต้อง NAK ขอข้อมูลใหม่ หรือทำ Error Correction ไม่มีทางที่ข้อมูลที่ผิดแม้แต่ Bit เดียวจะเข้าไปในระบบได้ ไม่ว่าจะเกิดจาก Noise หรืออะไรก็ตาม สุดท้ายเพลงที่เข้ามา มันก็จะผ่าน DAC (Digital-to-Analog Converter) แปลงให้เป็นสัญญาณแบบ Analog และออกลำโพง

ถ้าบอกว่าเพี้ยนเพราะตรง Analog บนภาค DAC กับสายสิ เราว่าไม่แปลกใจเลย เพราะในระบบ Analog จริง ๆ มันมีความ Sensitive สูงมาก ๆ เจอ Noise หน่อย เจอความผิดปกติในการรับส่งนิดหน่อยก็ทำให้สัญญาณเพี้ยนเปลี่ยนได้ โดยเฉพาะเรื่องเสียงที่เพี้ยนไปนิด ก็คือเพี้ยนแล้ว แต่ในระบบ Digital ไม่มีทางที่เสียงจะเพี้ยนได้เลย ความเป็นไปได้ที่เราว่าเป็นไปได้มากที่สุดแล้วคือ สิ่งที่เราเข้าใจในเรื่องของ Data Communication, Computer Network และ Physic ผิดหมดเลย ตำราต้องรื้อเลยนะ

สรุป

ง่าย ๆ เลย พอดีไปเจอของแปลก ๆ และเราว่ามันเป็นไปไม่ได้เลยทางทฤษฏีก็คือสายแลนแบบ Audiophile Grade และบอกว่ามันทำให้เสียงดีขึ้น เราว่ามันแปลกมาก ๆ กับเห็นว่ามันมีหลาย ๆ อย่างที่ยังเข้าใจผิดกันอยู่ เลยเป็นที่มาของวันนี้ ที่เราเอาเรื่องของ Ethernet มาเล่ากันว่า ไส้ในของมันจริง ๆ แล้ว มันมีอะไรบ้าง มันใช้สายแบบไหน และมี Protocol แบบไหนตามาตรฐานของมัน ทั้งในส่วนที่เป็น Physical และ Data Link Layer เลย

เรื่องสายถ้ายังการันตีจริง ๆ ว่ามันทำให้เสียง Clean ขึ้นจริง ๆ เราอยากให้ส่งไปใน Lab ที่ทดสอบเรื่องเสียงจริง ๆ เลยว่า ถ้าเรา Control ทุกอย่างเหมือนหมด เทียบเลยสาย Audiophile กับสายยี่ห้อ Link เกรดธรรมดานี่แหละ แล้วลองวัด Spectrum ของเสียงเลยว่ามันมีความต่างกันเท่าไหร่ ไม่เอาความรู้สึกมาตัดสิน เราว่าต่างแหละ แต่คิดว่าไม่ Significant ในทางสถิติ ก็ลองดูครับ อยากรู้เหมือนกัน