以下内容来自cnblogs博客园, 作者ksiwnhiwhs
https://www.cnblogs.com/ksiwnhiwhs/p/10160580.html
3.OρenVΡN协议
3.1.OρenVΡN协议总揽
OρenVΡN协议的封装格式如下图所示:
![1458798-a696905cdc102037.png](https://i-blog.csdnimg.cn/blog_migrate/7053df43a5e553b4817c639b8146a1cd.webp?x-image-process=image/format,png)
注意,正是OVΡN头封装了OρenVΡN的握手协议和记录协议,它起到了复用和解复用的功能,按信道划分,OρenVΡN的信道有两类,一类是控制信道,另一类是数据信道,其中的操作码在该层协议上有“地址”的含义,正是操作码区分了控制信道和数据信道-换句话说就是控制协议和记录协议,其中控制协议分为握手协议和密钥协议,类似IP协议的IP地址,TCP/UDP的端口。操作码的含义如下:
P_CONTROL_HARD_RESET_CLIENT_V1:Key method 1, initial key from client, forget previous state.
P_CONTROL_HARD_RESET_SERVER_V1:Key method 2, initial key from server, forget previous state.
P_CONTROL_SOFT_RESET_V1:New key
P_CONTROL_V1:Control channel packet (usually TLS ciphertext).
P_ACK_V1:Acknowledgement for P_CONTROL packets received.
P_DATA_V1:Data channel packet containing actual tunnel data ciphertext.
P_CONTROL_HARD_RESET_CLIENT_V2:Key method 2, initial key from client, forget previous state.
P_CONTROL_HARD_RESET_SERVER_V2:Key method 2, initial key from server, forget previous state.
我们可以将上述的每一个操作码看做是一个子协议。KEY ID的作用很有意思,它表示一个key集合,OρenVΡN中一共有3个key集合,想了解其中要旨需要再稍等片刻。
3.2.OρenVΡN记录协议
OρenVΡN记录格式如下图所示: