网络的问题,解答有分
有时我觉得有点想不通,TCP UDP/IP协议都要通过IP地址和端口来确实信息发给谁和让谁接收,对于有外部IP的计算来说,这没什么不好理解的,问题是很多台计算机共用一个IP,在外网,内网的IP是不能用的,必须用共享的那个IP,那么返回的数据怎么知道这个数据是内网那台机子呢.我想有几种可能性.
1.客户端发送信息时通过路由器(IP分享器)把客户的内网IP和端口封装在起来,加上自己的IP和端口,向外发送,也就是说这个包内除了有路由器的IP和端口信息外还有客户计算机的IP和端口信息.但这好象并不合乎TCP/IP协议的标准,因为对于服务器来说,他只能按TCP/IP协标准来解包,那边客户端的信息也只能作为普通数据还不被认为是路由信息.
2.路由器在收到客户计算机的包时,把内网的IP去掉,端口换成自己的端口,这个端口在路由器里对应于一人客户端口和IP,这个端口是随机的,在客户有信息包来时就用一个空闭的端口.
哈哈,我想一定是下面一种了.
问题是:当两台计算机都在内网,都可以通过IP分享器(路由器)连上INTERNET,说明白一点可以聊QQ.
在已知两方的外部IP和内部IP及端口的情况下,怎么样使两台计算机相连啊.怎么编程实现啊.
问题点数:100、回复次数:14Top
1 楼pweixing(幸运星)回复于 2005-07-02 09:56:25 得分 0
这个就是路由器的功能了啊!否则怎么叫路由器呢?
路由器的NAT(网络地址转换)功能,使用路由器的这种功能,就能够屏蔽公司内部局域网的网络地址,利用地址转换功统一转换成电信局提供的广域网地址,这样网络上的外部用户就无法了解到公司内部网的网络地址。也就是说你可以利用这个功能进行编程。
Top
2 楼joke1131(左右逢缘)回复于 2005-07-02 12:05:59 得分 0
提到qq啊,他是基于UDP上的东东 啊,呵呵,楼上哥哥给你解释了路由的功能,换句话说是数据分组哦,它把数据分组发送出去啊,回来的包也会分组回来的,呵呵。Top
3 楼hdhai9451(☆新人类☆)回复于 2005-07-02 13:02:12 得分 0
先up
再看
Top
4 楼Hellohuan(java 好不好???)回复于 2005-07-02 17:39:12 得分 0
UPTop
5 楼22cgreen(飘香女孩)回复于 2005-07-05 09:28:50 得分 0
我晕死,我不是不知道路由怎么工作的,下面才是我的问题,是:
题是:当两台计算机都在内网,都可以通过IP分享器(路由器)连上INTERNET,说明白一点可以聊QQ.
在已知两方的外部IP和内部IP及端口的情况下,怎么样使两台计算机相连啊.怎么编程实现啊.
说明一点就是我们只能用对方的外部IP,那怎么通过这个外部IP把数据发到内部的一台机子上.哎,你以为路由器怎么工作的我不懂?
Top
6 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-07-05 12:24:17 得分 0
已知两方的外部IP和内部IP及端口的情况下我不会
关键是采用什么协议,
tcp通过服务器中转的好说 不需要任何条件,只需要服务器有固定ip,我有代码
udp点对点 知道怎么做,只调试通过小例子(自己写的,可以毁坏在上次硬盘数据丢失),条件,直到外网ip和影射端口,服务器的固定ip不可少,其实网上也有例子vc的
tcp的点对点,只是听说,不明白原理和实现,但是高手肯定有,但是用vb的少,公开的更少Top
7 楼flyingZFX(卍 南无阿弥陀佛 卍)回复于 2005-07-05 12:45:41 得分 0
呜啊~~~~Top
8 楼zhujiechang(小朱)回复于 2005-07-05 12:58:45 得分 0
内部的IP仿路由在外网映射个外网IP,其实有些路由也提供将个别机器获得外网IP的功能。
Top
9 楼22cgreen(飘香女孩)回复于 2005-07-06 11:13:47 得分 0
我换种说法吧,就象QQ,在客户和服务器通信时一般是UDP,在上线后,和好友通信,就是点对点了,我和好友都在网吧,也就是一个内部网内,但我们可以点对点通信,用的应是TCP/IP协议,我们从QQ服务器上只能得到好友在网吧的服务器的IP和他内部机了IP和端口信息,我们发一个TCP信息过去,显然只有发给对方网吧的服务器,服务器这时怎么知道是请求那台内部机子呢或者是请求自己呢,怎样把这个请求发给内部网的机子,完成TCP连接呢。我想一定要作一些处理。Top
10 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-07-06 14:50:35 得分 0
其实你想错了,我理解的是这样
QQ,在客户和服务器通信时是tcp 在上线后,和好友通信,就是udp点对点了,我和好友都在网吧,也就是一个内部网内,但我们可以udp点对点通信,用的是udp打洞的技术
,我们从QQ服务器上只能得到好友在网吧的服务器的公网IP和影射端口信息,我们通过打洞技巧,建立一个临时的通道,就可以点对点了,而并不是你说的tcp连接
Top
11 楼22cgreen(飘香女孩)回复于 2005-07-06 20:47:31 得分 0
我指的是我们两个在不同的网吧,如果是传文件呢(两方传文件)也是用UDP问。什么叫打洞技巧啊。Top
12 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-07-07 08:41:08 得分 0
看这个帖子吧,怎么实现我解释的很详细
http://community.csdn.net/Expert/topic/4082/4082775.xml?temp=8.639163E-02Top
13 楼wosirius(神经第六)回复于 2005-07-07 12:33:23 得分 0
其实 TCP或者UDP数据 传输的时候 路由器是透明的
我是这么理解的
里面不同的包文的报头应该是不一样的 这样才可以分辨Top
14 楼webxxx(sdfajfjdkfjklfjkl)回复于 2005-07-07 20:53:16 得分 0
gzTop




