QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1079|回复: 2

与socks5代理有关的程序设计问题

[复制链接]
发表于 2006-6-4 22:09:08 | 显示全部楼层 |阅读模式
在客户程序A与服务器程序B进行网络通信时,正常的过程应该是
1、A----(syn)----〉B
2、B----(syn ack)-----〉A
3、A-----(ack)-----〉B
三次握手完成,开始真正的数据传送。
如果客户程序A要通过socks5代理服务器C与服务程序B进行网络通信时,A先与C建立三次握手,然后A向C发送本次通信使用的socks5规则,C回应A选定的规则,然后A向C发送B的ip和断口号,C回应通信邦定的ip和断口号,这些过程完成后,以后A直接将数据发送到C,C再将数据转发至B完成通信。过程如下:
1、A----(syn)----〉C
2、C----(syn ack)-----〉A
3、A-----(ack)-----〉C
4、A-----(协商socks5通信的规则)------〉C
5、C------(应答使用的socks5通信规则)------>A
6、A------(B的ip和port)------>C
7、C------(邦定的ip和port)----->A

从上面的介绍可以看到,如果一个程序要通过socks5代理服务器通信,它将会多出4-7这几个包来实现socks5协议。
我的问题是这样的:
  想实现一个linux下的socks5透明代理客户端,就是当我开启这个软件时,系统中的其他网络通信程序会自动与代理服务器相连(类似于windows下的eborder或者sockscap),实现4-7步。以前想过用netfilter的hook函数实现,但觉得netfilter主要是抓包,改变包的结构,如果要实现发送新的数据报(4-7步的数据报)好像还有些问题,所以想请教一下高手,有没有什么可行的实现方法。
发表于 2006-6-5 09:17:58 | 显示全部楼层
关注一下
帮顶
回复

使用道具 举报

 楼主| 发表于 2006-6-6 10:02:04 | 显示全部楼层
有人说用协议栈实现,这会不会更复杂?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 14:24 , Processed in 0.037925 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表