免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5538 | 回复: 11
打印 上一主题 下一主题

[proxy] 应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-21 15:27 |只看该作者 |倒序浏览
使用应用代理时,客户机向代理服务器发请求,目的IP一定是代理服务器IP,那么,客户机想访问的真正的目的站点的IP,代理服务器是怎么知道的?是代理服务器通过解析http数据包中的host字段得到站点名后,再通过DNS得到目的IP;还是客户机在发出真正请求前先向代理服务器发一个伴随包,通知代理服务器真正的目的站点IP?如果是前者,http有一种情况是没有host字段,也就是说没有主机名,那么这中情况的http代理,squid支持吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-07-24 20:59 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

    

源地址是你的客户机地址,目的地址是你想访问的地址

到达网关是通过路由方式


看看网络基础原理吧

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-07-25 14:02 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

原帖由 "mocou" 发表:
    
源地址是你的客户机地址,目的地址是你想访问的地址
到达网关是通过路由方式
看看网络基础原理吧

我認為該看的人應該是你,提問人其實巳經有http 概念了,只對 代理的原理不清楚而以.

代理基本上是直接收受你的 http request , 不論你的 http request 中的
GET / HTTP/1.0
Host: www.chinaunix.net
...

(樓主所指的有 Host 情況),則代理主機會看 Host 所指名稱,將你送來的 Http request 原封不動的送到 host 所指的主機名主的 http service.
(會加上幾個 proxy header,但你原來的 header 不會改變)

至於沒有 host 的,則需要在 method 上指出主機名來 , Ex:
GET http://www.chinaunix.net/index.php?sid=1245566 HTTP/1.0

則 proxy 會將帶有 http 中的 hostname 解析出來,形成如同上例的狀況
再送出 GET 指令到目的主機(CU)上

也就是透過這樣的模式,可以形成正向(Broswer 指定)/透明代理 (port redirect), 或是反向代理 (主機名字到 Proxy , 但以 /etc/hosts 將 Web 指向後台)

所以,不論帶不帶 Host,其 header  中都必需指出 hostname 為何
以為連接目標判斷,及 Web server 判斷

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-07-25 15:02 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

当我向代理服务器请求,要访问我的目的地址的时候,首先生成一个header
这个里面包含目的地址(肯定不是代理服务器地址),源地址.

然后该包到达代理以后,代理对其进行处理   有错吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-07-25 15:52 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

当我向代理服务器请求,要访问我的目的地址的时候,首先生成一个header
这个里面包含目的地址(肯定不是代理服务器地址),源地址.

然后该包到达代理以后,代理对其进行处理  icon_rolleyes.gif 有错吗?
源地址是你的客户机地址,目的地址是你想访问的地址
到达网关是通过路由方式
看看网络基础原理吧

這兩段話天差地遠,不知您的邏輯何在
当我向代理服务器请求,要访问我的目的地址的时候,首先生成一个header
这个里面包含目的地址(肯定不是代理服务器地址),源地址.

這句話也語焉不詳, 什麼 header ? ip header 送到哪 ?
http header 送到哪 ?
這些全部送到代理去了

这个里面包含目的地址(肯定不是代理服务器地址),源地址.
然后该包到达代理以后,代理对其进行处理  icon_rolleyes.gif 有错吗?

再看一次,什麼 "肯定不是代理服务器地址", 那包何來 "然后该包到达代理以后" ?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-07-25 17:56 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

偶的意思如下
例如host1---proxy---host2
现在要将数据由host1发送至host2

当host1发送数据时,使用ip数据
报格式传输,在ip数据报的首部中含有一个内容,其中有源地址和目的地址
在这个IP数据报的头中的目的地址是host2的地址。(这就是偶前面所说的非代理地址)

首先host1的IP层进行查找路由,如果proxy跟它是同一个以太网中,就直接发送至proxy
其次数据包到达proxy以后。由proxy对来自host1的IP数据包进行分析,目的地址不在同一个以及网或同一网络中,则由proxy进行转发,将数据报传给下一站路由器,这是偶说的路由

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-07-25 18:17 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

原帖由 "mocou" 发表:
偶的意思如下
例如host1---proxy---host2
现在要将数据由host1发送至host2

当host1发送数据时,使用ip数据
报格式传输,在ip数据报的首部中含有一个内容,其中有源地址和目的地址
在这个IP数据报的头中的目的..........

good , 是的,沒有錯,這樣解釋比您前面的三言兩語清楚多了
Broswer 有定義 proxy 時,通常帶 ip (hostname) + port
所以代理下, IP 層寫的是這個 dst ip 和這個 dst port
payload 則是 http request header , proxy 根據 header 再查找
是否有 Cache , 以決定下步

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-07-25 19:04 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

有点忘了,也比较懒。      表达能力也有限

所以就随便回几句   没想到。。。

论坛徽章:
0
9 [报告]
发表于 2005-07-26 22:35 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

首先,非常感谢两位前辈。
第二,请大家推荐一下有关代理原理和流程的书或文章。
第三,我想把我要实现的这个应用说一说。

我是要实现一个与硬件防火墙配合使用的透明代理。内网中的机器的代理网关是硬件防火墙的IP。代理服务器与硬件防火墙是独立运行的(运行在不同的主机上),代理服务器位于DMZ中。由硬件防火墙判断出要代理的数据包,再把这些数据包重定向到代理服务器上。代理服务器的程序我准备以squid为基础进行修改。因此,我需要搞清楚代理的具体流程,希望各位前辈指导指导。万分感谢!

论坛徽章:
0
10 [报告]
发表于 2005-07-26 23:47 |只看该作者

应用代理时,客户端怎样把真正要访问的目的IP传给代理服务器?

多看看RFC HTTP协议吧!里面说的很清楚,如果不是这么做就不符合标准。记住,RFC是最好的最权威的文档!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP