Two ethernet cards/networks (still)

Steve Holden steve at holdenweb.com
Thu Sep 7 18:34:30 EDT 2006


Bob Greschke wrote:
> There is a lot to stuff that seems to skirt around this issue (most of which 
> has to do with finding your IP address), but I can't find anything that 
> explains how to write a client that (in my case) needs to collect some 
> information from some equipment on a private network/Ethernet card, then 
> transmit that info on the other Ethernet card/"outside" network to another 
> program (which will put it into a db).
> 
> "binding to a specific address is almost never used for a client", sez 
> Foundations of Python Network Programming, but is that how it's done??  Each 
> card has a fixed IP address.  It's on Windows at this time if that makes any 
> difference.
>  
The reason that "binding to a specific address is almost never used for 
a client" is because it's the server destination address that the 
network layer will use to determine which interface is used to 
communicate with a specific server host.

Suppose your network setup looks like this:


+-------------------+------------------------+ Network A
                     |
                     |
                     |
                     | 192.168.12.34/24
                     |
            +--------+--------+
            |                 |
            |                 |
            |     YOUR HOST   |
            |                 |
            |                 |
            +--------+--------+
                     |
                     | 201.46.34.22/24
                     |
                     |
                     |
+-------------------+----------+-------------+ Network B
                                |
                                +
                       +--------+--------+
                       |      router     |
                       |   to internet   |
                       +-----------------+

If your client program tries to communicate with, say, 192.168.12.18 
then by the IP network layer will automatically select network A as the 
medium, since the destination is local to that network. If you then want 
to communicate the results to 201.46.34.118 then network B will be used, 
again because the destination is local to that network (its first 24 
bits are the same as the first 24 bits of the destination).

In this case the router on network B will almost certainly be the 
default route for the host, as it's the way to everywhere else.

This isn't really Python-related, so I hope it answers your question!

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden




More information about the Python-list mailing list