<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>赤色之光的博客</title>
    <link>https://blog.withme.top/</link>
    <description>Recent content on 赤色之光的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>© 2026 赤色之光</copyright>
    <lastBuildDate>Thu, 07 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.withme.top/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>socks5协议</title>
      <link>https://blog.withme.top/posts/socks5/</link>
      <pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.withme.top/posts/socks5/</guid>
      <description>&lt;h2 id=&#34;是什么&#34;&gt;是什么&lt;a class=&#34;anchor&#34; href=&#34;#%e6%98%af%e4%bb%80%e4%b9%88&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;socks5 协议是一个代理协议&lt;/p&gt;&#xA;&lt;h2 id=&#34;报文解析&#34;&gt;报文解析&lt;a class=&#34;anchor&#34; href=&#34;#%e6%8a%a5%e6%96%87%e8%a7%a3%e6%9e%90&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/shikanon/socks5proxy/blob/master/docs/socks5.md&#34;&gt;https://github.com/shikanon/socks5proxy/blob/master/docs/socks5.md&lt;/a&gt;&lt;br&gt;&#xA;这篇文章讲的很不错，我摘抄部分内容。&lt;/p&gt;&#xA;&lt;h3 id=&#34;请求&#34;&gt;请求&lt;a class=&#34;anchor&#34; href=&#34;#%e8%af%b7%e6%b1%82&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;VER&lt;/th&gt;&#xA;          &lt;th&gt;NMETHODS&lt;/th&gt;&#xA;          &lt;th&gt;METHODS&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1-255&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VER 是 SOCKS 版本，这里应该是 0x05&lt;/li&gt;&#xA;&lt;li&gt;NMETHODS 是 METHODS 部分的长度&lt;/li&gt;&#xA;&lt;li&gt;METHODS 是客户端支持的认证方式列表，每个方法占 1 字节。当前的定义是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;0x00 不需要认证&lt;/li&gt;&#xA;&lt;li&gt;0x02 用户名，密码认证&lt;/li&gt;&#xA;&lt;li&gt;0xFF 无可接受的方法&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;响应&#34;&gt;响应&lt;a class=&#34;anchor&#34; href=&#34;#%e5%93%8d%e5%ba%94&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;VER&lt;/th&gt;&#xA;          &lt;th&gt;METHOD&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VER 是 SOCKS 版本，这里应该是 0x05；&lt;/li&gt;&#xA;&lt;li&gt;METHOD 是服务端选中的方法。如果返回 0xFF 表示没有一个认证方法被选中，客户端需要关闭连接。&lt;br&gt;&#xA;下面我说一下用户名密码验证的方法&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;请求-1&#34;&gt;请求&lt;a class=&#34;anchor&#34; href=&#34;#%e8%af%b7%e6%b1%82-1&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;鉴定协议版本&lt;/th&gt;&#xA;          &lt;th&gt;用户名长度&lt;/th&gt;&#xA;          &lt;th&gt;用户名&lt;/th&gt;&#xA;          &lt;th&gt;密码长度&lt;/th&gt;&#xA;          &lt;th&gt;密码&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;动态&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;动态&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;版本号为 0x05&lt;/p&gt;&#xA;&lt;h3 id=&#34;响应-1&#34;&gt;响应&lt;a class=&#34;anchor&#34; href=&#34;#%e5%93%8d%e5%ba%94-1&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;鉴定协议版本&lt;/th&gt;&#xA;          &lt;th&gt;鉴定状态&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;其中鉴定状态 0x00 表示成功，0x01 表示失败。&lt;/p&gt;&#xA;&lt;h3 id=&#34;请求-2&#34;&gt;请求&lt;a class=&#34;anchor&#34; href=&#34;#%e8%af%b7%e6%b1%82-2&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;VER&lt;/th&gt;&#xA;          &lt;th&gt;CMD&lt;/th&gt;&#xA;          &lt;th&gt;RSV&lt;/th&gt;&#xA;          &lt;th&gt;ATYP&lt;/th&gt;&#xA;          &lt;th&gt;DST.ADDR&lt;/th&gt;&#xA;          &lt;th&gt;DST.PORT&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0x00&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;动态&lt;/td&gt;&#xA;          &lt;td&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VER 是 SOCKS 版本，这里应该是 0x05&lt;/li&gt;&#xA;&lt;li&gt;CMD 是 SOCK 的命令码&#xA;&lt;ul&gt;&#xA;&lt;li&gt;0x01 表示CONNECT请求&lt;/li&gt;&#xA;&lt;li&gt;0x02 表示BIND请求&lt;/li&gt;&#xA;&lt;li&gt;0x03 表示UDP转发&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;RSV 0x00 ，保留&lt;/li&gt;&#xA;&lt;li&gt;ATYP DST.ADDR类型&lt;/li&gt;&#xA;&lt;li&gt;DST.ADDR 目的地址&#xA;&lt;ul&gt;&#xA;&lt;li&gt;0x01 IPv4 地址，DST.ADDR 部分 4 字节长度&lt;/li&gt;&#xA;&lt;li&gt;0x03 域名，DST.ADDR 部分第一个字节为域名长度，DST.ADDR剩余的内容为域名，没有\0结尾。&lt;/li&gt;&#xA;&lt;li&gt;0x04 IPv6 地址，16 个字节长度。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;DST.PORT 网络字节序表示的目的端口&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;目前先介绍 CONNECT 请求后，服务器的响应&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
