My new laptop has a WiFi (aka
802.11) receptor (and emitter, of course), and it turns out that it works (to some extent, at least) under
Linux, so I couldn't resist the temptation of playing with it. I'm a
computer geek in general but one thing which particularly fascinates
me among all computer things is network protocols (Ethernet, IPv6[#] and TCP
being among my favorites), so certainly WiFi made me curious.
An 802.11 node can operate in at least four different modes:
ad-hoc, managed, master and
monitor. From what I understand, the ad-hoc mode is a kind
of peer-to-peer mode, where nodes agree on a channel and SSID and talk directly to each
other; the master and managed (i.e., slave) modes are used in more
complex setups in which, if I get it right, the master asks somewhat
like an Ethernet switch (so even if the clients can't talk to each
other directly, they can talk through it), and even more complex
networks can have secondary masters or repeaters; and the monitor mode
is used to silently capture all 802.11 frames without emitting
anything. (This is, of course, very badly explained everywhere I
looked; even more unclear are questions like whether an ad-hoc node
can talk to a master node or whether only managed nodes can associate
with the master; the whole process of association
is entirely
unclear to me.) I managed to get my laptop's receiver to function at
least in ad-hoc mode (to peer with another laptop, also in ad-hoc
mode), in managed mode (I went to a random Golden Arches restaurant and checked that I
could connect to their wireless network[#2]) and monitor mode. I was unable
to set up a functional master node, however (or perhaps the other
laptop I'm trying to test it with doesn't properly work as a managed
node, but that would be surprising).
What is certainly fun is seeing what WiFi networks are detectable
from a given point: I never thought there'd be so many of them. Just
from my apartment (which is normally quite impervious to radio waves!)
I get a scan which looks something like this:
Cell 01 - Address: 00:11:F5:25:F8:F2
ESSID:"BODEAUXXAV"
Mode:Master
Frequency:2.462 GHz (Channel 11)
Quality=21/94 Signal level=-74 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:bcn_int=100
Cell 02 - Address: 00:16:38:2C:47:2C
ESSID:"ALICE-2C4721"
Mode:Master
Frequency:2.462 GHz (Channel 11)
Quality=13/94 Signal level=-82 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:bcn_int=100
Cell 03 - Address: 00:03:C9:87:83:BB
ESSID:"TECOM-AH4021-931340"
Mode:Master
Frequency:2.472 GHz (Channel 13)
Quality=13/94 Signal level=-82 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
Cell 04 - Address: 00:03:C9:71:EC:7E
ESSID:"Wanadoo_a088"
Mode:Master
Frequency:2.457 GHz (Channel 10)
Quality=6/94 Signal level=-89 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
—and that's nothing compared with scans I get in the street
where, on top of such private networks I see things like Eurospot and Ozone. No free WiFi anywhere I
looked, however.
If I can set up a master node, maybe I'll offer free WiFi to anyone
who can sense it, but… IPv6 only! and then see
whether anyone uses it (I doubt it, but if the idea spread and if
there were enough geeks of the kind, it might be an incentive). Or
perhaps there are much
funnier ideas one can play with.
[#] One of the wonderful
things about IPv6, which often comes in handy when
experimenting with various networks, is the autoconfiguration of
link-local addresses. If I just plug in my laptop in an
IPv6-aware computer, even if the latter has no globally
defined address, then, without any configuration of any kind I can
access it from that computer as
fe80::216:36ff:fe2e:867f%eth0
(assuming eth0
is the name of the network device where it is plugged: this varies
from one operating system to another); and if I didn't want to type in
the hexadecimal address, I could register it whatever DNS
domain I have handy. This may not sound impressive to people who
aren't used to fooling around with network configurations, or to those
who have a DHCP waiting for them wherever they go, but,
believe me, it's really a saver compared to the clumsy manual setting
up of local IPv4 addresses. So if you're going to link,
say, two laptops together (whether by Ethernet cable or by WiFi),
these link-local addresses are probably the simplest way to use the
link once it's set up. And to detect whether there's an
(IPv6-aware) node somewhere along a link
eth0
, all one needs to do is ping
ff02::1%eth0
, it isn't necessary to know anything about
the global addresses along that link! This alone is sufficient reason
to enable IPv6 wherever possible (even in the
absence of a globally-visible IPv6 address; but in
fact, since any IPv4 address automatically gives you one
septillion IPv6 addresses to play with, one can nearly
always conjure such global addresses… anyway).
[#2] I would have
written a blog entry from there, except that the only kind of Internet
connection they give you is a Web access, and I didn't have the proper
tools to get around this, so I couldn't do much. On the other hand, I
could have had some fun spying on what the woman behind me (also using
a laptop) was browsing, but that would have been against my code of
ethics.