4 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • อินเทอร์เน็ตแปลงเสียง วิดีโอ และข้อความให้เป็น รูปแบบของไฟฟ้า แสง และคลื่นวิทยุ แล้วส่งผ่านอุปกรณ์ของผู้ให้บริการอิสระหลายราย โดยส่งข้อมูลด้วยการตัดสินใจภายในแต่ละฮ็อปเท่านั้น ไม่มีผู้ควบคุมกลางหรือหน่วยงานเดียวที่รู้เส้นทางทั้งหมด
  • การสร้างสัญญาณดิจิทัลซ้ำของโทรเลข การสลับวงจรของเครือข่ายโทรศัพท์ การสลับแพ็กเก็ต, 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
    • เราเตอร์แต่ละตัวไม่จำเป็นต้องรู้แผนที่อินเทอร์เน็ตทั้งหมด แค่รู้เพื่อนบ้านและทิศทางพื้นฐาน ก็จะไปถึงปลายทางได้ผ่านการตัดสินใจแบบเดียวกันของเราเตอร์ตัวถัดไป
  • จาก 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 วัดความหน่วงไปยังโฮสต์หนึ่ง ๆ จากเวลาไปกลับของ ICMP Echo Request และ Echo Reply
    • traceroute เพิ่ม 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 ทำหน้าที่ซิงโครไนซ์หมายเลขลำดับเริ่มต้นของทั้งสองฝั่ง
      1. ไคลเอนต์ส่ง SYN, seq=5000
      1. เซิร์ฟเวอร์ตอบกลับด้วย SYN-ACK, seq=9000, ack=5001
      1. ไคลเอนต์ส่ง 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
    1. root บอก nameserver ของ .org
    2. .org บอก authoritative server ของ wikipedia.org
    3. authoritative server ของ Wikipedia ตอบ 91.198.174.192 พร้อม TTL 3,600 วินาที
  • 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
  • เว็บใช้ส่วนประกอบเรียบง่ายสามอย่าง
    1. HTML เชื่อมคำหรือองค์ประกอบในเอกสารไปยังเอกสารอื่นบนอินเทอร์เน็ต
    2. URL แสดงโปรโตคอล·เซิร์ฟเวอร์·พาธ เช่น https, en.wikipedia.org, /wiki/Internet
      • พอร์ตพื้นฐานของ HTTPS คือ 443 และ HTTP คือ 80 จึงละไว้ได้
    3. HTTP แลกเปลี่ยน request และ response เช่น GET /page บน TCP
      • 200 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 หมายความว่าอุปกรณ์ตัวกลางยังเห็นคู่สื่อสาร เวลา และปริมาณข้อมูลได้ แต่ไม่สามารถอ่านเนื้อหาได้

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 คือเชื่อมต่อแล็ปท็อประยะไกลเข้ากับเครือข่ายส่วนตัวของบริษัท ให้ทำงานเหมือนเสียบอยู่ในออฟฟิศโดยตรง

สิ่งที่เกิดขึ้นจริงเมื่อคลิกลิงก์

  1. เบราว์เซอร์ดึงชื่อโฮสต์จาก https://en.wikipedia.org แล้วค้นหาที่อยู่ด้วย DNS
  2. เปิดการเชื่อมต่อ TCP ไปยังพอร์ต 443 ของที่อยู่ที่ได้มา และทำ 3-way handshake
  3. ใน TLS handshake จะตรวจสอบ certificate chain และตกลง session key
  4. ส่งคำขอ GET /wiki/Internet ที่เข้ารหัสแล้ว
  5. 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 2 switching, layer 3 routing, และ layer 7 application awareness ยังคงอยู่ในวงการ

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 ความคิดเห็น

 
GN⁺ 4 시간 전
ความคิดเห็นบน Hacker News
  • เมื่อเทียบกันแล้ว บทความนี้ก็ จัดโครงสร้างได้ดีมาก เช่นกัน: https://explained-from-first-principles.com/internet/

  • ตามแนวทางปฏิบัติ การทิ้งไว้แค่คำชมแบบนี้อาจดูเสียมารยาท แต่เป็นบทความที่ยอดเยี่ยมจริง ๆ ผู้เขียนคลี่คลาย กระบวนการที่เครือข่ายถือกำเนิดขึ้นและหลักการทำงานของมัน ได้อย่างมีประโยชน์และเป็นระบบ พร้อมถักทอออกมาเป็นเรื่องราวที่น่าสนใจ
    มีคนตอบว่าเป็นบทความที่ LLM เขียน แต่ต่อให้เป็นเช่นนั้นก็ไม่สำคัญ งานเขียนที่ดีก็คืองานเขียนที่ดี

    • แอนิเมชันแรกควรมี เซิร์ฟเวอร์ที่โฮสต์แพลตฟอร์มรับส่งข้อความ อยู่ด้วย ไม่อย่างนั้นก็ควรเปลี่ยนตัวอย่างนั้นให้เป็นแอปพลิเคชันแบบ P2P จะดีกว่า
    • ตอนเช้าตื่นขึ้นมาแล้วจู่ ๆ ก็นึกขึ้นได้ เลยลองแต่งอะไรคล้ายไฮกุด้วยตัวเองในฐานะมนุษย์
      “เรามีภาษาคลิงออนและภาษาเอลฟ์อยู่แล้ว ตอนนี้มี ภาษา LLM เพิ่มขึ้นมาแล้ว”
  • เนื้อหาเองอาจเป็นสิ่งที่ผู้เขียนเขียนทั้งหมดก็ได้ แต่เมื่อเปรียบเทียบสำนวนในบทความกับคอมเมนต์ของผู้เขียน ผมมั่นใจว่าได้ผ่าน การเกลาแก้ด้วย AI ในระดับค่อนข้างมาก
    ไม่ได้แปลว่านั่นเป็นเรื่องเลวร้ายเสมอไป แต่การกล่าวหาคนที่สังเกตเห็นเรื่องนี้ว่าเป็นพวกหวาดระแวงก็ไม่ยุติธรรมเช่นกัน

  • ออร์เดอร์ขนาดใหญ่ครั้งแรกที่ Digital PDP-1 ได้รับคือเพื่อนำไปใช้กับ งานรับส่งข้อความด้วยเทปเจาะรูของ ITT: https://www.eejournal.com/article/gordon-bell-1934-2024-gran...

  • อยากช่วยถ่วงดุลกับปฏิกิริยาเชิงลบ ผมอ่านไปแค่ไม่กี่ส่วนแรก แต่ผู้เขียนอธิบายได้ดีมากว่าแนวคิดหลายอย่างพัฒนาขึ้นมาจากจุดเริ่มต้นที่เรียบง่ายได้อย่างไร
    มัน อัดรวมไว้ในบทความเดียว ซึ่งเป็นแนวคิดจำนวนมากที่ผมเรียนรู้มาจากการค้นคว้าและลองผิดลองถูกระหว่างทำงานเป็นวิศวกรซอฟต์แวร์ หวังว่า Faza จะทำและแชร์บทความแบบนี้ต่อไป

    • จุดประสงค์ของบทความเหล่านี้คือการอธิบายว่าสิ่งที่เรามองว่าเป็นเรื่องปกตินั้นพัฒนาขึ้นมาได้อย่างไร ระหว่างเขียน ผมเองก็ได้เรียนรู้อะไรใหม่ ๆ มากมาย และพบส่วนที่ตัวเองยังเข้าใจไม่พอด้วย
      ผมรู้สึกว่าเนื้อหาที่มีอยู่เดิมมักโฟกัสแต่รายละเอียดเชิงเทคนิค หรือไม่ก็ทำให้แนวคิดง่ายเกินไปเพื่อให้ใคร ๆ ก็ตามตามทันได้ ดังนั้นผมจึงพยายามทำคำอธิบายที่ ละเอียดแต่ไม่ยากเกินกว่าจะตามได้
      ตอนแรกตั้งใจจะเขียนแค่บทความกับแผนภาพ แต่พบว่าการใช้ซิมูเลชันช่วยอธิบายได้ดีกว่ามาก
  • โครงสร้างและการถ่ายทอดของบทความยอดเยี่ยม และทำให้นึกถึงผลงานของ Bartosz Ciechanowski: https://ciechanow.ski
    ผมสงสัยว่า เทคสแต็กที่ใช้กับองค์ประกอบแบบโต้ตอบ ในบทความคืออะไร และถ้าทำใหม่จะเลือกเทคโนโลยีอื่นหรือไม่

    • ตอนแรกผมสร้างเว็บสแตติกบน Astro โดยไม่ได้วางแผนจะใส่องค์ประกอบแบบโต้ตอบ และเขียนเนื้อหาในไฟล์ Markdown
      ต่อมาจึงรู้ว่า Astro รองรับ MDX ซึ่งสามารถฝังคอมโพเนนต์ JavaScript แบบกำหนดเองได้ แอนิเมชันช่วงแรกทำด้วย JavaScript ล้วน ๆ, SVG และ transition ของ CSS แต่เมื่อซิมูเลชันซับซ้อนขึ้น ผมก็เริ่มใช้ React เพื่อจัดการสถานะ
  • คอมเมนต์ที่ค่อนข้างปกติสองอันในนี้ถูกทำเครื่องหมายเป็น [dead] อยู่ ถ้าเป็น คอมเมนต์บอต ก็อยากรู้ว่าใช้อะไรดูถึงแยกแยะได้

    • รู้สึกว่าบทความบล็อกส่วนใหญ่บน HN และคอมเมนต์จำนวนไม่น้อยเขียนโดย AI เป็นหลัก แต่ในอินเทอร์เน็ตแบบไม่ระบุตัวตนก็มีองค์ประกอบแบบนี้อยู่เสมอมาตั้งแต่ก่อนแล้ว
  • หลังโหลดหน้าแล้วเปิด โหมดเครื่องบิน แอนิเมชันที่ก่อนหน้านี้ยังไม่เข้ามาในหน้าจอจะไม่เล่น เป็นพฤติกรรมที่แปลก

    • ผมเป็นผู้เขียน ก่อนหน้านี้เราจะดาวน์โหลดซิมูเลชันเฉพาะตอนที่เลื่อนเข้ามาในหน้าจอเท่านั้น
      ตอนนี้แก้ไขและปล่อยแล้ว โดยให้ ดาวน์โหลดซิมูเลชันทั้งหมดตอนโหลดหน้า แล้วค่อยเล่นเมื่อเข้ามาในหน้าจอ
  • ปฏิกิริยาที่นี่เป็นลบเกินไป ผมไล่อ่านหลายส่วนแล้ว แอนิเมชันดูดี บทความอ่านง่าย และเนื้อหาก็ไม่ใช่ของที่ถูกสร้างขึ้นมาแบบคุณภาพต่ำ
    ภูมิหลังทางประวัติศาสตร์ของโทรเลข น่าสนใจ และยังพูดถึงความแตกต่างระหว่างแบนด์วิดท์กับ latency อย่างใส่ใจด้วย เพียงแต่บทความยาวเกินไป จึงดูไม่น่าเป็นไปได้ที่ผู้อ่านซึ่งไม่ค่อยรู้เรื่องนี้จะอ่านจนจบ

    • ผมรู้สึกว่าเนื้อหาที่มีอยู่เดิมเหมือนตำราเรียนเกินไป หรือไม่ก็เป็นภาพรวมกว้างเกินไป จึงอยากช่วยให้ทุกคนเข้าใจแนวคิดอย่างละเอียด เลยพยายามอธิบายให้น่าสนใจขึ้น
    • การปัดคนอื่นทิ้งทำให้รู้สึกได้ง่ายว่าตัวเองเหนือกว่า โดยเฉพาะบน HN การอ่านบทความยาว ๆ จริง ๆ แล้วประเมินเพื่อให้คำวิจารณ์เชิงสร้างสรรค์ต้องใช้เวลา ดังนั้น ยิ่งเป็นปฏิกิริยาเร่งด่วน ก็ยิ่งมีแนวโน้มจะเป็นลบหรือหลุดจากบริบท