免费注册 查看新帖 |

Chinaunix

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

请教一个网络问题~~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-25 13:20 |只看该作者 |倒序浏览
这个问题始终不太明白,是关于FTP 的port模式:如果使用的是port模式,你的电脑又处在一个局域网内,比如说你的ip为192.168.0.123,这时你机子上会创建一个连接端口,将你的ip和端口号通过控制连接发送给服务器,并等待服务器连接到你的机器上,请问,服务器是如何能够连接到这台局域网内的主机的?请指教

论坛徽章:
0
2 [报告]
发表于 2006-07-25 13:52 |只看该作者
PORT 192,168,0,123,9,101

服务器接到该请求后,从数据端口20发送请求
先将sdf设成可复用地址,然后
sockaddr_in saddr, addr;
memset(&saddr, 0, sizeof(saddr));
memset(&addr, 0, sizeof(addr));

saddr.sin_family = AF_INET;
saddr.sin_port = htons(20);
saddr.sin_addr.s_addr = INADDR_ANY;

bind(sfd, (sockaddr*)&saddr, sizeof(saddr));
addr.sin_family = AF_INET;
addr.sin_port = htons(9 * 256 + 101);
addr.sin_addr.s_addr = inet_addr("192.168.6.123");

connect(sfd, (sockaddr *)&addr, sizeof(addr));
大致是这样子

论坛徽章:
0
3 [报告]
发表于 2006-07-25 13:57 |只看该作者
connect(sfd, (sockaddr *)&addr, sizeof(addr));
这样能连接到吗?192.168.0.123不是一个独立ip啊

论坛徽章:
0
4 [报告]
发表于 2006-07-25 14:02 |只看该作者
PORT 192,168,0,123,9,101

看看RFC协议,PORT出的是客户端的IP地址和端口,
地址192.168.0.123,端口9×256+101

是告诉服务器,客户端将在这个地址,这个端口进行侦听。等待服务器来连接,连接成功后,立即close

论坛徽章:
0
5 [报告]
发表于 2006-07-25 14:03 |只看该作者
连不到的,除非发网关地址给它。

论坛徽章:
0
6 [报告]
发表于 2006-07-25 14:05 |只看该作者
没看到“局域网”
加个端口映射吧
或者,网关,代理
再或者,使用pasv模式

[ 本帖最后由 anhongkui 于 2006-7-25 14:09 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-07-25 14:29 |只看该作者
如果 PORT 发送过去的是192.168.0.123+端口号的话,那么服务器应该没办法连接到

论坛徽章:
0
8 [报告]
发表于 2006-07-25 14:32 |只看该作者
ftp服务器不管你的内部的机器的,他只要发给你的网关,网关解析ftp协议,发现原来是被动方式,然后就会允许该数据包通过,当然还要做转换。

论坛徽章:
0
9 [报告]
发表于 2006-07-25 15:29 |只看该作者
局域网内部者可以直连的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP