首页
社区
课程
招聘
[求助]多层网络转发,设计模型求帮助
发表于: 2014-2-12 16:06 4157

[求助]多层网络转发,设计模型求帮助

2014-2-12 16:06
4157
假如有如下环境:

外网服务器A,内网NAT设备下机器B, 内网NAT2设备下C, 内网NAT3设备下D,  A与B能通信,B与C能通信,C与D能通信,A与C和D无法直接通信,现在要在其中做转发,要A能与D通信.

我现在在确定设计模式.我定义的结点结构是这样的

typedef struct _HSERVER_NODE_
{
        DWORD  Ver;                //当前源代码版本
        ULONG  LocalAddr;        //本地IP地址
        ULONG  UpServerAddr;        //上级结点IP地址       
        ULONG  UpServerPort;    //上级结点端口
        int  hServerIndex;        //当前结点等级索引
        int h_ServerStatus;        //结点状态
        int h_UpServerStatus;        //上级结点状态
        int h_MaxConnect;       //最大负载连接
        int h_UConnnect;        //当前使用的连接数 
}HSERVER_NODE,* PHSERVER_NODE;

如果从D往A发送,就只要先发送给C..C转发给结点的UpServerAddr;//上级结点IP地址,就到了B,B再转发给结点的UpServerAddr;//上级结点IP地址就到了A

但是从A往D发送就不行了.因为结点B可能有多个连接他的子结点,假如有50个字结点通过他转发,只有一个结点才是通往D的子结点,要怎么样设计才能保证A能发往D, 希望有做过这块的高手指导一下

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
每个节点应该有个节点ID,数据传输要指定传给哪个节点,以节点ID来指定即可
2014-2-12 17:36
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
楼上的建议不错,问题是节点ID如何商定?
2014-2-12 17:45
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
4
应该就是穿越代理的问题吧
2014-2-12 17:57
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
问题已经解决,我已经确定我的设计模式了..

包的格式   : 包头+附加数据+路径
//包头的定义,抽象模型.
typedef struct _HSERVER_UDP_
{
        DWORD  PacketNo;                            //当前数据包的编号
        ULONG  SenderName;                                //发送者IP地址
        ULONG  SendToName;                                //要发往的地址
        DWORD  Command;                                        //命令
        DWORD  AdditionalSectionLen;        //附加数据长度
}HSERVER_UDP,* PHSERVER_UDP;

//以下是路径的抽象模型
typef strcut _PATH
{
      int PassNodeNo ;//经过的结点数
      ULONG PassedNodeName ;//经过的经点名(即IP地址)
}

所以整个包是如下样式...

包头                                                                +附加数据                      +路径

1234        1234             2345             1     |   1                1          |  2               1234 1234
包的编号    要发送到地址  发送者的地址  命令      | 附加数据长度               |        经过的结点数    经过的地址(ULONG)

由于没有对齐..效果不好..!
2014-2-13 09:14
0
游客
登录 | 注册 方可回帖
返回
//