You are probably using DHCP on the machine currently in front of you. The “Dynamic Host Configuration Protocol” is a way for your computer to obtain an Internet address from a pool of available addresses, and to return it to the pool when you no longer need it. Basically every Internet service provider uses DHCP, or something similar.
As a network operating system, Linux has DHCP support (and had
it for ages). In true Unix fashion, Debian sports at least four DHCP clients.
Debian’s default is dhcp3-client, also
known as dhclient.
The theory is that the client requests an address lease from the
server and periodically renews it. This process yields a number of
events, to which the operating system can react. For instance,
initially, the client issues a PREINIT event to get
the interface into a state where it can talk on the network, and a
BOUND event as soon as it acquired a lease, or
FAIL if it, uh, failed.
After a certain period of time, the client tries to renew the
lease. If it succeeds, it issues a RENEW event; if it
fails, it yields EXPIRE.
So much for the theory.
It seems that dhclient is rather stupid, which I
tried to document in bug
#459813 — it does things differently: given a lease, after a
certain period of time, it just issues an EXPIRE
event, which causes the operating system to deconfigure
the interface and take down connectivity. Then, the client spits
out a PREINIT event, followed by BOUND or
FAIL, as appropriate.
I have not quite investigated what all this means, but this much is for sure: periodically, your machine goes offline, only to come back online a second later. If this were Windows, one would probably knock on wood and be glad that it works at all. But we’re on Linux here, Debian even, so this cannot be.
I’d love to be proven wrong, so if you have a minute, please try to verify. One way of doing so is to insert
echo "$(date) got $reason" >> /tmp/dhclient-script.reasons
towards the top of /sbin/dhclient-script and
monitor the output file. Once your client renews, it should
read:
Wed Jan 9 11:53:27 CET 2008 got RENEW
but instead you’ll see
Wed Jan 9 11:53:27 CET 2008 got EXPIRE
Wed Jan 9 11:53:28 CET 2008 got PREINIT
Wed Jan 9 11:53:33 CET 2008 got BOUND
and if you look closely enough, your interface will be
unconfigured those seconds between EXPIRE and
BOUND.
NP: The Flower Kings: @Live Recording, Uppsala City Theatre, Sweden, 10 February 2003

