Hack Proofing Your Network, Second Edition

Or "Where Are We Going, and Why Am I in This Handbasket?" "Behold the beast, for which I have turned back;Do thou protect me from her, famous Sage,For she doth make my veins and pulses tremble.""Thee it behoves to take another road,"Responded he, when he beheld me weeping,"If from this savage place thou wouldst escape;Because this beast, at which thou criest out,Suffers not any one to pass her way,But so doth harass him, that she destroys him..."
Dante's Inferno, Canto I, as Dante meets Virgil
(trans. Henry Wadsworth Longfellow)
It is a universal rule of computer science (indeed, management itself) that no solution is perfectly scalable, that is, a process built to handle a small load rarely, if ever, can scale up to an arbitrarily large one, and vice versa. Databases built to handle tens of thousands of entries struggle mightily to handle millions; a word processor built to manage full length books becomes too baroque and unwieldy to tap out a simple e-mail. More than mere artifacts of programming skill (or lack thereof), such limitations are generally and unavoidably a consequence of design decisions regarding exactly how the system might be used. Presumptions are made in design that lead to systemic assumptions in implementation. The best designs have presumptions flexible enough to handle unimaginably diverse implementations, but everything assumes.
Transmission Control Protocol/Internet Protocol (TCP/IP) has been an astonishing success; over the course of the late 1990s, the suite of communication protocols did more than just supplant...