เบื้องหลังการทำงาน

เหมือน scp โดยไม่ต้องรู้ IP address เพิ่มไฟล์ใน AltSendme แล้วจะได้ตั๋วที่วางได้ให้ใครก็ตามที่ต้องการไฟล์ของคุณ AltSendme จะเชื่อมอุปกรณ์โดยตรงและถ่ายโอนข้อมูลโดยไม่ต้องมีบัญชีหรือการตั้งค่า

กราฟิก hero ของ AltSendme

แนวคิดสำคัญ

1. Blobs

การจัดเก็บและถ่ายโอน blob แบบ content-addressed iroh-blobs รองรับการถ่ายโอน request/response และ streaming ของ blob ขนาดใดก็ได้ ด้วย stream ที่ตรวจสอบ BLAKE3 และลิงก์แบบ content-addressed

  • Blob: ลำดับ byte ที่ไม่โปร่งใส (ไม่มี metadata ฝังอยู่)
  • Link: hash BLAKE3 32 byte ที่ระบุ blob
  • HashSeq: blob ที่มีลำดับของลิงก์ (มีประโยชน์สำหรับ chunking/tree)
  • Provider / Requester: provider ให้ข้อมูล requester ดึงข้อมูล endpoint สามารถเป็นทั้งสองได้

2. Tickets

ตั๋วเป็นวิธีแชร์ข้อมูลการเชื่อมต่อระหว่าง iroh endpoints เป็น token เดียวที่มีทุกอย่างที่จำเป็นในการเชื่อมต่อ endpoint อื่นหรือดึง blob มี Ed25519 NodeIds: ตัวตนทาง cryptography ของอุปกรณ์สำหรับการยืนยันตัวตน วิธีนี้ดีกว่าระบบ P2P เต็มรูปแบบที่ broadcast IP ของคุณ ใน iroh ตั๋วใช้สร้าง "cozy network" ระหว่าง peer ที่คุณต้องการเชื่อมต่ออย่างชัดเจน สามารถไป "full p2p" และ broadcast รายละเอียดการเชื่อมต่อได้ แต่ตั๋วเป็นค่าเริ่มต้นที่ดีกว่า

3. การค้นหา peer, NAT Traversal และ Hole Punching

peer ลงทะเบียนกับ relay server สาธารณะโอเพนซอร์สเมื่อเริ่มต้นเพื่อข้าม firewall และ NAT และตั้งค่าการเชื่อมต่อ เมื่อเชื่อมต่อแล้ว iroh ใช้ QUIC hole punching เพื่อพยายามสร้างการเชื่อมต่อ P2P โดยตรง ข้าม relay หากเชื่อมต่อตรงได้ การสื่อสารจะเกิดขึ้นโดยตรงพร้อม E2E encryption มิฉะนั้น relay จะทำงานเป็น fallback ชั่วคราว ทำให้เชื่อมต่อได้อย่างราบรื่นทั้งในเครือข่ายท้องถิ่นและอินเทอร์เน็ต

4. QUIC และการเข้ารหัส

QUIC เป็นโปรโตคอลขนส่งสมัยใหม่บน UDP ออกแบบมาเพื่อลด latency และปรับปรุงประสิทธิภาพเว็บเหนือ TCP พัฒนาโดย Google และมาตรฐานโดย IETF เป็นพื้นฐานของ HTTP/3 รวม TLS 1.3 เข้าในโปรโตคอลโดยตรง

QUIC ให้พลังพิเศษดังนี้:

  • การเข้ารหัสและการยืนยันตัวตน
  • stream multiplexing
  • ไม่มีปัญหา head-of-line blocking
  • ลำดับความสำคัญของ stream
  • ตัวควบคุม congestion ที่ใช้ร่วมกัน
  • การขนส่ง datagram ที่เข้ารหัสและไม่น่าเชื่อถือ
  • การสร้างการเชื่อมต่อ zero round-trip หากเคยเชื่อมต่อ endpoint นั้นมาก่อน

5. Relay

AltSendme ใช้ relay server สาธารณะโอเพนซอร์สเพื่อสร้างการเชื่อมต่อตรง เร่งเวลาเชื่อมต่อเริ่มต้น และเป็น fallback หากการเชื่อมต่อตรงล้มเหลว การเชื่อมต่อทั้งหมดเข้ารหัส E2E relay เป็น "UDP socket อีกตัว" สำหรับส่งแพ็กเก็ตที่เข้ารหัส อ่านเพิ่มเติม

เบื้องหลังการทำงาน | AltSendme