2024-09-28 10:20:39 +05:00
# Цели проектирования
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
- Ядро Xray предоставляет платформу, которая поддерживает необходимые функции сетевого прокси, и на е е основе можно выполнять дальнейшую разработку для улучшения пользовательского опыта.
- Кроссплатформенность является основным принципом, чтобы снизить затраты на вторичную разработку.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
## Архитектура
2024-07-16 19:42:05 +05:00
![Architecture ](./framework.png )
2024-09-28 10:20:39 +05:00
Ядро состоит из трех уровней: уровня приложений, уровня прокси и транспортного уровня.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Каждый уровень содержит несколько модулей, которые независимы друг от друга, и модули одного типа могут быть легко заменены.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
### Уровень приложений
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Уровень приложений содержит некоторые функции, которые часто используются на уровне прокси. Эти функции абстрагированы, чтобы их можно было повторно использовать в разных модулях прокси.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Модули уровня приложений должны быть реализованы чисто программным способом, без привязки к аппаратному обеспечению или платформе.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Список важных модулей:
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
- Dispatcher: используется для передачи данных, полученных входящим прокси, исходящему прокси;
- Router: модуль маршрутизации, см. [настройки маршрутизации ](../../config/routing.md );
- DNS: встроенный модуль DNS-сервера;
- Proxy Manager: менеджер прокси;
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
### Уровень прокси
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Уровень прокси делится на две части: входящий прокси (Inbound Proxy) и исходящий прокси (Outbound Proxy).
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
Эти две части независимы друг от друга, входящий прокси не зависит от какого-либо конкретного исходящего прокси, и наоборот.
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
#### Входящий прокси
2024-07-16 19:42:05 +05:00
2024-09-28 10:20:39 +05:00
- Реализует интерфейс [proxy.Inbound ](https://github.com/xtls/Xray-core/blob/main/proxy/proxy.go );
#### Исходящий прокси
- Реализует интерфейс [proxy.Outbound ](https://github.com/xtls/Xray-core/blob/main/proxy/proxy.go );
### Транспортный уровень
Транспортный уровень предоставляет модули инструментов, связанных с передачей сетевых данных.
2024-07-16 19:42:05 +05:00