<commit_before>一：整体结构图

                Response Buffer
            /          |         \
    Remote           Server         Client
            \          |         /
                Request Buffer  

    说明如下：
        1. Client: 发起请求的一方
        2. Remote: Client 请求的真实地址（主机）


二：握手协议

1. Client 请求
    
    根据 SOCKS5 协议的 Request 部分修改得到握手协议的 Client 请求部分，协议格式如下所示：

        +-------+----------+-----+------+----------+----------+
        |  IV   | USERNAME | VER | ATYP | DST.ADDR | DST.PORT |
        +-------+----------+-----+------+----------+----------+
        |  16   | Variable |  1  |  1   | Variable |    2     |
        +-------+----------+-----+------+----------+----------+

    其中:
        +. AES CFB 模式使用的 128 位 IV
        +. USERNAME: 用户名，变长，第一个字节表示长度
        +. 剩下和 SOCKS5 协议相同

    注：请求数据中用户名以后数据采用 AES256-cfb 进行加密

2. Server 响应
    
    这个响应是对 Client 而言的，出于安全考虑（可能是想当然，因为没有实际结果可以证实)每次请求
    Server 会发送一个随机密钥给 Client，用于此次请求。

        +----+-------+
        | IV |  KEY  |
        +----+-------+
        | 16 |  16   |
        +----+-------+

    其中：
        +. IV: AES128-cfb IV
        +. KEY: AES128-cfb 加密所用的密钥（通过 AES128-cfb 加密）

三：传输数据包

    数据包加密部分大小定为 4096 字节，包括最前面两个字节的实际数据长度，后面为发送数据，将实际数据扩
    展到 4096-2 字节

    +---------------+-----+----+
    |       DATA    | LEN | IV |
    +---------------+-----+----+
    |       4094    |  2  | 16 |
    +---------------+-----+----+

    其中：
        +. DATA: 数据，包括填充数据
        +. LEN: 实际数据长度
        +. IV: AES128-cfb IV，每个数据包不同<commit_msg>改进协议<commit_after>一：整体结构图

                Response Buffer
            /          |         \
    Remote           Server         Client
            \          |         /
                Request Buffer  

    说明如下：
        1. Client: 发起请求的一方
        2. Remote: Client 请求的真实地址（主机）


二：握手协议

1. Client 请求
    
    根据 SOCKS5 协议的 Request 部分修改得到握手协议的 Client 请求部分，协议格式如下所示：

        +-----+-------+----------+-----+------+----------+----------+
        | LEN |  IV   | USERNAME | VER | ATYP | DST.ADDR | DST.PORT |
        +-----+-------+----------+-----+------+----------+----------+
        |  2  |  16   | Variable |  1  |  1   | Variable |    2     |
        +-----+-------+----------+-----+------+----------+----------+

    其中:
        +. LEN: 请求数据包长度，包括本身
        +. IV: AES CFB 模式使用的用于加密数据包的 128 位 IV
        +. USERNAME: 用户名，变长，第一个字节表示长度
        +. 剩下和 SOCKS5 协议相同

    注：请求数据中用户名以后数据采用 AES256-cfb 进行加密

2. Server 响应
    
    这个响应是对 Client 而言的，出于安全考虑（可能是想当然，因为没有实际结果可以证实)每次请求
    Server 会发送一个随机密钥给 Client，用于此次请求。

        +-------+-------+-------+-------+
        |   IV  |  EIV  |  DIV  |  KEY  |
        +-------+-------+-------+-------+
        |   16  |  16   |  16   |   16  |
        +-------+-------+-------+-------+

    其中：
        +. IV: 用于加密此数据包的 AES256-cfb IV
        +. EIV: Client 用于加密的 IV
        +. DIV: Client 用于解密的 IV
        +. KEY: <KEY> 所用的密钥

三：传输数据包

    数据包使用 AES128-cbf 进行加解密传输
{'fraction_non_alphanumeric': 0.2623626373626374, 'fraction_numerical': 0.027815934065934064, 'mean_word_length': 0.8229036295369212, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3701015', 'n_tokens_mistral': 1351, 'n_tokens_neox': 1354, 'n_words': 192}