نظرة عامة على البنية المعمارية
Xray-core هو منصة وكيل شبكي معيارية مكتوبة بلغة Go. يعالج حركة مرور الشبكة عبر خط أنابيب من الوارد (inbound) ← المُوزِّع (dispatcher) ← المُوجِّه (router) ← الصادر (outbound)، مع بروتوكولات قابلة للتوصيل في كل طرف وطبقة نقل قابلة للتهيئة تحتها.
هيكل المشروع
xray-core/
core/ # Instance، تحميل الإعدادات، دورة الحياة
app/ # ميزات على مستوى التطبيق
dispatcher/ # المُوزِّع المركزي (وارد←توجيه←صادر)
proxyman/ # مدراء المعالجات الواردة/الصادرة
router/ # محرك التوجيه، القواعد، موازنات الحمل
dns/ # مُحلل DNS، Fake-IP
policy/ # سياسات المهلة الزمنية والمخزن المؤقت
stats/ # إحصائيات حركة المرور
commander/ # واجهة إدارة gRPC
reverse/ # نفق الوكيل العكسي
observatory/ # فحص الصحة
common/ # أدوات مساعدة مشتركة
buf/ # تجمع المخازن المؤقتة (أجزاء بحجم 8KB)
net/ # بدائيات الشبكة (Address، Destination)
protocol/ # تجريدات البروتوكول (RequestHeader، AddressParser)
session/ # سياق الجلسة (Inbound، Outbound، Content)
mux/ # تعدد إرسال التدفقات
xudp/ # UDP-over-mux مع عنونة لكل حزمة
signal/ # Notifier، ActivityTimer، Done
strmatcher/ # مطابقة النصوص/النطاقات (full، domain، substr، regex، MPH)
crypto/ # AES، ChaCha20، إلخ.
singbridge/ # جسر مكتبة sing-box
features/ # واجهات الميزات (traits/protocols)
dns/ # واجهات dns.Client، dns.FakeDNSEngine
inbound/ # واجهات inbound.Manager، inbound.Handler
outbound/ # واجهات outbound.Manager، outbound.Handler
routing/ # واجهات routing.Dispatcher، routing.Router
policy/ # واجهة policy.Manager
stats/ # واجهة stats.Manager
proxy/ # تنفيذات البروتوكولات
vless/ # VLESS (مع Vision، XUDP، reverse)
vmess/ # VMess (AEAD)
trojan/ # Trojan
shadowsocks/ # Shadowsocks (الكلاسيكي)
shadowsocks_2022/ # Shadowsocks 2022
socks/ # SOCKS5
http/ # وكيل HTTP
dokodemo/ # الوكيل الشفاف (dokodemo-door)
freedom/ # الصادر المباشر
blackhole/ # الصادر الفارغ
dns/ # وكيل DNS
loopback/ # إعادة الدخول إلى التوجيه
wireguard/ # نفق WireGuard
hysteria/ # Hysteria2
tun/ # جهاز TUN + مكدس IP لـ gVisor
transport/ # طبقة النقل
internet/ # سجل النقل + التنفيذات
tcp/ # TCP
websocket/ # WebSocket
grpc/ # gRPC (gun)
httpupgrade/ # HTTP Upgrade
splithttp/ # Split HTTP
kcp/ # mKCP (UDP موثوق)
tls/ # TLS + uTLS
reality/ # REALITY
hysteria/ # QUIC (نقل Hysteria)
udp/ # مُوزِّع UDP
pipe/ # أنبوب داخلي (Reader↔Writer)
infra/conf/ # تحويل إعدادات JSON إلى protobufتدفق البيانات عالي المستوى
flowchart LR
Client([العميل]) -->|TCP/UDP| Inbound
subgraph Xray["نسخة Xray-core"]
Inbound["معالج الوارد<br/>(VLESS/VMess/Trojan/...)"]
Dispatcher["المُوزِّع<br/>(الاستشعار + التوجيه)"]
Router["المُوجِّه<br/>(القواعد + موازن الحمل)"]
Outbound["معالج الصادر<br/>(Freedom/VLESS/VMess/...)"]
Inbound -->|"Dispatch(ctx, dest)"| Dispatcher
Dispatcher -->|"PickRoute(ctx)"| Router
Router -->|وسم الصادر| Dispatcher
Dispatcher -->|"Dispatch(ctx, link)"| Outbound
end
Outbound -->|النقل| Server([الخادم البعيد])الاعتماديات الرئيسية
| الاعتمادية | الغرض |
|---|---|
google.golang.org/protobuf | تسلسل الإعدادات |
google.golang.org/grpc | نقل gRPC + واجهة Commander |
gvisor.dev/gvisor | مكدس TCP/IP في مساحة المستخدم (لـ TUN) |
github.com/gorilla/websocket | نقل WebSocket |
github.com/apernet/quic-go | نقل QUIC (Hysteria) |
github.com/refraction-networking/utls | انتحال بصمة TLS |
github.com/xtls/reality | بروتوكول REALITY |
github.com/sagernet/sing-shadowsocks | Shadowsocks 2022 |
github.com/miekg/dns | تحليل رسائل DNS |
golang.zx2c4.com/wireguard | تنفيذ WireGuard |
lukechampine.com/blake3 | تجزئة BLAKE3 (XUDP GlobalID) |
مبادئ التصميم
إعدادات Protobuf أولاً: جميع الإعدادات مُعرَّفة كرسائل protobuf. صيغة JSON ما هي إلا تنسيق تسلسل يُحوَّل إلى protobuf عند التحميل.
سجل الميزات: تُسجِّل المكونات نفسها عبر
common.RegisterConfig()مع نوع إعداداتها في protobuf. يحلInstanceالاعتماديات تلقائياً.بنية مبنية على الواجهات: العقود الأساسية مُعرَّفة في
features/كواجهات Go. التنفيذات فيapp/وproxy/تُحقق هذه الواجهات.تدفق بيانات مبني على الأنابيب: يتم الربط بين الوارد والصادر عبر
transport/pipe، مما يوفر قنوات مُخزَّنة مؤقتاً واعية بالضغط العكسي.اعتماد كبير على السياق: تتدفق بيانات الجلسة الوصفية (المصدر، الوجهة، المستخدم، الوسوم، إعدادات الاستشعار) عبر
context.Contextباستخدام مفاتيح مُنمَّطة.