StreamToPackets
StreamToPackets نام فعلی نودی است که در بعضی مستندات قدیمی با مفهوم DataAsPacket شناخته میشد. این نود stream شامل packetهای قاببندیشده را میخواند و packet خام را برای نود packet-oriented بعدی بازسازی میکند.
قالب فعلی frame:
- دو بایت طول packet به صورت
uint16و big-endian - سپس payload خام packet
جایگاه رایج
TcpListener -> StreamToPackets -> TunDevice
سناریوی دو سرور:
server1: TunDevice -> PacketsToStream -> TcpConnector
server2: TcpListener -> StreamToPackets -> TunDevice
نمونه تنظیم
{
"name": "stream-to-packet",
"type": "StreamToPackets",
"settings": {
"sensitive-mode": true
},
"next": "packet-node"
}
تنظیمات
| گزینه | پیشفرض | توضیح |
|---|---|---|
sensitive-mode | false | فعالسازی heartbeat با frameهای ۵ بایتی کنترل |
رفتار
- از سمت stream بایتها را buffer میکند تا یک frame کامل برسد.
- طول دو بایتی را حذف میکند و payload را به صورت یک packet به
nextمیدهد. - در مسیر برگشت، packetهای سمت
nextرا با طول دو بایتی قاببندی میکند و به line فعال stream برمیگرداند. - اگر line stream pause شود، خروجی packet به سمت stream drop میشود.
- اگر
sensitive-modeفعال باشد، frame پنجبایتی0xFFرا ping میداند و با frame پنجبایتی0xDDپاسخ میدهد؛ این frameها به packet side نمیرسند.
نکتهها
- این نود را معمولا با
PacketsToStreamدر سمت مقابل جفت کنید. - buffer parser حد فعلی
65536 * 2بایت دارد؛ اگر از این حد عبور کند buffer خالی میشود. - این نود packet boundary را از prefix میفهمد، نه از header IPv4.