本文档只是一个随手写的新手攻略,融合了助教们去年和前年的感受杂合而成。
- 阅读go tour了解Go语言的基本语法
- 并发与锁并不会在之后的编程有强制的需求,但仍然建议了解
- 了解一些网络相关的基本常识,如ipv4/ipv6,tcp/udp,http等
- 强烈建议先去了解net包,binary包的相关接口的使用,之后会用到
- 阅读常用高代码质量网络工具的源码,从中了解 go 语言网络编程的基本思路和方法
客户端需要能够捕获本地的正常网络请求,使用代理协议将其包装(套壳),然后发向特定的服务器。
服务端需要接受由协议包装过的请求,然后将其解包为正常的流量,代替客户端去做出网络请求。
举例来讲,socks5协议中服务器监听一个地址和端口,每次有新的连接时(称为连接1),根据协议进行握手,然后向外发起网络请求(称为连接2),之后在连接1和连接2之间转发数据。
如果你对 WSL 的网络行为感到困惑,建议参考微软英文官方文档