Technology

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

By Arnon Puitrakul - 20 สิงหาคม 2021

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 ด้านบนได้เลย

UTP Cable

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

UTP Cable

ถ้าเราปลอกสายออกมา เราจะเจอกับสายที่พัน ๆ กันอยู่และมีแกนพลาสติกอยู่ตรงกลาง ตัวแกนทำให้สายแข็ง และคงทนต่อการหักงอมากขึ้น ถ้าเราลองไปซื้อพวกสาย 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 ชิ้น

RJ45 Port

สำหรับหัวจริง ๆ แล้ว ถ้าเราใช้งานสาย 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 ในทางสถิติ ก็ลองดูครับ อยากรู้เหมือนกัน

Read Next...

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

เมื่อ 3 ปีก่อน เรามีความพยายามที่จะใช้ iPad Pro เครื่องเดิมแทนคอมพิวเตอร์ ไหน ๆ ตอนนี้เราเปลี่ยน iPad Pro ใหม่แล้ว เราจะมาลองกันอีกสักตั้งว่า เมื่อเวลาผ่านไป มันใช้งานจริงได้มากขึ้นหรือไม่...

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ตั้งแต่ iPad Pro M4 และ iPad Air M2 เปิดตัวและเริ่มจำหน่ายออกไป Reviewer หลายคนเริ่มมองเห็นแล้วว่า ปัญหาจริง ๆ ของ iPad ในรอบหลายปีที่ผ่านมา ไม่ได้เกิดจาก iPad แต่เกิดจาก iPadOS บางเจ้าบอกว่า อยากให้เอา macOS มาใส่ด้วยซ้ำ มันยังไงกันนะ วันนี้เราจะมาเล่าประเด็นและความเห็นจากเราให้ให้อ่านกัน...

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

หลังจากเราเขียนเรื่อง Solar Cell ไปมีคนถามเข้ามาอยู่ว่า ถ้าจะเลือกติดตั้ง Solar ระหว่างการใช้ระบบ String Inverter กับ Microinverter เราจะเลือกตัวไหนดี วันนี้เราจะมาเล่าเปรียบเทียบให้อ่านกันว่าแบบไหน น่าจะเหมาะกับใคร...

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษาบางตัวอย่างภาษา C มี Pointer ในขณะที่ภาษาใหม่ ๆ หลายตัว ไม่มี ทำไมการ Implement Concept หรือเครื่องมือเหล่านี้ถึงไม่ได้รับความนิยม วันนี้เราจะมาเล่าข้อดีข้อเสียของ Feature นี้ในภาษา Programming กัน...