Netmasks: the truth is out there?

Eduardo Viruena Silva mrspock at esfm.ipn.mx
Tue Apr 29 10:48:16 PDT 2003


On Tue, 29 Apr 2003, Steve Warwick wrote:

> Hi All,
>
> I know someone out there knows the truth about netmasks. All the
> documentation I can find on the net talks about "masking off" part of the IP
> address and how you can tell network from subnet and host ids.
>
> However, I have knowledgeable friend who is telling me that the netmask is
> also dependant on how the hosting company has set up their routing tables
> and incorrect netmasking on my part can reduce or halt my connection.
>
> So the question is, who is right? Is it as simple as just masking off the
> first three octets or does the netmask interact with the router?
>
> Please point me to an authoritative source or if you have the time, a brief
> description of if or how the netmask has to match the router, as I am not
> sure what questions to ask my hosting company.
>

suppose computer A and B with:

	IPA: a1.a2.a3.a4	MaskA:  ma1.ma2.ma3.ma4

and
	IPB: b1.b2.b3.b4	MaskB: mb1.mb2.mb3.mb4

Of course, a1 ... a4 and b1...b4  are integer numbers  in [0..255],
that is, they are bytes.


-----example-------
ma1 ... ma4 are also bytes, but build with leading 1's till
certain bit.  If you have a mask of 24 bits you have:

		11111111.11111111.11111111.00000000

written in binary, equivalent to:

		255.255.255.0

in decimal.

if you have a mask of 26 bytes you have:

		11111111.11111111.11111111.11000000

written in binary, equivalent to:

		255.255.255.192

in decimal.
----------------------


Surely you know how to make a bitwise AND between IPA and MaskA,
I mean:

	IPA & MaskA = (a1 & ma1).(a2 & ma2).(a3 & ma3).(a4 & ma4)
	IPB & MaskB = (b1 & mb1).(b2 & mb2).(b3 & mb3).(a4 & mb4)

Now, IPA and IPB are in the same subnet if:

	IPA & MaskA == IPB & MaskB

if not, they need a router to communicate.

Let show an example:

Lets suppose you have:

	IPA=   192.168.123.244
	MaskA= 255.255.255.0

	IPB=   192.168.123.120
	MaskB= 255.255.255.0

Now, IPA & MaskA = 192.168.123.0
     IPB & MaskB = 192.168.123.0

They are in the same subnet, you do not require a router.

But....

	IPA=   192.168.123.218
	MaskA= 255.255.255.128

	IPB= 	192.168.123.66
	MaskB= 255.255.255.128

Makes:
	IPA & MaskA = 192.168.123.128
	IPB & MaskB = 192.168.123.0

They do require a router to connect.


>
> ---
>
> My current rc.conf entry looks like this (these ips are bogus) - no
> broadcast and FreeBSD seems happy with this.
>
> defaultrouter="123.456.789.1"
                      ^   ^  these are not valid IP numbers.


> ifconfig_rl0="inet 123.456.789.111 netmask 255.255.240.0"
                          ^   ^ neither are these.

> ifconfig_rl0_alias0="inet 123.456.789.112 netmask 255.255.255.0"
> <+7 other aliases>

remember:  IP must be built out of BYTES, numbers in [0..255]
but you cannot use 0 or 255 in the last byte, because they have special
meanings.


>
>
> Thoughts, suggestions, links ?
>
>
> TIA
>
>
> Steve
>
>
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
>



More information about the freebsd-questions mailing list