Tài liệu

Các enumeration dùng chung

Thời gian đọc 14 phút Gói: Nalix.Abstractions
Trên trang này

Assembly: Nalix.Abstractions
Các không gian tên: Nalix.Abstractions.Networking, Nalix.Abstractions.Networking.Protocols, Nalix.Abstractions.Networking.Packets, Nalix.Abstractions.Security, Nalix.Abstractions.Identity, Nalix.Abstractions.Serialization, Nalix.Abstractions.Middleware, Nalix.Abstractions.Concurrency

Trang này cung cấp tham chiếu đầy đủ, đã kiểm chứng với mã nguồn, cho mọi enumeration trong Nalix.Abstractions.


1. Mạng, transport & khung gói tin

NetworkTransport (byte)

Xác định giao thức transport mạng (src/Nalix.Abstractions/Networking/NetworkTransport.cs):

Thành phầnGiá trịMô tả
TCP0Giao thức điều khiển truyền tải (luồng đáng tin cậy).
UDP1Giao thức datagram người dùng (datagram độ trễ thấp).
WEBSOCKET2WebSocket qua TCP (luồng có khung theo RFC 6455).

TransportFraming (byte)

Chọn chế độ đóng khung luồng trên IConnection.ITransport và Protocol.Framing (src/Nalix.Abstractions/Networking/TransportFraming.cs):

Thành phầnGiá trịMô tả
None0Luồng thô không có khung (dùng cho passthrough hoặc socket trước khi nâng cấp).
UInt16LengthPrefixed1Tiền tố độ dài ushort little-endian 2 byte (mặc định cho TCP của Nalix).
VarIntLengthPrefixed2Tiền tố số nguyên có độ dài thay đổi LEB128 (được điều khiển bởi VarIntFramingOptions).

OperatingMode (byte)

Cấu hình chế độ hoạt động của listener trong IProtocolBindingBuilder.WithMode(...):

Thành phầnGiá trịMô tả
Server0Chế độ máy chủ Nalix tiêu chuẩn có xác thực theo phiên (UdpServerListener).
Passthrough1Chế độ datagram không trạng thái, không kết nối (UdpPassthroughListener + PassthroughConnection).

ProtocolOpCode (ushort)

Các opcode hệ thống và protocol được dành riêng (0x0000..0x00FF, src/Nalix.Abstractions/Networking/Protocols/ProtocolOpCode.cs). Gói ứng dụng phải dùng >= 0x0100 (được NALIX035 kiểm tra).

Thành phầnGiá trịMô tả
SESSION_INIT0x0000Client bắt đầu bắt tay X25519 với khóa công khai tạm thời và nonce.
SYSTEM_CONTROL0x0001Khung điều khiển hệ thống (Control: PING, PONG, DISCONNECT, ERROR, v.v.).
SESSION_SIGNAL0x0002Luồng tiếp tục phiên (SessionResume: yêu cầu, xác nhận hoặc từ chối).
SESSION_PROOF0x0003Client chứng minh sở hữu khóa phiên đã dẫn xuất qua hash transcript.
SYSTEM_TIMESYNC0x0004Khung đồng bộ đồng hồ độ phân giải cao (TimeSync).
SESSION_TOFU0x0005Khung định danh X25519 tĩnh Trust-On-First-Use (SessionTofu).
SESSION_CHALLENGE0x0006Phản hồi bắt tay của máy chủ, mang khóa công khai tạm thời, nonce và chữ ký của máy chủ.
SESSION_ESTABLISHED0x0007Máy chủ xác nhận phiên đã mã hóa được thiết lập (SessionEstablished).
SYSTEM_DIRECTIVE0x0008Khung chỉ thị lúc chạy từ máy chủ đến client (Directive: throttle, redirect, notice).
SESSION_REKEY0x0009Khung xoay vòng khóa đối xứng giữa chừng phiên.
POW_CHALLENGE0x000ACâu đố Proof-of-Work do máy chủ phát hành (ProofOfWorkChallenge).
POW_PROOF0x000BLời giải Proof-of-Work do client gửi (ProofOfWorkProof).
TUNNEL_REQUEST0x00F3Gói yêu cầu tunnel.
TUNNEL_PROVIDE_ACK0x00F4Xác nhận cung cấp tunnel.
TUNNEL_CONNECT_ACK0x00F5Xác nhận yêu cầu kết nối tunnel.
TUNNEL_READY0x00F6Thông báo tunnel đã sẵn sàng.
TUNNEL_PROVIDE0x00F7Gói metadata cung cấp tunnel.
TUNNEL_CONNECT0x00F8Yêu cầu kết nối tunnel logic.
TRAVERSAL_REFLECTOR_INIT0x00F9Khởi tạo reflector NAT traversal.
TRAVERSAL_REFLECTOR_ALLOCATED0x00FAPhản hồi cấp phát endpoint của reflector NAT traversal.
TRAVERSAL_PEER_SIGNAL0x00FBGói báo hiệu ứng viên của peer.
TRAVERSAL_NAT_PROBE_ACK0x00FCXác nhận probe khả năng tiếp cận NAT.
TRAVERSAL_NAT_PROBE0x00FDProbe kiểm tra khả năng tiếp cận peer trực tiếp.
RUNTIME_OBSERVATION0x00FEGói telemetry quan sát lúc chạy.
OBSERVABILITY_ACCESS0x00FFGói cấp quyền truy cập observability.

PacketFlags ([Flags] byte)

Các cờ bit được lưu tại offset byte 2 (PacketHeaderOffset.Flags = 2) của PacketHeader 6 byte (src/Nalix.Abstractions/Networking/Packets/PacketFlags.cs):

Thành phầnGiá trịTrạng tháiMô tả
NONE0x00Đang dùngKhung ứng dụng không nén, không mã hóa, không phân mảnh.
COMPRESSED1 << 1 (0x02)Đang dùngPayload được nén bằng LZ4Codec.
ENCRYPTED1 << 2 (0x04)Đang dùngPayload được bọc trong envelope AEAD/đối xứng EnvelopeCipher.
FRAGMENTED1 << 3 (0x08)Đang dùngPayload mang một đoạn FragmentHeader 8 byte.
RELIABLE1 << 4 (0x10)[Obsolete]Cờ độ tin cậy kiểu cũ — độ tin cậy transport được xác định bởi NetworkTransport.
UNRELIABLE1 << 5 (0x20)[Obsolete]Cờ không đáng tin cậy kiểu cũ — hãy dùng NetworkTransport.UDP.
ACKNOWLEDGED1 << 6 (0x40)[Obsolete]Cờ xác nhận kiểu cũ.
SYSTEM1 << 7 (0x80)Đang dùngKhung protocol cấp hệ thống (Control, Directive, TimeSync, bắt tay).

PacketPriority (byte)

Thành phầnGiá trịMô tả
NONE0x00Mức ưu tiên tiêu chuẩn.
LOW0x01Ưu tiên nền thấp hơn bình thường.
MEDIUM0x02Mức ưu tiên trung bình.
HIGH0x03Ưu tiên cao (mặc định cho Control và Directive sau khi reset pool).
URGENT0x04Mức ưu tiên cao nhất (TimeSync).

PacketHeaderOffset (int)

Xác định offset byte của PacketHeader 6 byte và điểm bắt đầu các trường payload ứng dụng (src/Nalix.Abstractions/Networking/Packets/PacketHeaderOffset.cs):

Thành phầnGiá trịKiểuMô tả
OpCode0ushortOffset trên dây 0: OpCode little-endian 2 byte.
Flags2PacketFlagsOffset trên dây 2: PacketFlags 1 byte.
Priority3PacketPriorityOffset trên dây 3: PacketPriority 1 byte.
SequenceId4ushortOffset trên dây 4: SequenceId little-endian 2 byte.
Region6—Kết thúc header 6 byte (PacketConstants.HeaderSize = 6).
MaxValue255—Giá trị offset header tối đa cho phép.

2. Điều khiển & tín hiệu protocol

ControlType (byte)

Xác định lệnh điều khiển được mang bởi khung Control (src/Nalix.Abstractions/Networking/Protocols/ControlType.cs):

Thành phầnGiá trịMô tả
NONE0x00Không chỉ định thông điệp điều khiển.
PING0x01Yêu cầu kiểm tra sự sống và đo RTT.
PONG0x02Phản hồi kiểm tra sự sống, lặp lại sequence và timestamp của PING.
DISCONNECT0x04Thông báo ngắt kết nối có kiểm soát, mang ProtocolReason.
ERROR0x05Thông báo lỗi protocol hoặc dispatch.
RESUME0x09Tín hiệu tiếp tục phiên.
SHUTDOWN0x0AThông báo máy chủ tắt có kiểm soát.
REDIRECT0x0BChỉ dẫn chuyển endpoint.
NOTICE0x0DThông báo bảo trì hoặc trạng thái mang tính thông tin.
TIMEOUT0x10Thông báo handler hoặc yêu cầu đã hết thời gian chờ.
FAIL0x11Thất bại thao tác chung.
TIMESYNCREQUEST0x12Client yêu cầu đồng bộ đồng hồ máy chủ.
TIMESYNCRESPONSE0x13Phản hồi của máy chủ mang timestamp độ phân giải cao.
CIPHER_UPDATE0x14Yêu cầu chuyển CipherSuiteType đang hoạt động.
CIPHER_UPDATE_ACK0x15Xác nhận chuyển đổi CIPHER_UPDATE.
PUBLIC_KEY_REQUEST0x16Client yêu cầu khóa công khai tĩnh của máy chủ (TOFU).
POW_REQUEST0x17Client yêu cầu câu đố Proof-of-Work.
SESSION_REKEY0x18Yêu cầu xoay vòng bí mật mã hóa của phiên.
SESSION_REKEY_ACK0x19Xác nhận hoàn tất xoay vòng khóa phiên.
RESERVED10xFEDành riêng cho mở rộng protocol trong tương lai.
RESERVED20xFFDành riêng cho mở rộng protocol trong tương lai.

ControlFlags ([Flags] byte)

Thành phầnGiá trịMô tả
NONE0x00Không đặt cờ nào.
IS_TRANSIENT1 << 0Điều kiện mang tính tạm thời và an toàn để thử lại.
IS_AUTHRELATED1 << 1Điều kiện liên quan đến xác thực hoặc ủy quyền.
HAS_REDIRECT1 << 2Có metadata đích chuyển hướng.
SLOW_DOWN1 << 3Client nên giảm tốc độ gửi đi.

ProtocolAdvice (byte)

Thành phầnGiá trịMô tả
NONE0Không cần hành động cụ thể.
RETRY1An toàn để thử lại ngay.
BACKOFF_RETRY2Thử lại với backoff lũy thừa.
DO_NOT_RETRY3Lỗi vĩnh viễn; không tự động thử lại.
REAUTHENTICATE4Thực hiện lại bắt tay hoặc xác thực.
SLOW_DOWN5Giảm tốc độ yêu cầu.
RECONNECT6Kết nối lại với máy chủ hoặc endpoint chuyển hướng.
FIX_AND_RETRY7Sửa payload yêu cầu trước khi thử lại.

ProtocolReason (ushort)

Các mã lý do chuẩn được mang trong khung Control, Directive và SessionResume (src/Nalix.Abstractions/Networking/Protocols/ProtocolReason.cs), nhóm theo dải số:

DảiDanh mụcThành phần
0–49ChungNONE = 0, UNKNOWN = 1, CANCELLED = 2, NOT_IMPLEMENTED = 3, TEMPORARY_FAILURE = 4, DEPRECATED = 5, REQUEST_INVALID = 6, INTERNAL_ERROR = 7
100–149Transport / MạngTIMEOUT = 100, REMOTE_CLOSED = 101, LOCAL_CLOSED = 102, NETWORK_ERROR = 103, CONNECTION_REFUSED = 104, CONNECTION_RESET = 105, DNS_FAILURE = 106, MTU_VIOLATION = 107, CONGESTION = 108, KEEPALIVE_FAILED = 109
150–199Protocol / KhungPROTOCOL_ERROR = 150, VERSION_UNSUPPORTED = 151, FRAME_TOO_LARGE = 152, MESSAGE_TOO_LARGE = 153, UNEXPECTED_MESSAGE = 154, MISSING_REQUIRED_FIELD = 155, DUPLICATE_MESSAGE = 156, STATE_VIOLATION = 157, CRYPTO_UNSUPPORTED = 158, COMPRESSION_UNSUPPORTED = 159, OPERATION_UNSUPPORTED = 160, MALFORMED_PACKET = 161
200–259Bảo mật / AuthN / AuthZUNAUTHENTICATED = 200, UNAUTHORIZED = 201, FORBIDDEN = 202, ACCOUNT_LOCKED = 203, ACCOUNT_SUSPENDED = 204, BANNED = 205, IP_BLOCKED = 206, RATE_LIMITED = 207, TOKEN_EXPIRED = 208, TOKEN_REVOKED = 209, DEVICE_UNTRUSTED = 210
260–299Mật mã / Toàn vẹnTLS_HANDSHAKE_FAILED = 260, TLS_REQUIRED = 261, TLS_CERT_INVALID = 262, SIGNATURE_INVALID = 263, CHECKSUM_FAILED = 264, DECRYPTION_FAILED = 265, REPLAY_DETECTED = 266, NONCE_INVALID = 267, POW_REQUIRED = 270, POW_INVALID = 271
300–349Dịch vụ / Hạ tầngSERVER_SHUTDOWN = 300, SERVICE_UNAVAILABLE = 301, MAINTENANCE = 302, OVERLOADED = 303, DEPENDENCY_FAILURE = 304, DATABASE_UNAVAILABLE = 305, CACHE_UNAVAILABLE = 306, QUEUE_UNAVAILABLE = 307
350–399Ứng dụng / Ngữ nghĩaVALIDATION_FAILED = 350, NOT_FOUND = 351, ALREADY_EXISTS = 352, PRECONDITION_FAILED = 353, STATE_CONFLICT = 354, UNSUPPORTED_MEDIA_TYPE = 355, SERIALIZATION_FAILED = 356, UNSUPPORTED_PACKET = 357, TRANSFORM_FAILED = 358
400–449Kiểm soát luồng / QoSTHROTTLED = 400, SLOW_CONSUMER = 401, CREDIT_EXHAUSTED = 402, WINDOW_EXCEEDED = 403
450–499Tài nguyên / Hạn mứcRESOURCE_LIMIT = 450, MEMORY_EXHAUSTED = 451, CONNECTION_LIMIT = 452, FD_LIMIT = 453, DISK_FULL = 454, CPU_LIMIT = 455
500–549Quyết định phía client / cục bộCLIENT_QUIT = 500, ABORTED = 501, IDLE_TIMEOUT = 502, LOCAL_POLICY = 503, COMPRESSION_FAILED = 504
550–599Phiên / Thời gian / Đồng hồSESSION_NOT_FOUND = 550, SESSION_EXPIRED = 551, DUPLICATE_SESSION = 552, KEY_ROTATION_REQUIRED = 553, TIME_SKEW = 554
600–649Nhất quán / Điều phốiLEADER_CHANGE = 600, NOT_LEADER = 601, CONSENSUS_UNAVAILABLE = 602, STALE_READ = 603
650–699Định tuyến / Đặt vị tríREDIRECT = 650, MIGRATE = 651, REGION_UNAVAILABLE = 652
700–749Tuân thủ / Chính sáchLEGAL_BLOCK = 700, CONTENT_VIOLATION = 701, AGE_RESTRICTED = 702, INVALID_USERNAME = 703, WEAK_PASSWORD = 704
900–999Dành riêngRESERVED_900 = 900, RESERVED_901 = 901

3. Bảo mật & định danh

CipherSuiteType (byte)

Định nghĩa các bộ mật mã stream đối xứng và AEAD được EnvelopeCipher hỗ trợ (src/Nalix.Abstractions/Security/CipherSuiteType.cs):

Thành phầnGiá trịChế độKích thước nonceKích thước tagMô tả
None0Bản rõ——Không mã hóa (mặc định trước khi bắt tay).
Salsa203Đối xứng8 B0 BStream cipher Salsa20 (XOR keystream với nonce đã XOR với sequence).
Chacha204Đối xứng12 B0 BStream cipher ChaCha20 theo RFC 8439.
Salsa20Poly13057AEAD8 B16 BStream cipher Salsa20 + tag MAC Poly1305 16 byte tách rời.
Chacha20Poly13058AEAD12 B16 BAEAD ChaCha20-Poly1305 theo RFC 8439 (mặc định của PacketEncryptionAttribute).

PermissionLevel (byte)

Các mức thẩm quyền được gán cho IConnection.Level và được PermissionMiddleware kiểm tra (src/Nalix.Abstractions/Security/PermissionLevel.cs):

Thành phầnGiá trịMô tả
NONE0Trạng thái kết nối ban đầu chưa được xác minh.
POW_VERIFIED10Client đã giải câu đố Proof-of-Work (ProofOfWorkProof).
ESTABLISHED20Client đã hoàn tất bắt tay mật mã X25519 (HandshakeHandlers).
GUEST25Phiên khách ẩn danh.
READ_ONLY50Người quan sát đã xác thực, chỉ có quyền đọc.
USER100Người dùng đã xác thực tiêu chuẩn (mặc định cho [PacketPermission]).
SUPERVISOR175Người kiểm duyệt hoặc quyền giám sát cao cấp.
TENANT_ADMINISTRATOR200Quản trị viên tổ chức hoặc tenant.
SYSTEM_ADMINISTRATOR225Quản trị viên hệ thống toàn máy chủ.
OWNER255Quyền root / chủ sở hữu.

PermissionEvaluation (byte)

Điều khiển cách PermissionMiddleware đánh giá [PacketPermission] (src/Nalix.Abstractions/Security/PermissionEvaluation.cs):

Thành phầnGiá trịMô tả
MinimumLevel0Yêu cầu connection.Level >= attribute.Level (so sánh phân cấp, mặc định).
StrictMatch1Yêu cầu connection.Level == attribute.Level (khớp chính xác).

SnowflakeType (byte)

Phân loại các định danh Snowflake 64-bit (Unknown = 0, Configuration = 1, Log = 2, System = 3, Account = 10, Session = 11, Message = 20, Notification = 21, Email = 22, Sms = 23, Order = 30, Inventory = 31, Transaction = 32, Invoice = 33, SupportTicket = 34, MaxValue = 255).


4. Tuần tự hóa, middleware & đồng thời

SerializeLayout (byte)

  • Auto = 0 — Bố cục tự động.
  • Sequential = 1 — Tuần tự hóa các trường/thuộc tính theo thứ tự khai báo.
  • Explicit = 2 — Tuần tự hóa các trường/thuộc tính theo thứ tự [SerializeOrder(n)].

DropPolicy (int)

Cấu hình DispatchOptions.DropPolicy khi hàng đợi gói tin đầu vào của kết nối đầy:

  • DropNewest = 0 — Loại gói tin vừa đến (mặc định).
  • DropOldest = 1 — Đẩy gói tin cũ nhất trong hàng đợi để nhận gói tin mới.
  • Block = 2 — Áp dụng backpressure tối đa đến DispatchOptions.BlockTimeout.
  • Coalesce = 3 — Thay thế gói tin gần nhất trong hàng đợi có cùng opcode.

MiddlewareStage (byte)

  • Inbound = 0 — Chạy trước handler gói tin.
  • Outbound = 1 — Chạy sau handler khi gửi phản hồi.
  • Both = 2 — Chạy trên cả đường đầu vào và đường đầu ra.

WorkerPriority (byte)

  • LOW = 0, NORMAL = 1, HIGH = 2, URGENT = 3.

PacketContextState (byte)

Không gian tên Nalix.Abstractions.Networking.Packets (src/Nalix.Abstractions/Networking/Packets/PacketContextState.cs). Theo dõi vòng đời của packet context có pool:

  • Pooled = 0 — Nằm trong object pool, sẵn sàng để cấp phát.
  • InUse = 1 — Đang được handler gói tin sử dụng.
  • Returned = 2 — Đã xử lý xong và được trả về để tái sử dụng.

API liên quan