from http://zhoulifa./6337887.html 2007.06 1、网络结构目前的互联网最基本的结构是Server<->Client模式,即一个Client向Server发起请求,Server处理完请求后返回结果给Client。目前见到的各种网络应用也是以这个结构为基础的。比如Web服务器和Web浏览器即是一个Server和Client,通常情况下Web浏览器会直接向一个Web服务器发送一个HTTP的request,服务器处理该request并返回response给客户端。而BT之类的软件所形成的网络结构是稍微复杂一点的Server<->Client模式,即一台主机在做Client从别的主机获取文件的同时会作为Server向另外的主机传送它已经取得的文件内容给别人。 但有些情况下一台电脑并不能直接访问到某个网络,必须通过一个代理才能访问。具有代理的网络最基本的结构如下图所示: 在上图中,Client主机不能直接访问到Server,必须通过中间的Proxy主机。一般来讲Proxy主机必须具有双网卡,两块网卡配置两个IP地址连接两个不同网络,通常把连接Server一端的称为外网(或公网),把连接Client一端的称为内网,当然,通常情况下并不是只有一个Client,可能是一个交换机连接的很多Client。这种结构在我国IP地址资源缺泛的情况下是比较常见的,一个公司可能只有一个公网IP地址,所有员工通过这一个地址访问外网,一个网吧也可能只有一台主机与公网相连,其它所有主机通过那一台主机连接外网。 2、网络流程 在基本的Server<->Client模式下,访问一次网络的流程只有很简单的两个步骤:
1)Client连接Server并向Server发起请求
而C步骤和D步骤中传递的也都是
3、软件的编写 为了实现代理上网的功能,我们必须在软件中增加一些。 首先要修改的是Client,在不用代理的情况下,我们在Web浏览器里输入一个地址,比如http://www.,Client程序只需要解析出域名www.的主机,然后连接该主机,向该主机发起一个
而这个工作早已经做好了。目前几乎所有的Web浏览器软件都已经做好这个工作了,你只需要在浏览器里设置一个网络代理就行了。 其次要编写的主要软件就是Proxy上的软件。它要接收Client发过来的请求
然后分析出www.主机再连接该主机,连接成功后转交这一请求给Server, 并要等待Server返回的结果,再把这个结果转交给发起请求的Client。 而不需要做任何修改的是Server端,因为无论在什么情况下,它都是接收对方发过来的请求
所以归根到底,真正要编写的软件就是Proxy软件了。 假设上图中Client主机的IP为192.168.1.100,Proxy的两个IP分别为192.168.1.254和202.10.100.100,Server的域名为www.、IP地址为67.100.21.33 在Proxy上编写程序的基本流程是:
本文只是基本概念说明,所以上面的内容与实际情况并不一致。各位要学会用tcpdump跟踪网络。请参见: 用tcpdump分析协议后用C语言自己编写一个BBS发贴机器人 |
|