ทำความเข้าใจเครือข่ายและอินเทอร์เน็ตจากหลักการพื้นฐาน
(fazamhd.com)- อินเทอร์เน็ตแปลงเสียง วิดีโอ และข้อความให้เป็น รูปแบบของไฟฟ้า แสง และคลื่นวิทยุ แล้วส่งผ่านอุปกรณ์ของผู้ให้บริการอิสระหลายราย โดยส่งข้อมูลด้วยการตัดสินใจภายในแต่ละฮ็อปเท่านั้น ไม่มีผู้ควบคุมกลางหรือหน่วยงานเดียวที่รู้เส้นทางทั้งหมด
- การสร้างสัญญาณดิจิทัลซ้ำของโทรเลข การสลับวงจรของเครือข่ายโทรศัพท์ การสลับแพ็กเก็ต, Ethernet, IP, TCP, DNS และ TLS ไม่ใช่ชิ้นส่วนของพิมพ์เขียวที่เสร็จสมบูรณ์ แต่เป็นโปรโตคอลที่สะสมขึ้นจากการแก้ ข้อจำกัดทางกายภาพและการดำเนินงาน ในแต่ละยุค
- IP รับผิดชอบเพียงการส่งแบบ best-effort ที่ยอมให้ข้อมูลสูญหาย ซ้ำ หรือสลับลำดับได้ ส่วน TCP ทำการส่งซ้ำ กู้คืนลำดับ และควบคุมความแออัดที่ปลายทาง ขณะที่ DNS แปลงชื่อเป็นที่อยู่ และ TLS เพิ่มการยืนยันตัวตนกับการเข้ารหัส
- เมื่อเปิดเว็บเพจครั้งแรก ก่อนจะส่งเนื้อหาได้ต้องมีการไป-กลับหลายรอบสำหรับการค้นหา DNS, การเชื่อมต่อ TCP และ TLS handshake ดังนั้นแค่แบนด์วิดท์สูงอย่างเดียวจึงไม่อาจกำจัด การเริ่มต้นที่ช้าจากเวลาแฝง ได้
- ด้วยเลเยอร์ IP ที่เรียบง่ายและมาตรฐานเปิด จึงสามารถนำโปรโตคอลใหม่อย่าง HTTP, VPN, WebRTC และ QUIC ไปใช้งานได้โดยไม่ต้องขออนุญาตหรือเปลี่ยนเราเตอร์เดิม และอินเทอร์เน็ตก็ยังคงเสริมข้อจำกัดในแต่ละเลเยอร์ต่อไปทุกครั้งที่ความต้องการใหม่ปรากฏขึ้น
จากสัญญาณทางกายภาพสู่บิต
- การสื่อสารบนอินเทอร์เน็ตแปลงข้อความอย่างต่อเนื่องเป็นคลื่นวิทยุ Wi-Fi, พัลส์ไฟฟ้าในสายทองแดง และแสงในใยแก้วนำแสง แล้วกู้คืนกลับตามลำดับย้อนกลับที่อีกฝั่ง
- อุปกรณ์และสายเคเบิลถูกใช้ร่วมกันโดยบทสนทนาหลายล้านรายการ และข้อมูลผ่านอุปกรณ์ที่เป็นของบริษัทอิสระในหลายประเทศ
- ไม่มีคอมพิวเตอร์ศูนย์กลางคอยกำกับทราฟฟิก แต่อุปกรณ์แต่ละตัวเลือกเพียงเส้นทางถัดไป
- อินเทอร์เน็ตไม่ได้ถูกออกแบบขึ้นในครั้งเดียว และ การสลับแพ็กเก็ต, TCP, DNS และ TLS ถูกเพิ่มเข้ามาภายหลังเพื่อแก้ปัญหาเฉพาะของเครือข่ายที่ทำงานอยู่แล้ว
- หลักการพื้นฐานของทุกลิงก์คือ ฝั่งหนึ่งเปลี่ยนปริมาณทางกายภาพ และอีกฝั่งวัดค่ามัน ณ เวลาที่ตกลงกันไว้
- เชือกที่ขึงตึงส่งการสั่นสะเทือนเชิงกลได้ แต่สัญญาณจะอ่อนลงตามระยะทางเพราะแรงเสียดทานและความหย่อน
- สายทองแดงขนส่งบิตด้วยการเปลี่ยนแรงดันไฟฟ้า ใยแก้วนำแสงด้วยเลเซอร์ และ Wi-Fi ด้วยรูปแบบของคลื่นวิทยุ
การสื่อสารดิจิทัลและโปรโตคอลที่โทรเลขวางรากฐาน
- เดิมคำว่าเครือข่ายหมายถึงรูปทรงตาข่ายที่เกิดจากด้ายหรือเชือกไขว้กัน ต่อมาผ่านเครือข่ายคลองและทางรถไฟในต้นศตวรรษที่ 19 ก่อนจะหมายถึงระบบสายไฟและสถานีทวนสัญญาณของโทรเลขในทศวรรษ 1840
- ในปี 1844 Samuel Morse ส่งข้อความ “What hath God wrought” จาก Washington ไปยัง Baltimore
- รหัส Morse เป็นเครือข่ายดิจิทัลที่ไม่ได้ส่งเสียงพูดตามเดิม แต่ส่งสัญลักษณ์ไม่ต่อเนื่องในรูปของพัลส์ไฟฟ้าสั้นและยาว
- รีพีตเตอร์ไม่ได้ขยายรูปคลื่นที่อ่อนลง แต่ตรวจว่ามีพัลส์อยู่หรือไม่ แล้วสร้างพัลส์ใหม่ที่สะอาด
- การขยายสัญญาณแบบง่ายจะขยายสัญญาณรบกวนไปด้วยในแต่ละช่วง แต่การสร้างสัญลักษณ์ไม่ต่อเนื่องขึ้นใหม่ช่วยป้องกันไม่ให้ข้อความเสื่อมคุณภาพแม้ในระดับทวีป
- กฎที่ผู้ส่งและผู้รับแชร์กันล่วงหน้า เช่น พัลส์ของแต่ละตัวอักษร และขั้นตอนอย่าง
received,repeatคือ โปรโตคอล- IP, TCP, DNS และ TLS ก็เหมือนกันตรงที่เป็นกฎซึ่งตกลงกันอย่างเปิดเผยเกี่ยวกับรูปแบบข้อความและลำดับการสื่อสาร
- ในเครือข่ายโทรเลข มนุษย์เป็นผู้ทำ routing
- เจ้าหน้าที่สถานีทวนสัญญาณพิมพ์ข้อความลงบนเทปกระดาษ และเมื่อวงจรที่ใกล้ปลายทางว่างก็ส่งต่อ
- ในช่วงเวลาที่แออัด ข้อความจะถูกพักไว้ในกล่องเก็บ และโครงสร้างนี้ถูกทำซ้ำในภายหลังเป็นระบบอิเล็กทรอนิกส์แบบ store-and-forward และเราเตอร์
- สายเคเบิลโทรเลขข้ามมหาสมุทรแอตแลนติกเส้นแรกเริ่มทำงานใน เดือนสิงหาคม 1858 แต่เสียภายใน 3 สัปดาห์ท่ามกลางปัญหาฉนวนเสียหายและแรงดันเกิน
- เคเบิลที่ประสบความสำเร็จถูกวางในปี 1866 โดย SS Great Eastern เป็นความยาวประมาณ 4,000 กม. ในชิ้นเดียว
- บิตคือหน่วยข้อมูลขั้นต่ำที่แทนหนึ่งในสองสถานะคือ
0และ1- 1 ไบต์ ซึ่งมี 8 บิต แทนสถานะได้ 256 แบบ และสามารถเก็บตัวอักษรหนึ่งตัวหรือตัวเลขขนาดเล็กได้
แบนด์วิดท์และเวลาแฝง
- แบนด์วิดท์ คือจำนวนบิตที่ลิงก์ขนส่งได้ต่อวินาที ส่วน เวลาแฝง คือเวลาที่บิตหนึ่งใช้เดินทางไปถึงอีกฝั่ง
- แบนด์วิดท์เพิ่มได้ด้วยการลดช่วงห่างระหว่างการส่งสัญญาณหรือใช้หลายความยาวคลื่นแบบขนาน แต่เวลาแฝงถูกจำกัดด้วยระยะทางและความเร็วแสง
- แสงเดินทางในแก้วที่ประมาณ 200,000 กม. ต่อวินาที หรือราวสองในสามของความเร็วในสุญญากาศ
- เส้นทาง New York–London มีขีดจำกัดทางกายภาพขั้นต่ำขาเดียวประมาณ 28ms และการไป-กลับต้องใช้สองเท่า
- การสตรีมวิดีโอทนต่อความหน่วงได้ด้วยการบัฟเฟอร์ล่วงหน้าหลายวินาที แต่ต้องใช้แบนด์วิดท์มาก
- วิดีโอคอลต้องการแบนด์วิดท์ค่อนข้างน้อยกว่า แต่เวลาแฝงต่ำเป็นสิ่งสำคัญ
- เว็บเพจต้องผ่านการไป-กลับของ DNS, TCP และ TLS ก่อนรับเนื้อหา ดังนั้นแม้มี การเชื่อมต่อระดับกิกะบิต ก็อาจเริ่มต้นได้ช้า
- แบนด์วิดท์เกิดจากตารางเวลาการส่ง ส่วนเวลาแฝงเกิดจากความยาวของลิงก์ ดังนั้นสองอย่างนี้จึงไม่ใช่ค่าที่แลกเปลี่ยนแทนกันได้
การสลับวงจรและโมเด็ม
- หลังปี 1876 เครือข่ายโทรศัพท์ใช้ การสลับวงจร ซึ่งจองเส้นทางไฟฟ้าเฉพาะแบบปลายทางถึงปลายทางสำหรับทุกสายสนทนา
- ในยุคแรกพนักงานสลับสายเสียบ patch cord และต่อมาถูกทำให้เป็นอัตโนมัติด้วยรีเลย์ไฟฟ้ากล
- เนื่องจากเสียงไหลต่อเนื่องระหว่างการสนทนา โครงสร้างที่ใช้วงจรที่จองไว้อย่างต่อเนื่องจึงสมเหตุสมผล
- ในทศวรรษ 1950–60 คอมพิวเตอร์จำเป็นต้องใช้เครือข่ายโทรศัพท์เดิม จึงแปลงบิตดิจิทัลเป็นเสียงแอนะล็อกด้วย โมเด็ม (modulator-demodulator)
- โมเด็มยุคแรกแบบ 300-baud เช่น Bell 103 ใช้ FSK
1แทนด้วยเสียงต่อเนื่องความถี่สูง และ0แทนด้วยเสียงต่อเนื่องความถี่ต่ำ- โมเด็มอีกฝั่งตรวจความถี่ที่ได้ยินเพื่อกู้คืนบิต
- ก่อนส่งข้อมูล จะมีการเจรจาความเร็วการสื่อสาร การแก้ไขข้อผิดพลาด และคุณลักษณะของสาย
- หลัง Hayes Smartmodem ในปี 1981 ลำโพงจะเปิดไว้เพื่อให้มนุษย์ตรวจสอบสถานะการเชื่อมต่อได้ จึงได้ยินเสียง dial tone, การเรียก, การแลกเปลี่ยนความสามารถ, การเจรจา modulation และการฝึก equalizer
- handshake จริงผ่านหลายขั้นตอนภายในไม่เกิน 30 วินาที
- DSL และเคเบิลนำสายโทรศัพท์และสายทีวีเดิมกลับมาใช้เป็นลิงก์ดิจิทัลที่เชื่อมต่ออยู่ตลอด และใยแก้วนำแสงสำหรับบ้านก็หลุดพ้นจากสายของเครือข่ายเสียงโดยสิ้นเชิง
- ทราฟฟิกคอมพิวเตอร์เป็นแบบ burst คือพักระหว่างการอ่านหรือคำนวณหลังส่งคำขอ
- หากจองวงจร ความจุจะว่างอยู่เป็นส่วนใหญ่ และผู้ใช้อื่นไม่สามารถใช้ได้
- เพราะเส้นทางถูกกำหนดตายตัวตั้งแต่เริ่มการโทร หากลิงก์กลางเพียงหนึ่งช่วงขาด การเชื่อมต่อทั้งหมดก็สิ้นสุด
- ในช่วงต้นทศวรรษ 1960 จำนวนคอมพิวเตอร์วิจัยที่เพิ่มขึ้น ลักษณะแบบ burst ของคอมพิวติ้งแบบโต้ตอบ และความต้องการของกองทัพสหรัฐฯ ที่ต้องอยู่รอดได้แม้บางช่วงของเครือข่ายเสียหาย ได้เผยให้เห็นข้อจำกัดของการสลับวงจร
การสลับแพ็กเก็ตและการส่งแบบ best-effort
- Paul Baran คิดค้นการสลับแพ็กเก็ตอย่างอิสระเพื่อความอยู่รอดของเครือข่าย ส่วน Donald Davies ทำเพื่อการใช้วงจรร่วมกัน และ Davies เป็นผู้ตั้งชื่อว่า
packet - ข้อความถูกแบ่งเป็นหน่วยเล็ก ๆ และแต่ละแพ็กเก็ตประกอบด้วย header ที่มีข้อมูลควบคุม เช่น ต้นทางและปลายทาง กับ payload ซึ่งเป็นข้อมูลจริง
- เราเตอร์ทำ store-and-forward คือรับแพ็กเก็ตทั้งก้อน อ่านปลายทาง แล้วส่งต่อไปยังลิงก์ถัดไปตามตารางของตัวเอง
- เพื่อรักษาการขยายขนาด ตารางจะบันทึกเครือข่ายซึ่งเป็นช่วงของที่อยู่ ไม่ใช่โฮสต์รายตัว
- แพ็กเก็ตจากบทสนทนาหลายรายการใช้วงจรเดียวกันสลับกัน และแต่ละแพ็กเก็ตถูก routing อย่างอิสระ
- หากเราเตอร์กลางตาย แพ็กเก็ตหลังจากนั้นอาจใช้เส้นทางอื่นได้
- ก่อนที่ข้อมูลความขัดข้องจะแพร่กระจาย แพ็กเก็ตอาจถูกส่งไปตามเส้นทางเก่าแล้วสูญหาย และกระบวนการที่เส้นทางใหม่เสถียรเรียกว่า convergence
- อุปกรณ์ที่มีที่อยู่เรียกว่า host ฝั่งที่เริ่มบทสนทนาเรียกว่า client และฝั่งที่รอคำขออยู่ที่ที่อยู่คงที่ซึ่งรู้จักกันเรียกว่า server
- หากอัตราขาเข้าเร็วกว่าเอาต์พุตลิงก์ เราเตอร์จะพักแพ็กเก็ตไว้ในหน่วยความจำ และเมื่อคิวเต็มก็ทิ้งส่วนที่เกิน
- เครือข่ายให้บริการเพียง การส่งแบบ best-effort ที่ยอมให้แพ็กเก็ตสูญหาย ซ้ำ หรือสลับลำดับได้
- การตัดสินใจฝากความน่าเชื่อถือไว้กับคอมพิวเตอร์ปลายทาง ไม่ใช่ศูนย์กลางของเครือข่าย ช่วยให้อินเทอร์เน็ตเรียบง่ายและเป็นรากฐานให้ขยายสู่ระดับโลกได้
ARPANET และเราเตอร์รุ่นแรก
- ARPA สนับสนุน ARPANET ในปี 1969 ซึ่งเป็นเครือข่ายสลับแพ็กเก็ตจริงเครือข่ายแรก เพื่อเชื่อมต่อคอมพิวเตอร์วิจัยของมหาวิทยาลัย
- เนื่องจากยากที่จะมอบงานสลับแพ็กเก็ตให้เมนเฟรมที่ผู้ผลิตและระบบปฏิบัติการต่างกัน BBN จึงสร้าง IMP (Interface Message Processor)
- IMP เป็นมินิคอมพิวเตอร์เฉพาะทางที่แบ่งข้อความเป็นแพ็กเก็ต ทำ routing และประกอบกลับ
- เมนเฟรมของแต่ละไซต์เชื่อมต่อกับ IMP ในพื้นที่ และ IMP สื่อสารกันผ่านสายโทรศัพท์เช่า
- คำศัพท์ที่แยกเมนเฟรมที่ทำการคำนวณเป็น
Hostและโครงสร้างพื้นฐานการส่งเป็น IMP ยังคงสืบทอดมาถึงปัจจุบัน - IMP คือเราเตอร์รุ่นแรก และเราเตอร์ไร้สายในบ้านก็ทำตามแพตเทิร์นเดียวกัน คือให้อุปกรณ์เฉพาะทางจัดการโปรโตคอลเครือข่ายแทน
- วันที่ 29 ตุลาคม 1969 Charley Kline จาก UCLA กำลังพิมพ์
LOGINไปยัง Stanford Research Institute แต่เมื่อส่งไปได้ถึงLOระบบรับก็ล่ม - ARPANET มี 4 โหนดในเดือนธันวาคม 1969 และขยายไปถึง Norway กับ London ในปี 1973
Ethernet และเครือข่ายภายใน
- เครือข่ายระยะไกลอย่าง ARPANET คือ WAN ส่วนเครือข่ายที่เชื่อมต่ออุปกรณ์หลายเครื่องภายในสำนักงานคือ LAN
- Robert Metcalfe ออกแบบ Ethernet ที่ Xerox PARC ในปี 1973
- ได้แนวคิดจากการส่งข้อมูลแบบไม่ต้องขออนุญาตและการจัดการการชนกันของ ALOHAnet ที่เชื่อมต่อหมู่เกาะฮาวาย
- Ethernet ยุคแรกเชื่อมคอมพิวเตอร์ทุกเครื่องเข้ากับสายโคแอกเชียลร่วมเส้นเดียว และรับทุกเฟรม แต่ประมวลผลเฉพาะที่อยู่ของตัวเอง
- สายโคแอกเชียลประกอบด้วยลวดทองแดงแกนกลาง ชั้นฉนวน ตัวป้องกันสัญญาณรบกวนทรงกระบอก และเปลือกหุ้มภายนอก
- ตัวป้องกันสัญญาณรบกวนเป็นทั้งเส้นทางกระแสย้อนกลับและช่วยปิดกั้นการรบกวนจากภายนอก
- เมื่ออุปกรณ์สองเครื่องส่งข้อมูลพร้อมกันบนสายร่วม จะเกิด collision
- CSMA/CD จะฟังสื่อกลางก่อนส่ง หากตรวจพบการชนกันระหว่างส่งจะหยุดทันที แล้วลองใหม่หลังจากเวลาสุ่ม
- exponential backoff ที่เพิ่มช่วงเวลาหน่วงเป็นสองเท่าเมื่อเกิดการชนซ้ำ ช่วยป้องกันการชนกันอย่างถาวร
- สำนักงานสมัยใหม่ใช้สายคู่บิดเกลียวเฉพาะจากอุปกรณ์แต่ละเครื่องไปยังสวิตช์และคอนเน็กเตอร์ RJ-45 แทนสายโคแอกเชียลร่วม
- แต่ละพอร์ตเป็นสายเฉพาะ และเป็น full-duplex ที่แยกเส้นทางรับส่ง จึงโดยหลักการแล้วไม่มีการชนกัน
- CSMA/CD หมดประโยชน์ใน Ethernet แบบมีสายสมัยใหม่แล้ว แต่ปัญหาการแย่งใช้สื่อกลางกลับมาปรากฏใน Wi-Fi ซึ่งใช้อากาศเป็นสื่อกลางร่วม
-
สวิตช์และที่อยู่ MAC
- ชื่อ
switchในเครือข่ายมีรากสายเดียวกับอุปกรณ์สับรางรถไฟ กุญแจไฟฟ้าที่สลับกระแส และแผงชุมสายโทรศัพท์ - สวิตช์เครือข่ายสมัยใหม่ส่งต่อเฟรมด้วย ASIC ที่สร้างจากสวิตช์ทรานซิสเตอร์หลายล้านตัว
- เราเตอร์ใช้ที่อยู่เครือข่ายระดับโลก แต่สวิตช์ใช้ ที่อยู่ MAC ซึ่งเป็นที่อยู่ฮาร์ดแวร์ภายในเครื่อง
- หน่วยข้อมูลของ Ethernet คือเฟรม
- ที่อยู่ MAC เขียนเป็นเลขฐานสิบหก 6 คู่ รวม 48 บิต เช่น
00:1A:2B:3C:4D:5E - เลขฐานสิบหกหนึ่งหลักแทนได้พอดี 4 บิต และสองหลักจัดเรียงได้เป็น 1 ไบต์ จึงเหมาะกับการย่อบิตดิบให้สั้นลง
- ที่อยู่ MAC แบบดั้งเดิม 3 คู่แรกคือ OUI ของผู้ผลิต และ 3 คู่หลังคือหมายเลขซีเรียลของอินเทอร์เฟซนั้น
- สมาร์ตโฟนก็มีที่อยู่แยกกันสำหรับชิป Wi-Fi และ Bluetooth
- เพื่อป้องกันการติดตามในที่สาธารณะด้วยที่อยู่ถาวร ระบบปฏิบัติการสมัยใหม่จะสร้างที่อยู่ MAC ชั่วคราวแบบสุ่มเมื่อสแกนหรือเชื่อมต่อ
- สวิตช์เรียนรู้ตารางส่งต่อโดยอัตโนมัติจากการสังเกต MAC ต้นทาง ของเฟรมและพอร์ตที่เฟรมนั้นเข้ามา
- หากยังไม่รู้ปลายทาง จะทำ flooding ไปยังพอร์ตอื่นทั้งหมด
- หากรู้ปลายทางแล้ว จะส่งต่อไปยังพอร์ตนั้นเพียงพอร์ตเดียว
- ตารางของสวิตช์ถูกอนุมานแบบพาสซีฟจากทราฟฟิกภายในเครื่อง แต่ตารางของเราเตอร์ถูกเติมด้วยการตั้งค่าด้วยมือหรือโปรโตคอล routing
- ที่อยู่ MAC มีความหมายเฉพาะในเซกเมนต์ภายใน ส่วนที่อยู่ IP ใช้สำหรับการเดินทางระหว่างเครือข่าย
- ชื่อ
IP และเครือข่ายของเครือข่าย
- ในทศวรรษ 1970 เครือข่ายแพ็กเก็ตต่างชนิดอย่าง SATNET, PRNET, Ethernet มีรูปแบบ ที่อยู่ และขนาดสูงสุดต่างกัน จึงสื่อสารกันโดยตรงไม่ได้
- Vint Cerf และ Bob Kahn ออกแบบ internetwork ในปี 1973 เพื่อเชื่อมต่อเครือข่ายต่าง ๆ โดยไม่ต้องทำให้โครงสร้างภายในของแต่ละเครือข่ายเหมือนกัน
- IP เป็นชั้นร่วมบาง ๆ ที่ทุกเครือข่ายที่เข้าร่วมต้องเห็นพ้องกัน
- กำหนดที่อยู่ IP แบบทั่วไปและรูปแบบแพ็กเก็ตทั่วไป
- เครือข่ายภายในแต่ละแบบจะบรรทุกแพ็กเก็ต IP โดยใส่ไว้ในเฟรมของตัวเอง
- เราเตอร์ไม่จดจำสถานะของบทสนทนา และไม่กู้คืนการสูญหาย
- เพราะเป็นแบบ connectionless ที่ไม่มีขั้นตอนตั้งค่าและไม่มีสถานะร่วมระหว่างแพ็กเก็ต จึงนำไปใช้งานได้ไม่ว่าจะเป็นสายทองแดง ใยแก้วนำแสง ไร้สาย หรือดาวเทียม
- โครงสร้างนาฬิกาทราย ที่มีสื่อกายภาพหลากหลายอยู่ด้านล่าง แอปพลิเคชันหลากหลายอยู่ด้านบน และ IP เป็นจุดร่วมแคบ ๆ ตรงกลาง ทำให้เกิดความสามารถในการทำงานร่วมกัน
-
ที่อยู่ IPv4 และการจับคู่คำนำหน้ายาวที่สุด
- ที่อยู่ IPv4 มี 32 บิต หรือออกเต็ต 4 ชุด เขียนเป็นเลขฐานสิบคั่นด้วยจุด เช่น
91.198.174.192 /24คือคำนำหน้าเครือข่ายที่ตรึงไว้ 24 บิตแรก- subnet mask อย่าง
255.255.255.0ก็แสดงบิตที่ตรึงไว้ชุดเดียวกันในอีกรูปแบบหนึ่ง - เราเตอร์นำปลายทางกับเส้นทางมา XOR แล้วมาสก์ส่วนหลังคำนำหน้า เพื่อตรวจว่ามีส่วนที่ตรึงไว้ไม่ตรงกันหรือไม่
- หากมีหลายเส้นทางตรงกัน จะเลือก การจับคู่คำนำหน้ายาวที่สุด ซึ่งมีจำนวนบิตที่ตรึงไว้มากที่สุด
- เมื่อไม่มีเส้นทางเฉพาะ จะใช้เส้นทางเริ่มต้น
0.0.0.0/0 - เราเตอร์แต่ละตัวไม่จำเป็นต้องรู้แผนที่อินเทอร์เน็ตทั้งหมด แค่รู้เพื่อนบ้านและทิศทางพื้นฐาน ก็จะไปถึงปลายทางได้ผ่านการตัดสินใจแบบเดียวกันของเราเตอร์ตัวถัดไป
- ที่อยู่ IPv4 มี 32 บิต หรือออกเต็ต 4 ชุด เขียนเป็นเลขฐานสิบคั่นด้วยจุด เช่น
-
จาก classful addressing สู่ CIDR
- classful addressing ในปี 1981 กำหนดขนาดเครือข่ายตายตัวเป็นสามประเภท
- Class A
/8ให้ที่อยู่ 16,777,216 รายการ, Class B/16ให้ 65,536 รายการ และ Class C/24ให้ 256 รายการ - องค์กรที่ต้องการที่อยู่ประมาณ 4,000 รายการจำเป็นต้องรับ Class B แล้วสิ้นเปลืองไปราว 94% หรือรับ Class C 16 บล็อกแล้วทำให้เราเตอร์แกนหลักทั้งหมดต้องมี 16 เส้นทาง
- ช่วงต้นทศวรรษ 1990 พื้นที่ที่อยู่และหน่วยความจำเราเตอร์ถูกใช้จนใกล้หมดอย่างรวดเร็ว
- CIDR ที่นำมาใช้ในปี 1993 เปิดให้กำหนดความยาวคำนำหน้าได้อย่างยืดหยุ่น
/20หนึ่งบล็อกให้ที่อยู่ 4,096 รายการ และสามารถรวมบล็อกที่อยู่ติดกันเป็นเส้นทางเดียวได้- IANA จัดการพื้นที่ IPv4 ทั้งหมด และจัดสรรบล็อกขนาดใหญ่ให้รีจิสทรีอินเทอร์เน็ตระดับภูมิภาค 5 แห่ง
- รีจิสทรีระดับภูมิภาคแบ่งบล็อกที่เล็กลงให้ ISP และ ISP แบ่งต่อให้บริษัทกับครัวเรือน
- การมอบหมายแบบลำดับชั้นที่แต่ละองค์กรจัดการเฉพาะเขตของตนเอง เป็นหลักการขยายระบบแบบเดียวกับ DNS
-
TTL, ICMP, ping, traceroute
- TTL ในส่วนหัว IP ไม่ได้หมายถึงเวลา แต่หมายถึงจำนวน hop ที่เหลือ และจะลดลงทีละ 1 ที่เราเตอร์แต่ละตัว
- เมื่อกลายเป็น 0 แพ็กเก็ตจะถูกทิ้ง เพื่อป้องกันไม่ให้เส้นทางผิดทำให้แพ็กเก็ตวนลูปไม่สิ้นสุด
- เมื่อ TTL หมดอายุ เราเตอร์จะส่ง ICMP
Time Exceededกลับไปยังต้นทาง pingวัดความหน่วงไปยังโฮสต์หนึ่ง ๆ จากเวลาไปกลับของ ICMPEcho RequestและEcho Replytracerouteเพิ่ม TTL เป็น 1, 2, 3 เพื่อรวบรวมคำตอบTime Exceededที่เกิดขึ้นในแต่ละ hop- ฟังก์ชันวินิจฉัยเส้นทางถูกต่อยอดมาจาก TTL ที่เดิมสร้างขึ้นเพื่อป้องกันลูป
-
MTU และการแตกชิ้นส่วน
- แต่ละลิงก์มี MTU ซึ่งเป็นขนาดสูงสุดที่บรรทุกได้ในครั้งเดียว และ Ethernet คือ 1,500 ไบต์
- เราเตอร์ IPv4 แบบดั้งเดิมจะแบ่งแพ็กเก็ตที่ใหญ่กว่าลิงก์ถัดไปเป็นหลายชิ้น แล้วประกอบกลับที่ปลายทาง
- ภาระงานของเราเตอร์เพิ่มขึ้น และหากชิ้นใดชิ้นหนึ่งหาย ก็ต้องส่งต้นฉบับทั้งหมดใหม่
- วิธีสมัยใหม่ตั้งค่า
don’t fragmentและใช้ Path MTU Discovery ที่ให้เราเตอร์ซึ่งส่งต่อไม่ได้แจ้ง MTU ที่ยอมรับได้กลับมาผ่าน ICMP - หากพบลิงก์ถัดไปที่แคบกว่า ผู้ส่งจะลดขนาดลงอีกจนลู่เข้าสู่ MTU ต่ำสุดของเส้นทางจริง
- IPv6 ตัดการแตกชิ้นส่วนโดยเราเตอร์ออก และอนุญาตเฉพาะ PMTUD ฝั่งผู้ส่งเท่านั้น
-
ยูนิแคสต์·บรอดแคสต์·ARP·มัลติแคสต์
- ยูนิแคสต์ ที่ส่งจากผู้ส่งหนึ่งไปยังผู้รับหนึ่งราย ครองทราฟฟิกอินเทอร์เน็ตส่วนใหญ่
- ซับเน็ตคือเพื่อนบ้านทั้งเชิงกายภาพและเชิงตัวเลขที่สามารถเข้าถึงกันโดยตรงด้วยที่อยู่ MAC บนสายหรือช่องสัญญาณไร้สายเดียวกันโดยไม่ผ่านเราเตอร์
- บรอดแคสต์ถูกส่งไปยังโฮสต์ทั้งหมดในซับเน็ต และไม่ข้ามขอบเขตเราเตอร์
- DHCP แจกจ่ายการตั้งค่าให้อุปกรณ์ที่ยังไม่มีที่อยู่
- ARP บรอดแคสต์คำถามว่า “อุปกรณ์ใดมี IP นี้” และมีเพียงเจ้าของเท่านั้นที่ตอบกลับแบบยูนิแคสต์ เพื่อค้นหาที่อยู่ MAC ที่สอดคล้องกับที่อยู่ IP ภายในเครื่อง
- ผลลัพธ์จะถูกแคชไว้ไม่กี่นาที
- สำหรับปลายทางนอกซับเน็ต จะค้นหาที่อยู่ MAC ของ default gateway ไม่ใช่ของเซิร์ฟเวอร์ระยะไกล
- มัลติแคสต์ส่งแพ็กเก็ตหนึ่งชุดไปเฉพาะกลุ่มที่สมัครรับ ใช้ใน IPTV และโปรโตคอล routing ภายใน เป็นต้น
- ที่อยู่ IPv4 ราว 4.3 พันล้านรายการเริ่มไม่พอ และ IPv6 ที่ใช้ที่อยู่ 128 บิตถูกทยอยใช้งานคู่ขนานมาประมาณ 20 ปี จนปัจจุบันบรรทุกทราฟฟิกเกือบครึ่งหนึ่ง
ความน่าเชื่อถือที่ TCP สร้างขึ้น
- TCP นำความน่าเชื่อถือที่ IP ไม่มีมาใช้งานที่ปลายทางทั้งสองฝั่ง ส่วนเราเตอร์ระหว่างทางไม่รู้สถานะของ TCP
- กำหนดหมายเลขให้ทุกไบต์ และผู้รับแจ้งไบต์ถัดไปที่คาดหวังด้วย ACK
- ข้อมูลที่ยังไม่ได้รับการยืนยันจะถูกส่งซ้ำ
- ข้อมูลที่ลำดับสลับกันจะถูกจัดเรียงใหม่ตามหมายเลขแล้วส่งต่อให้แอปพลิเคชัน
- เนื่องจากทั้งสองฝั่งจดจำสถานะการสนทนา TCP จึงเป็นแบบ connection-oriented และมีจุดเริ่มต้นกับจุดสิ้นสุดที่ชัดเจน
- หน่วยข้อมูลในแต่ละเลเยอร์คือ Ethernet frame, IP packet, TCP segment และ UDP datagram
-
3-way handshake และ checksum
- 3-way handshake ของ TCP ทำหน้าที่ซิงโครไนซ์หมายเลขลำดับเริ่มต้นของทั้งสองฝั่ง
-
- ไคลเอนต์ส่ง
SYN, seq=5000
- ไคลเอนต์ส่ง
-
- เซิร์ฟเวอร์ตอบกลับด้วย
SYN-ACK, seq=9000, ack=5001
- เซิร์ฟเวอร์ตอบกลับด้วย
-
- ไคลเอนต์ส่ง
ACK, ack=9001
- ไคลเอนต์ส่ง
- checksum ส่งค่าที่คำนวณจากไบต์ที่ส่งไปพร้อมกัน และผู้รับคำนวณใหม่เพื่อตรวจจับความเสียหายของบิตที่เกิดขึ้นโดยบังเอิญ
- แพ็กเก็ตที่ค่าไม่ตรงกันจะถูกทิ้ง และเพราะไม่มี ACK กระบวนการส่งซ้ำเดิมจึงกู้คืนได้
- Ethernet ใช้ frame check sequence แบบ CRC ส่วน IP·TCP·UDP ใช้การบวกแบบ one's complement
- ไม่สามารถป้องกันการแก้ไขโดยเจตนาจากผู้โจมตีที่คำนวณ checksum ใหม่ได้ บทบาทนั้นเป็นหน้าที่ของ TLS
-
การควบคุมการไหลและการควบคุมความคับคั่ง
- ผู้ส่ง TCP รักษา sliding window ที่จำกัดข้อมูลที่ยังไม่ได้รับการยืนยัน
- ทุกครั้งที่ ACK มาถึง หน้าต่างจะเลื่อนไปข้างหน้า เพื่อไม่ให้ผู้ส่งที่เร็วท่วมผู้รับที่ช้า
- การสูญหายถูกตีความว่าเป็นสัญญาณว่าคิวของเราเตอร์ระหว่างทางล้น และผู้ส่งจะลดขนาดหน้าต่าง
- ในเดือนตุลาคม 1986 ลิงก์ระยะ 400m ระหว่าง Lawrence Berkeley Lab กับ UC Berkeley ล่มจาก 32,000bps เหลือ 40bps เมื่อผู้ส่งตอบสนองต่อการสูญหายด้วยการส่งซ้ำมากขึ้น
- การควบคุมความคับคั่งของ Van Jacobson ลดปริมาณการส่งแบบทวีคูณเมื่อเกิดการสูญหาย และค่อย ๆ เพิ่มอย่างระมัดระวังเมื่อสำเร็จ
- การเชื่อมต่อหลายพันล้านรายการใช้กฎท้องถิ่นเดียวกันโดยไม่มีการประสานจากศูนย์กลาง เพื่อป้องกันการล่มสลายจากความคับคั่งของเครือข่ายที่ใช้ร่วมกัน
- หากแพ็กเก็ตกลางทางหายไป ผู้รับจะส่ง ACK ซ้ำสำหรับไบต์ต่อเนื่องล่าสุด และผู้ส่งสามารถตรวจพบการสูญหายก่อน timeout แล้วส่งซ้ำได้
-
พอร์ต·ซ็อกเก็ต·UDP
- ถ้า IP address ระบุอุปกรณ์ พอร์ต ก็ระบุโปรแกรมภายในอุปกรณ์นั้น
- โดยทั่วไปเซิร์ฟเวอร์ HTTPS ใช้พอร์ต 443
- การรวมกันของ IP address, port และ protocol แสดงถึงปลายทาง socket ของแอปพลิเคชัน
- ระบบปฏิบัติการของไคลเอนต์ยืมพอร์ตชั่วคราวระหว่างการเชื่อมต่อ เพื่อแยกว่า response ควรกลับมาที่ใด
- UDP เพิ่มเพียงพอร์ตเข้าไปบน IP และไม่ให้การตั้งค่าการเชื่อมต่อ การส่งซ้ำ หรือการกู้คืนลำดับ
- TCP เหมาะกับข้อมูลที่ความครบถ้วนสำคัญ เช่น เว็บเพจ เมล และไฟล์
- UDP เหมาะกับกรณีที่ข้อมูลมาช้าสร้างปัญหามากกว่าการสูญหาย เช่น วิดีโอคอล เกมมัลติเพลเยอร์ และ DNS
- TCP/IP กลายเป็นโปรโตคอลทางการของ ARPANET เมื่อวันที่ 1 มกราคม 1983 และเครือข่ายทุกแห่งที่ยอมรับการขนส่ง IP packet ร่วมกันประกอบเป็นอินเทอร์เน็ต
วิธีที่ข้อมูล routing ถูกสร้างขึ้น
-
OSPF และ RIP ภายในองค์กร
- ภายในองค์กรเดียว IGP จะแลกเปลี่ยนสถานะลิงก์และข้อมูลเส้นทาง
- โปรโตคอลแบบ link-state อย่าง OSPF จะให้เราเตอร์แต่ละตัว flood ข้อมูลการเชื่อมต่อของตนไปยังทั้งหมด
- เราเตอร์ทุกตัวมีแผนที่ topology เดียวกัน และคำนวณเส้นทางที่สั้นที่สุดอย่างอิสระ
- โปรโตคอลแบบ distance-vector อย่าง RIP แจ้งเพื่อนบ้านเพียงจำนวน hop ไปยังปลายทาง
- ปริมาณการแลกเปลี่ยนน้อย แต่ไม่มีแผนที่ทั้งหมดสำหรับตรวจสอบว่าตัวเลขของเพื่อนบ้านยังเป็นจริงหรือไม่
- กระบวนการที่ตารางสะท้อนสถานะใหม่หลังเกิดความขัดข้องเรียกว่า convergence
- OSPF ส่งต่อการเปลี่ยนแปลง topology จริง จึง converge ได้รวดเร็ว
- RIP อาจสร้าง loop ที่เพื่อนบ้านสองฝั่งเชื่อว่าอีกฝั่งเป็นเส้นทาง และแพ็กเก็ตจะวิ่งไปกลับจนกว่า TTL จะหมด
- RIP ถือว่า 16 hop คือเข้าถึงไม่ได้ และแม้มีมาตรการบรรเทาหลายอย่างก็ยัง converge ช้ากว่า OSPF จึงถูกแทนที่ในเครือข่าย production ส่วนใหญ่
-
Autonomous System และ BGP
- NSFNET เริ่มต้นในปี 1985 ในฐานะ backbone ที่เชื่อมเครือข่ายวิชาการระดับภูมิภาคหลายแห่ง
- ช่วงแรกห้ามทราฟฟิกเชิงพาณิชย์ และยกเลิกข้อจำกัดในปี 1991
- หลังปิดตัวลงในปี 1995 บทบาท backbone กระจายไปยังผู้ให้บริการสื่อสารเชิงพาณิชย์ที่แข่งขันกันหลายราย ทำให้อินเทอร์เน็ตกลายเป็นโครงสร้างที่ไม่มีเจ้าของรายเดียว
- อินเทอร์เน็ตประกอบด้วย Autonomous System (AS) หลายหมื่นระบบ เช่น ISP, มหาวิทยาลัย, ผู้ให้บริการโทรคมนาคม และบริษัทคลาวด์
- BGP ให้แต่ละ AS แจ้ง block ที่อยู่ที่เข้าถึงได้และเส้นทาง AS ที่ผ่านมาแก่เพื่อนบ้าน
- การเลือกเส้นทางจริงให้ความสำคัญกับนโยบายทางธุรกิจมากกว่าความเร็ว
- ความยาวของ AS path เป็นเงื่อนไขตัดสินที่ใช้หลังเกณฑ์ด้านนโยบายอย่าง local preference และ weight
- ผู้ประกอบการรายเล็กซื้อ transit โดยจ่ายค่าเชื่อมต่ออินเทอร์เน็ตทั้งหมดให้ผู้ให้บริการระดับบน
- เครือข่ายที่มีขนาดใกล้เคียงกันทำ peering แบบไม่คิดเงินกันเพื่อลดค่า transit
- ที่สิ่งอำนวยความสะดวก switching ร่วมของ Internet Exchange Point มีเครือข่ายหลายร้อยแห่งเชื่อมต่อกัน
- DE-CIX และ AMS-IX เชื่อมต่อเครือข่ายราว 1,000 แห่ง
- โดยทั่วไปนโยบาย BGP จะให้ความสำคัญตามลำดับคือเส้นทางลูกค้าที่จ่ายเงิน, เส้นทาง peer ฟรี และเส้นทางผู้ให้บริการที่ต้องจ่ายเงิน
- backbone ระดับ tier-1 อย่าง Lumen, Arelion และ NTT ทำ peering กันเอง และไม่จ่ายเงินให้ผู้ให้บริการระดับบน
สายเคเบิลใยแก้วนำแสงใต้ทะเล, Anycast, CDN
- สายเคเบิลใยแก้วนำแสงใต้ทะเลราว 600 เส้น ขนส่งทราฟฟิกข้ามทวีปแทบทั้งหมด
- ในปี 1956 TAT-1 ให้บริการวงจรเสียง 36 วงจรด้วยสายทองแดงแกนร่วม และวางเครื่องขยายสัญญาณทุก ๆ ประมาณ 70km
- การขยายสัญญาณแบบอะนาล็อกทำให้ทั้งสัญญาณและสัญญาณรบกวนดังขึ้นพร้อมกัน
- ในปี 1988 TAT-8 เป็นสายเคเบิลใยแก้วนำแสงข้ามมหาสมุทรแอตแลนติกเส้นแรก ให้ความจุเทียบเท่าวงจรเสียงหลายหมื่นวงจรจากใยแก้วสองเส้น
- ใยแก้วนำแสงใช้ total internal reflection ที่ขอบเขตระหว่าง core ที่มีดัชนีหักเหสูงกับ cladding ที่ล้อมรอบ
- ต่างจากกระจกทั่วไป การสะท้อนที่ขอบเขตไม่มีการสูญเสีย จึงนำแสงได้ราว 100km ก่อนขยายสัญญาณ
- wavelength-division multiplexing นำ bit stream ของเลเซอร์แต่ละตัวใส่บนความยาวคลื่นต่างกันแล้วรวมเข้ากับใยแก้วเส้นเดียว
- ความยาวคลื่นเดินทางร่วมกันในตัวกลางเชิงเส้น แล้วถูกแยกด้วยฟิลเตอร์ที่ปลายอีกด้าน
- ระบบจริงใส่ความยาวคลื่นประมาณ 100 ช่วงในใยแก้วหนึ่งเส้น และความยาวคลื่นใหม่หนึ่งช่วงเพิ่ม throughput ของแก้วใต้ทะเลเดิมได้เท่ากับหนึ่งสตรีม
- Anycast คือการที่เซิร์ฟเวอร์ในหลายทวีปใช้ IP เดียวกัน และโฆษณาเส้นทางเดียวกันผ่าน BGP จากแต่ละตำแหน่ง
- ไคลเอนต์ไปถึงเซิร์ฟเวอร์ที่อยู่ใกล้ในเชิง topology ได้โดยไม่ต้องเปลี่ยนการตั้งค่า
- CDN ใช้ Anycast หรือ DNS ที่รับรู้ตำแหน่ง เพื่อให้บริการเนื้อหาจากเซิร์ฟเวอร์ใกล้เคียง
- Cloudflare และ Akamai วางสำเนาวิดีโอ รูปภาพ และเว็บไซต์ไว้ทั่วโลก
- วิธีลดขีดจำกัดล่างของ latency ที่เกิดจากความเร็วแสง คือย้ายข้อมูลไปไว้ใกล้ผู้ใช้ก่อนที่จะมี request
- BGP โดยทั่วไปเชื่อถือประกาศจากเพื่อนบ้าน
- ในปี 2008 Pakistan Telecom โฆษณาเส้นทางที่เฉพาะเจาะจงกว่าเพื่อบล็อก YouTube ภายในประเทศ และข้อมูลนี้แพร่ไปทั่วโลก ทำให้ทราฟฟิกจำนวนมากไหลไปยัง Pakistan แล้วหายไป
- RPKI ตรวจสอบสิทธิ์ในการโฆษณาเส้นทางของ address block ผ่าน registry ที่ลงลายเซ็นไว้
เครือข่ายส่วนตัวในบ้านและ NAT
- เราเตอร์สำหรับบ้านหนึ่งตัวรวม Ethernet switch, อุปกรณ์ไร้สาย Wi‑Fi, DHCP, default gateway และฟังก์ชันแจกจ่ายการตั้งค่า DNS ไว้ด้วยกัน
- block IPv4 ส่วนตัวที่ไม่ถูก route บนอินเทอร์เน็ตสามารถนำกลับมาใช้ซ้ำได้เรื่อย ๆ
10.0.0.0/8มี 16,777,216 ที่อยู่172.16.0.0/12มี 1,048,576 ที่อยู่192.168.0.0/16มี 65,536 ที่อยู่
- NAT รักษาตารางที่เปลี่ยนที่อยู่และพอร์ตส่วนตัวภายในเป็นที่อยู่และพอร์ตสาธารณะของเราเตอร์ แล้วส่ง response กลับไปยังการสนทนาภายในเดิม
192.168.1.5ของบ้านต่างกันจะไม่ชนกัน เพราะแพ็กเก็ตไม่ออกจากเครือข่ายส่วนตัวของแต่ละบ้าน
- NAT บันทึกเฉพาะการสนทนาที่เริ่มจากภายใน จึงทิ้งการเชื่อมต่อภายนอกที่ไม่ได้ร้องขอ
- หากต้องการรันเซิร์ฟเวอร์ที่บ้าน ต้องใช้ port forwarding เพื่อเชื่อมพอร์ตภายนอกที่กำหนดไปยังอุปกรณ์ภายใน
- หาก ISP เปลี่ยนที่อยู่สาธารณะ ต้องติดตามเรื่องนี้แยกต่างหาก
- วิดีโอคอลแบบ P2P ต้องใช้เทคนิค NAT traversal เช่นให้ทั้งสองฝั่งส่งแพ็กเก็ตพร้อมกัน
- วิธีแก้ชั่วคราวต่อปัญหาที่อยู่ไม่พอ ทำให้อินเทอร์เน็ตถูกแบ่งเป็นเซิร์ฟเวอร์ที่รับ request จากภายนอก กับอุปกรณ์ที่เริ่ม request ได้เท่านั้น
127.0.0.0/8คือที่อยู่ loopback และระบบปฏิบัติการส่งกลับมายังคอมพิวเตอร์เครื่องเดิมโดยไม่ไปถึงการ์ดเครือข่าย- ตามธรรมเนียม
127.0.0.1คือlocalhost - เซิร์ฟเวอร์พัฒนาที่
127.0.0.1:3000เข้าถึงได้จากคอมพิวเตอร์เครื่องนั้นเท่านั้น
- ตามธรรมเนียม
- อุปกรณ์มีทั้ง MAC address ที่แทนฮาร์ดแวร์ภายใน และ IP address ที่ได้รับมอบหมายในเครือข่าย
DNS: ใช้ชื่อแทนตัวเลข
- ในช่วงแรกของ ARPANET กลุ่มของ Elizabeth Feinler แห่ง Stanford Research Institute จัดการชื่อและที่อยู่ทั้งหมดด้วยตนเองในไฟล์
HOSTS.TXTเพียงไฟล์เดียว- คอมพิวเตอร์แต่ละเครื่องดาวน์โหลดไฟล์นี้เป็นประจำ และอุปกรณ์ที่ไม่ได้ลงทะเบียนก็แทบจะค้นหาไม่พบ
- เมื่อเครือข่ายเติบโต ความสามารถในการแก้ไขของสำนักงานเดียวและจุดดาวน์โหลดเพียงจุดเดียวจึงกลายเป็นคอขวด
- Paul Mockapetris ออกแบบ DNS แบบอิงการมอบหมายสิทธิ์ในปี 1983
en.wikipedia.orgไล่ตามลำดับชั้นจากขวาไปซ้าย ได้แก่ root,org,wikipedia.org,en- namespace ถูกแบ่งเป็น zone ซึ่งแต่ละองค์กรจัดการ authoritative server ของตนเอง
- อุปกรณ์จะมอบการค้นหาให้ recursive resolver เช่นของ ISP หรือ Cloudflare
1.1.1.1- root บอก nameserver ของ
.org .orgบอก authoritative server ของwikipedia.org- authoritative server ของ Wikipedia ตอบ
91.198.174.192พร้อม TTL 3,600 วินาที
- root บอก nameserver ของ
- TTL ของ DNS ต่างจากจำนวน hop ของ IP เพราะเป็นอายุแคชในหน่วยวินาที
- เบราว์เซอร์ ระบบปฏิบัติการ และ recursive resolver แคชคำตอบ ทำให้ชื่อยอดนิยม resolve ได้ทันทีจากที่ใกล้ ๆ
- แคชช่วยลดโหลดของ DNS ชั้นบน แต่สร้างภาวะที่ค่าเดิมยังคงอยู่ตลอดช่วง TTL หลังจากมีการเปลี่ยนที่อยู่
- เมื่อซื้อโดเมน registrar จะบันทึก NS record ที่ระบุ authoritative nameserver ไว้ใน zone ของ registry เช่น
.com- zone file ของโดเมนมี A record สำหรับ IPv4 และ AAAA record สำหรับ IPv6 เป็นต้น
- Cloudflare, Route 53, registrar หรือเซิร์ฟเวอร์ที่ดูแลเองสามารถรับหน้าที่ authoritative DNS ได้
- DNS แบบรับรู้ตำแหน่งสามารถส่งคืนที่อยู่ของ data center ที่ต่างกันตามตำแหน่งของ query ได้
-
ความปลอดภัยและความเป็นส่วนตัวของ DNS
- DNS ในยุคแรกเชื่อถือคำตอบที่มาถึงก่อนและตรงกับ query
- Dan Kaminsky เปิดเผยในปี 2008 ถึงความเสี่ยงของ cache poisoning ที่ใช้ประโยชน์จากความเป็นไปได้ 65,536 ค่าใน transaction ID ขนาด 16 บิต
- หากผู้โจมตีส่งคำตอบปลอมที่เดา ID ถูกและข้อมูล nameserver อันตรายได้ก่อนคำตอบจริง resolver ก็อาจแคชข้อมูลเท็จตาม TTL ที่ผู้โจมตีกำหนด
- DNSSEC ทำให้แต่ละ zone แนบลายเซ็นเข้ารหัสกับ record และให้ resolver ตรวจสอบ chain ไปจนถึง root key ที่เชื่อถือ
- ลายเซ็นของคำตอบปลอมจะตรวจสอบไม่ผ่านและถูกทิ้ง
- DNSSEC รับประกันความแท้จริงและความถูกต้องครบถ้วน แต่ไม่ได้เข้ารหัสตัว query เอง
- DoT และ DoH ใส่ DNS query ไว้ภายใน TLS หรือ HTTPS ตามลำดับ เพื่อไม่ให้ผู้สังเกตการณ์บนเส้นทางอ่านโดเมนที่ถูกค้นหาได้
อินเทอร์เฟซผู้ใช้ที่เว็บเพิ่มเข้ามา
- จนถึงปลายทศวรรษ 1980 IP, TCP, Ethernet และ DNS เสร็จสมบูรณ์แล้ว แต่การเข้าถึงข้อมูลยังต้องรู้ระบบปลายทางและเครื่องมือ command line
- Tim Berners-Lee เสนอระบบแชร์เอกสารที่ CERN ในปี 1989 และเปิดใช้งาน World Wide Web ในปี 1991
- เว็บใช้ส่วนประกอบเรียบง่ายสามอย่าง
- HTML เชื่อมคำหรือองค์ประกอบในเอกสารไปยังเอกสารอื่นบนอินเทอร์เน็ต
- URL แสดงโปรโตคอล·เซิร์ฟเวอร์·พาธ เช่น
https,en.wikipedia.org,/wiki/Internet- พอร์ตพื้นฐานของ HTTPS คือ 443 และ HTTP คือ 80 จึงละไว้ได้
- HTTP แลกเปลี่ยน request และ response เช่น
GET /pageบน TCP200 OKคือสำเร็จ,404 Not Foundคือไม่มีเอกสาร,500 Internal Server Errorคือความล้มเหลวภายในเซิร์ฟเวอร์
- URL สร้างอยู่บน DNS, HTTP อยู่บน TCP และ TCP อยู่บน IP ดังนั้นจึงไม่จำเป็นต้องเปลี่ยนเราเตอร์เดิมเพื่อเว็บแบบใหม่นี้
- IP, TCP, DNS และ HTTP ถูกนิยามไว้ใน RFC ที่ทุกคนอ่านและ implement ได้ฟรี
- RFC เริ่มจากบันทึกที่นักพัฒนา ARPANET ใช้ขอความคิดเห็นในปี 1969
- IETF ทำมาตรฐานโปรโตคอลอินเทอร์เน็ตมาตั้งแต่ปี 1986
- พอร์ต 80 และ 443 ก็เป็นธรรมเนียมที่ RFC ลงทะเบียนไว้กับ IANA
- NCSA Mosaic วางรูปภาพไว้ในเอกสารในปี 1993 และ Netscape Navigator จากทีมเดียวกันช่วยแพร่เว็บสู่ครัวเรือนในปี 1994
TLS: แลกเปลี่ยนความลับบนสายสื่อสารสาธารณะ
- โปรโตคอลอินเทอร์เน็ตยุคแรกส่งไบต์แบบ plain text ดังนั้น router, ISP และเครือข่ายตัวกลางจึงอ่านหรือแก้ไขเนื้อหาได้
- การเข้ารหัสแบบกุญแจสาธารณะ สร้างคู่กุญแจสาธารณะและกุญแจส่วนตัวด้วยการคำนวณที่ทำได้ง่าย แต่การย้อนกลับทำได้ยากในทางปฏิบัติ
- ข้อมูลที่เข้ารหัสด้วยกุญแจสาธารณะจะถอดรหัสได้ด้วยกุญแจส่วนตัวเท่านั้น
- ลายเซ็นที่สร้างด้วยกุญแจส่วนตัวสามารถตรวจสอบได้ด้วยกุญแจสาธารณะ
- ในทางปฏิบัติ ลายเซ็นจะเซ็น hash ที่คำนวณจากทุกไบต์แทนการเซ็นทั้งข้อความ ทำให้ผูกการตรวจพบการเปลี่ยนแปลงไว้ด้วย
- ไม่ใช่แค่ RSA แต่ ECDSA และ Ed25519 ก็ให้สัญญาแบบเดียวกันคือเซ็นด้วยกุญแจส่วนตัวและตรวจสอบด้วยกุญแจสาธารณะ
- ปัญหาที่ผู้โจมตีแอบอ้างเป็นธนาคารและนำเสนอกุญแจสาธารณะของตนเอง แก้ได้ด้วย ใบรับรอง
- กุญแจสาธารณะของผู้ออกใบรับรองที่ฝังมากับเบราว์เซอร์ล่วงหน้าจะรับรองการผูกกันระหว่างตัวตนของเซิร์ฟเวอร์กับกุญแจสาธารณะ
- ตรวจสอบ chain ของลายเซ็นจากใบรับรองเซิร์ฟเวอร์ ผ่านผู้ออกใบรับรองระดับกลาง ไปจนถึง root ที่เชื่อถือ
- หาก chain ไปไม่ถึง root เบราว์เซอร์จะแสดงคำเตือนความปลอดภัยแบบเต็มหน้าจอ
- Netscape สร้าง SSL ในปี 1994 และต่อมาถูกทำให้เป็นมาตรฐานเป็น TLS
- TLS อยู่ระหว่าง TCP กับ HTTP
-
Diffie–Hellman และ session key
- ใน TLS handshake เบราว์เซอร์ส่ง
ClientHello, ชุด cipher suite ที่รองรับ และ public key share ส่วนเซิร์ฟเวอร์ตอบด้วย cipher suite ที่เลือก ใบรับรอง และ key share ที่ลงลายเซ็นแล้ว - ในตัวอย่างขนาดเล็ก เมื่อใช้ค่าคงที่สาธารณะ
g=5,p=23: - เบราว์เซอร์คำนวณ
A=5⁶ mod 23=8ด้วยค่าลับa=6 - เซิร์ฟเวอร์คำนวณ
B=5¹⁵ mod 23=19ด้วยค่าลับb=15 - เบราว์เซอร์คำนวณ
19⁶ mod 23=2และเซิร์ฟเวอร์คำนวณ8¹⁵ mod 23=2จึงได้ session key เดียวกัน - ผู้ดักฟังเห็น
g,p,A,Bแต่ด้วยขนาดที่ใช้จริง การแก้ปัญหา discrete logarithm เพื่อหาค่าลับทำได้ยาก - เบราว์เซอร์สมัยใหม่ใช้การแลกเปลี่ยนแบบ elliptic curve ที่ให้ความปลอดภัยเทียบเท่าด้วยตัวเลขที่เล็กกว่า
- การคำนวณกุญแจสาธารณะช้าเกินกว่าจะใช้กับทุกไบต์ จึงใช้เฉพาะการแลกเปลี่ยนกุญแจ และหลังจากนั้นใช้ กุญแจสมมาตร ที่รวดเร็ว ซึ่งเข้ารหัสและถอดรหัสด้วยกุญแจเดียวกัน
- รูปกุญแจล็อกของ HTTPS หมายความว่าอุปกรณ์ตัวกลางยังเห็นคู่สื่อสาร เวลา และปริมาณข้อมูลได้ แต่ไม่สามารถอ่านเนื้อหาได้
- ใน TLS handshake เบราว์เซอร์ส่ง
Encapsulation และ VPN
- แต่ละชั้นห่อข้อมูลของชั้นบนด้วย header ของตนเอง
- HTTP request อยู่ใน TLS record, ใน TCP segment, ใน IP packet, ใน Ethernet หรือ Wi‑Fi frame
- switch และ router ประมวลผลเฉพาะ header ด้านนอกที่ตนต้องใช้
- VPN ไม่ได้เข้ารหัสแค่ application stream แต่เข้ารหัส IP packet ทั้งก้อน แล้วใส่เป็น payload ของ packet ใหม่ที่มีที่อยู่ของ VPN server
- ISP เห็นเพียงทราฟฟิกเข้ารหัสที่รับส่งกับ VPN server
- เว็บไซต์ที่เข้าชมเห็นที่อยู่ของ VPN server แทนที่อยู่ของผู้ใช้
- ผู้ให้บริการ VPN รับช่วงตำแหน่งการมองเห็นที่ ISP เดิมเคยเห็นมา ดังนั้นจึงเป็นการย้ายจุดที่ต้องเชื่อถือ มากกว่าการเพิ่มความปลอดภัยแบบสัมบูรณ์
- จุดประสงค์ดั้งเดิมของ VPN คือเชื่อมต่อแล็ปท็อประยะไกลเข้ากับเครือข่ายส่วนตัวของบริษัท ให้ทำงานเหมือนเสียบอยู่ในออฟฟิศโดยตรง
สิ่งที่เกิดขึ้นจริงเมื่อคลิกลิงก์
- เบราว์เซอร์ดึงชื่อโฮสต์จาก
https://en.wikipedia.orgแล้วค้นหาที่อยู่ด้วย DNS - เปิดการเชื่อมต่อ TCP ไปยังพอร์ต 443 ของที่อยู่ที่ได้มา และทำ 3-way handshake
- ใน TLS handshake จะตรวจสอบ certificate chain และตกลง session key
- ส่งคำขอ
GET /wiki/Internetที่เข้ารหัสแล้ว - TCP จะจัดเรียงใหม่·ส่งซ้ำ·ประกอบ HTML ที่มาเป็นแพ็กเก็ต IP หลายสิบแพ็กเก็ตเข้าด้วยกัน, TLS ถอดรหัส และเบราว์เซอร์แปลผลแล้ววาดบนหน้าจอ
-
การวินิจฉัยปัญหาเป็นขั้นตอน
- หากเปิดเว็บไซต์ใด ๆ ไม่ได้ ให้ตรวจสอบช่วงก่อนถึง DNS เช่น Wi-Fi, เราเตอร์, ลิงก์ของ ISP
- สามารถส่ง
pingไปยังที่อยู่ที่รู้จัก เช่น1.1.1.1เพื่อตรวจสอบว่าออกไปถึงนอกเครือข่ายภายในได้หรือไม่ - หากเว็บไซต์อื่นใช้ได้ แต่ชื่อเฉพาะบางชื่อ resolve ไม่ได้ แสดงว่าเป็นปัญหา DNS cache หรือ record ของเว็บไซต์นั้น
- หาก DNS สำเร็จแต่การเชื่อมต่อ TCP timeout แสดงว่าเป็นปัญหาที่เซิร์ฟเวอร์หรือเครือข่ายระหว่างทาง และใช้
tracerouteตรวจสอบ hop ที่ไปถึงได้ - คำเตือนใบรับรองแบบเต็มหน้าจอคือความล้มเหลวในการตรวจสอบ TLS certificate chain
- หากการสื่อสารทั้งหมดสำเร็จและได้รับ HTTP
500แสดงว่าคำขอไปถึงเซิร์ฟเวอร์อย่างครบถ้วนแล้ว แต่ล้มเหลวภายในเซิร์ฟเวอร์ - DNS, TCP, TLS ต่างต้องใช้เวลาไป-กลับก่อนจะได้ไบต์แรกของเนื้อหา ดังนั้นแม้เป็นสายสัญญาณที่เร็ว การตอบสนองช่วงแรกก็อาจช้าได้
-
ส่วนหัวแพ็กเก็ตและการมองเห็นในแต่ละเลเยอร์
- คำขอตัวอย่างมีส่วนหัว IPv4 20 ไบต์ และส่วนหัว TCP 20 ไบต์
- ส่วนหัว IP มีความยาวรวม, แฟล็ก fragmentation, TTL, หมายเลขโปรโตคอล 6 ที่หมายถึง TCP, checksum, ที่อยู่ต้นทาง·ปลายทาง
- ส่วนหัว TCP มีพอร์ตต้นทางชั่วคราว
54211, พอร์ตปลายทาง443, sequence number, ACK number, แฟล็ก, window size, checksum - เราเตอร์ระหว่างทางอ่านเฉพาะส่วนหัว IP และไม่เปิดดูข้อมูล TCP หลัง 20 ไบต์หรือ payload ที่เข้ารหัสแล้ว
- TLS เข้ารหัส payload แต่ไม่เข้ารหัสส่วนหัว IP·TCP ที่จำเป็นต่อการส่งต่อ ดังนั้นจึงยังสังเกตเห็นปลายทางการสื่อสารและปริมาณข้อมูลได้
โครงสร้างแบบเลเยอร์ของอินเทอร์เน็ต
- Ethernet, Wi-Fi, fiber ในเลเยอร์ลิงก์·กายภาพทำหน้าที่ย้ายเฟรมและบิตภายในสื่อท้องถิ่นหนึ่ง ๆ
- IP ในเลเยอร์เครือข่ายทำ routing แพ็กเก็ตแบบ hop-by-hop ข้ามเครือข่ายอิสระต่าง ๆ
- TCP และ UDP ในเลเยอร์ขนส่งให้การส่งต่อแยกตามโปรแกรม ความน่าเชื่อถือ หรือ overhead ต่ำ
- TLS ในเลเยอร์ความปลอดภัยเข้ารหัสสายสื่อสารและยืนยันตัวตนของอีกฝ่าย
- HTTP และ DNS ในเลเยอร์แอปพลิเคชันให้ความหมายระดับผู้ใช้ในรูปแบบการขอเอกสารและการค้นหาชื่อ
- จากล่างขึ้นบน แต่ละเลเยอร์จะซ่อนข้อจำกัดของเลเยอร์ที่อยู่ถัดลงไปโดยตรง
- เลเยอร์ลิงก์ซ่อนปัญหาทางกายภาพของสายเคเบิลร่วมและสื่อไร้สาย
- IP ซ่อนขอบเขตเครือข่ายของเจ้าของที่แตกต่างกัน
- TCP ซ่อนการสูญหาย·การซ้ำ·การเปลี่ยนลำดับ
- TLS ป้องกันการดักฟังและการแก้ไขข้อมูล
- HTTP ทำให้กระบวนการทั้งหมดเรียบง่ายเป็นคำขอและคำตอบ
- โมเดล OSI ปี 1984 นิยาม 7 เลเยอร์ โดยแยก physical·data link และแบ่ง session·presentation·application ออกจากกัน
- อินเทอร์เน็ตจริงใช้โครงสร้าง TCP/IP ที่ถูกนำไปใช้ก่อนแล้ว แต่คำศัพท์ OSI อย่าง
layer 2switching,layer 3routing, และlayer 7application awareness ยังคงอยู่ในวงการ
- อินเทอร์เน็ตจริงใช้โครงสร้าง TCP/IP ที่ถูกนำไปใช้ก่อนแล้ว แต่คำศัพท์ OSI อย่าง
QUIC และอินเทอร์เน็ตที่วิวัฒนาการต่อเนื่อง
- เนื่องจากเลเยอร์พึ่งพาเฉพาะอินเทอร์เฟซด้านล่าง แม้เปลี่ยนสายทองแดงเป็นใยแก้วนำแสงหรือ Wi-Fi ก็ไม่จำเป็นต้องแก้ไขแอปพลิเคชัน
- HTTP/3 ใช้ QUIC บน UDP แทน TCP เพื่อทำทั้งความน่าเชื่อถือและการเข้ารหัสร่วมกัน
- ใน byte stream ที่มีลำดับเดียวของ TCP หากแพ็กเก็ตหนึ่งสูญหายในคำขอที่ถูก multiplex อยู่ คำขอที่ไม่เกี่ยวข้องก็ต้องรออยู่ข้างหลังด้วย
- QUIC ให้ stream ที่ ACK อย่างอิสระในแต่ละคำขอ ทำให้การสูญหายหยุดเฉพาะ stream นั้น
- หากทำ TLS handshake ตามลำดับหลัง TCP handshake จะต้องใช้เวลาไป-กลับสองครั้งก่อนข้อมูล HTTP
- QUIC รวมการตั้งค่าการขนส่งและการเข้ารหัสไว้ใน handshake เดียว และเมื่อกลับไปยังเซิร์ฟเวอร์ที่จดจำไว้ สามารถเริ่มได้โดยไม่ต้องมีเวลาไป-กลับเพิ่มเติม
- การเชื่อมต่อ TCP ผูกกับชุด IP·พอร์ต แต่ QUIC รักษาการเชื่อมต่อไว้ได้แม้โทรศัพท์มือถือสลับจาก Wi-Fi ไปเป็นเซลลูลาร์จนที่อยู่เปลี่ยนไป
- IP เพียงส่งต่อ payload ตามพอร์ตเท่านั้น ไม่ได้จำกัดโปรโตคอลภายใน
- SSH ใช้สำหรับ remote shell, SMTP สำหรับอีเมล, MQTT สำหรับ publish·subscribe ของอุปกรณ์ IoT ที่มีข้อจำกัด, WebRTC สำหรับเสียง·วิดีโอโดยตรงระหว่างเบราว์เซอร์, ส่วน game engine ใช้โปรโตคอล UDP แบบกำหนดเองที่ทิ้งการอัปเดตตำแหน่งเก่า
- Google นำ QUIC ไปใช้แบบ proprietary ระหว่าง Chrome กับเซิร์ฟเวอร์ของตนก่อน จากนั้น IETF จึงทำให้เป็นมาตรฐานในชื่อ HTTP/3 โดยไม่จำเป็นต้องเปลี่ยนโครงสร้างพื้นฐานอินเทอร์เน็ตเดิม
- แม้ที่อยู่ IPv4 จะหมดลงแล้ว การเปลี่ยนผ่านไป IPv6 ก็ยังดำเนินอยู่เพราะต้นทุนการเปลี่ยนเลเยอร์พื้นฐาน และวิดีโอเรียลไทม์·เกมบนคลาวด์·การทำงานร่วมกันระยะไกลยังคงกดดันขีดจำกัดด้าน latency ต่อไป
- ดาวเทียมวงโคจรต่ำกำลังแข่งขันกับสายเคเบิลใต้ทะเลในด้านเวลาไป-กลับ และโปรโตคอลในอนาคตก็จะเกิดขึ้นผ่านข้อประนีประนอมใหม่ ๆ เมื่อแอปพลิเคชันปัจจุบันชนกับข้อจำกัดของเลเยอร์เดิม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เมื่อเทียบกันแล้ว บทความนี้ก็ จัดโครงสร้างได้ดีมาก เช่นกัน: https://explained-from-first-principles.com/internet/
ตามแนวทางปฏิบัติ การทิ้งไว้แค่คำชมแบบนี้อาจดูเสียมารยาท แต่เป็นบทความที่ยอดเยี่ยมจริง ๆ ผู้เขียนคลี่คลาย กระบวนการที่เครือข่ายถือกำเนิดขึ้นและหลักการทำงานของมัน ได้อย่างมีประโยชน์และเป็นระบบ พร้อมถักทอออกมาเป็นเรื่องราวที่น่าสนใจ
มีคนตอบว่าเป็นบทความที่ LLM เขียน แต่ต่อให้เป็นเช่นนั้นก็ไม่สำคัญ งานเขียนที่ดีก็คืองานเขียนที่ดี
“เรามีภาษาคลิงออนและภาษาเอลฟ์อยู่แล้ว ตอนนี้มี ภาษา LLM เพิ่มขึ้นมาแล้ว”
เนื้อหาเองอาจเป็นสิ่งที่ผู้เขียนเขียนทั้งหมดก็ได้ แต่เมื่อเปรียบเทียบสำนวนในบทความกับคอมเมนต์ของผู้เขียน ผมมั่นใจว่าได้ผ่าน การเกลาแก้ด้วย AI ในระดับค่อนข้างมาก
ไม่ได้แปลว่านั่นเป็นเรื่องเลวร้ายเสมอไป แต่การกล่าวหาคนที่สังเกตเห็นเรื่องนี้ว่าเป็นพวกหวาดระแวงก็ไม่ยุติธรรมเช่นกัน
ออร์เดอร์ขนาดใหญ่ครั้งแรกที่ Digital PDP-1 ได้รับคือเพื่อนำไปใช้กับ งานรับส่งข้อความด้วยเทปเจาะรูของ ITT: https://www.eejournal.com/article/gordon-bell-1934-2024-gran...
อยากช่วยถ่วงดุลกับปฏิกิริยาเชิงลบ ผมอ่านไปแค่ไม่กี่ส่วนแรก แต่ผู้เขียนอธิบายได้ดีมากว่าแนวคิดหลายอย่างพัฒนาขึ้นมาจากจุดเริ่มต้นที่เรียบง่ายได้อย่างไร
มัน อัดรวมไว้ในบทความเดียว ซึ่งเป็นแนวคิดจำนวนมากที่ผมเรียนรู้มาจากการค้นคว้าและลองผิดลองถูกระหว่างทำงานเป็นวิศวกรซอฟต์แวร์ หวังว่า Faza จะทำและแชร์บทความแบบนี้ต่อไป
ผมรู้สึกว่าเนื้อหาที่มีอยู่เดิมมักโฟกัสแต่รายละเอียดเชิงเทคนิค หรือไม่ก็ทำให้แนวคิดง่ายเกินไปเพื่อให้ใคร ๆ ก็ตามตามทันได้ ดังนั้นผมจึงพยายามทำคำอธิบายที่ ละเอียดแต่ไม่ยากเกินกว่าจะตามได้
ตอนแรกตั้งใจจะเขียนแค่บทความกับแผนภาพ แต่พบว่าการใช้ซิมูเลชันช่วยอธิบายได้ดีกว่ามาก
โครงสร้างและการถ่ายทอดของบทความยอดเยี่ยม และทำให้นึกถึงผลงานของ Bartosz Ciechanowski: https://ciechanow.ski
ผมสงสัยว่า เทคสแต็กที่ใช้กับองค์ประกอบแบบโต้ตอบ ในบทความคืออะไร และถ้าทำใหม่จะเลือกเทคโนโลยีอื่นหรือไม่
ต่อมาจึงรู้ว่า Astro รองรับ MDX ซึ่งสามารถฝังคอมโพเนนต์ JavaScript แบบกำหนดเองได้ แอนิเมชันช่วงแรกทำด้วย JavaScript ล้วน ๆ, SVG และ transition ของ CSS แต่เมื่อซิมูเลชันซับซ้อนขึ้น ผมก็เริ่มใช้ React เพื่อจัดการสถานะ
คอมเมนต์ที่ค่อนข้างปกติสองอันในนี้ถูกทำเครื่องหมายเป็น
[dead]อยู่ ถ้าเป็น คอมเมนต์บอต ก็อยากรู้ว่าใช้อะไรดูถึงแยกแยะได้หลังโหลดหน้าแล้วเปิด โหมดเครื่องบิน แอนิเมชันที่ก่อนหน้านี้ยังไม่เข้ามาในหน้าจอจะไม่เล่น เป็นพฤติกรรมที่แปลก
ตอนนี้แก้ไขและปล่อยแล้ว โดยให้ ดาวน์โหลดซิมูเลชันทั้งหมดตอนโหลดหน้า แล้วค่อยเล่นเมื่อเข้ามาในหน้าจอ
ปฏิกิริยาที่นี่เป็นลบเกินไป ผมไล่อ่านหลายส่วนแล้ว แอนิเมชันดูดี บทความอ่านง่าย และเนื้อหาก็ไม่ใช่ของที่ถูกสร้างขึ้นมาแบบคุณภาพต่ำ
ภูมิหลังทางประวัติศาสตร์ของโทรเลข น่าสนใจ และยังพูดถึงความแตกต่างระหว่างแบนด์วิดท์กับ latency อย่างใส่ใจด้วย เพียงแต่บทความยาวเกินไป จึงดูไม่น่าเป็นไปได้ที่ผู้อ่านซึ่งไม่ค่อยรู้เรื่องนี้จะอ่านจนจบ