From 7c20b392d4af2366d831239c2b01dc8218a9b8f7 Mon Sep 17 00:00:00 2001 From: V2Ray Date: Sat, 5 Sep 2015 21:08:52 +0200 Subject: [PATCH] Update VMess protocol to allow streaming data --- spec/vmess.md | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/spec/vmess.md b/spec/vmess.md index 791d95cee..f6764f44b 100644 --- a/spec/vmess.md +++ b/spec/vmess.md @@ -3,40 +3,40 @@ * 版本:1 ## 数据请求 +版本部分: * 1 字节:版本号,目前为 0x1 +认证部分: * 16 字节:md5(用户 VID + 'ASK') -* 1 字节:余下字节数 L -* 1 字节:随机填充长度 M (M <= 32) +指令部分: +* 2 字节:随机填充长度 M (M <= 32) * M 字节:随机填充内容 -* 32 字节:应答所使用的 AES Key AK -* 1 字节:保留 -* X 字节:实际请求内容 - * 16 字节:IV - * 1 字节:指令 - * 0x0:保留 - * 0x1:TCP 请求 - * 0x2:UDP 请求 - * 2 字节:目标端口 - * 1 字节:目标类型 - * 0x01:IPv4 - * 0x02:域名 - * 0x03:IPv6 - * 目标地址: - * 4 字节:IPv4 - * 2 字节长度 + 域名 - * 16 字节:IPv6 - * 4 字节:请求长度 N +* 1 字节:保留,总是 0x00 +* 16 字节:请求数据 IV +* 16 字节:响应数据 IV +* 1 字节:指令 + * 0x00:保留 + * 0x01:TCP 请求 + * 0x02:UDP 请求 +* 2 字节:目标端口 +* 1 字节:目标类型 + * 0x01:IPv4 + * 0x02:域名 + * 0x03:IPv6 +* 目标地址: + * 4 字节:IPv4 + * 2 字节长度 + 域名 + * 16 字节:IPv6 +数据部分 * N 字节:请求数据 -其中第 18 字节开始所有内容经过 AES-256 加密,Key 为 left(用户 VID, 32)。 +其中指令部分经过 AES-256 加密,Key 为 left(用户 VID, 32);数据部分使用块密码加密 ## 数据应答 +版本部分: * 1 字节:版本号,目前为 0x1 +认证部分: * 16 字节:md5(用户 VID + 'ANS') -* 1 字节:余下字节数 L -* L 字节 - * 16 字节:IV - * 1 字节:数据长度 - * N 字节:应答数据 +数据部分 +* N 字节:应答数据 -其中第 18 字节开始所有内容经过 AES-256 加密,Key 为 AK。 \ No newline at end of file +其中数据部分使用块密码加密 \ No newline at end of file