我正在尝试连接不同子网中的2个设备。
Device 1: IP address: 172.20.35.1 netmask: 255.255.0.0 gateway: 172.20.1.1 Device 2: IP address: 172.20.100.100 netmask: 255.255.255.0 gateway: 172.20.100.1
路由器的IP地址为172.20.1.1 。
当我从设备1向设备2发送UDP数据报时,由于网关IP地址(设备2)错误,所以设备2收到它但不能回复。
但是不应该路由器能连接这两个networking在一起如这里http://www.eventhelix.com/realtimemantra/networking/ip_routing.htm#.VMo5Sx3n5Qs ? 必须手动configuration路由吗?
另外:如果我改变device 2的networkingconfiguration,如下所示?
Device 1: IP address: 172.20.35.1 netmask: 255.255.0.0 gateway: 172.20.1.1 Device 2: IP address: 192.168.170.100 netmask: 255.255.255.0 gateway: 192.168.170.1
有了这个networkingconfiguration, device 2永远不会收到UDP数据报。 这是为什么?
编辑:
只是为了澄清。 我其实不是新手 所描述的问题是我所知道的,因为我的许多客户倾向于按照上面描述的方式来configuration他们的设备,然后最终无法通过TELNET访问它们。 我设法通过实现一个multicast tunnel来解决这个问题,只要他们搞乱了上面的configuration,就允许用户使用multicast UDP protocol来改变远程设备上的networkingconfiguration。 无论如何,我在一家公司接受了一次电话采访,经理说,这些设备之间的stream量总是可能的,因为这是路由器的用途。 我被邀请接受个人面试,我知道这个问题会再次出现。 所以我在这里发布这个问题是为了帮助我制定一个更好的答案。
我试图连接不同子网中的2个设备。
设备1:IP地址:172.20.35.1networking掩码:255.255.0.0网关:172.20.1.1
设备2:IP地址:172.20.100.100networking掩码:255.255.255.0网关:172.20.100.1
路由器有IP地址172.20.1.1! 当我从设备1向设备2发送UDP数据报时,由于网关IP地址(设备2)错误,所以设备2收到它但不能回复。
真正的问题是重叠的子网,加上172.20.1.1的路由器接口上没有代理ARP。
172.20.35.1的主机认为172.20.1.1在同一个子网上,所以172.20.35.1的ARP直接为172.20.1.100。 但是,172.20.0.0/16子网上没有任何回应。
有几个select来解决这个问题:
(Short Term hack)在172.20.1.1上启用proxy-arp。 只要172.20.1.1具有到172.20.35.0/24的路由,172.20.1.1将使用其自己的MAC地址对172.20.1.100的ARP做出响应,并假设没有其他问题,您将在这些子网之间获得双向通信。
(长期)重组您的networking,而不会重叠子网。 这需要重新安装主机; 潜在的很多主机。
在172.20.35.0/24上执行NAT,使其看起来不像其他任何子网。 NAT解决scheme可能越来越难以支持,但是它避免了对代理ARP的需求。
另外:如果我改变
device 2的networkingconfiguration,如下所示。有了这个networkingconfiguration,
device 2永远不会收到UDP数据报。 这是为什么?
它看起来像你需要一个路由到192.168.170.0/24
我觉得其实有一些问题。 第一个是这样的:
无需访问路由器configuration
Mikebuild议的所有操作都需要更改路由器configuration。
第二个问题是这样的:
路由器有IP地址172.20.1.1!
当且仅当路由器在两个子网中都有IP接口时,才能在子网A和B之间转发stream量(即路由)。 路由器的IP接口是IP地址,所以如果您的路由器只有一个IP地址,则不可能进行路由。
你没有弄清楚你的意思是什么“路由器”,但例如,你的平均DSL路由器这样工作。 它只有一个在你的内部networking中使用的IP地址,它从ISP那里通过DSL线路获得另一个IP地址。 因此,它将以两个IP结束,并且将能够在这两个子网之间路由stream量。 您通常甚至没有select创build新的VLAN在局域网上有更多的子网。
这里有一点好奇心。 您已经使用/ 16子网(掩码255.255.0.0)的IP地址configuration客户端1。 子网172.20.0.0/16的IP地址范围是172.20.0.1-172.20.255.255,最后一个是广播地址。 路由器IP通常是子网中最低或最高的,所以我期望172.20.0.1或172.20.255.254。 这不是一个规则,而是通常的做法。
如果您的路由器的子网实际上是/ 16,那么您可以非常轻松地解决第一个问题:configuration第二台设备的子网掩码为255.255.0.0,并使用172.20.1.1作为默认网关。 这将把它放在与设备1相同的子网中,并且stream量将stream动。 这不是路由,这是L2交换。
我从设备1发送一个UDP数据报到设备2,设备2收到它但不能回复,因为网关IP地址(设备2)是错误的。
这不一定与你的网关地址有任何关系。 UDP是单向协议。 协议本身不包含任何发送响应或确认的机制。 要使您的设备2响应UDP数据报,您必须运行一个应用程序,它将在收到数据包时作出响应。 如果您正在testing连接性,请使用为此而开发的ping。 ICMP是一个TCP协议,所以是双向的。 您的设备1将向设备2发送ICMP回应请求(即ping数据包),设备2将响应ICMP回复。
有了这个networkingconfiguration,设备2永远不会收到UDP数据报。 这是为什么?
这里我们回到IP接口。 正如迈克所说,你需要有一个路由到这个networking,所以你的路由器必须有IP地址192.168.170.1/24。
回到你的问题标题。 如果您无法configuration路由器,则只能按照上面所述configuration设备2子网和网关,而且只有在路由器的子网是/ 16时才能工作。 迄今为止提出的所有其他解决scheme都需要访问路由器configuration。