Since the beginning of time, the TCP/IP implementation of Unix and all its look-alikes reserve TCP and UDP ports in the range of 1 to 1023 for processes running with root privilege. Processes running under a user ID other than 0 are not able to bind to these ports.
This feature was introduced in order to be able to transmit authentication information somewhat reliably. For instance, most implementations of NFS, the network file system, use this feature.
Whenever an NFS client transmits a request to the NFS server, it needs to indicate the identity of the process requesting the operation, so that the server can perform its access checks. When using the most common authentication mechanism called system authentication, the client will just include the user ID and group IDs of the user on the client host. These IDs are used by the server process when performing the file operation, just as if it had been a local process (in other words, the NFS server process impersonates the client user). But then, what keeps an ordinary user from writing a program that sends NFS requests with arbitrary user credentials, including root?
This is where privileged ports come in. When using the system authentication flavor, most NFS servers will not accept any requests unless they come from a privileged port - indicating that the NFS request originated from the client's operating system, and should be trusted.6.3 For what it's worth, the rlogin service mentioned above also relied on the restricted port range: the client would always open a privileged port when talking to an rlogin server, and transmit the name of the user who invoked the command. The server made sure the client's source port was indeed restricted, and if it was, trusted the client user name transmitted. After all, why should the super user on the client machine lie?
This sort of reasoning may have had its merits when the only machines that actually had a network card cost somewhere north of 20,000 US Dollars and were hence not really a household item, and when US government restrictions severely crippled the deployment of more secure authentication mechanisms.6.4
All of this has changed. Everyone can be root on a Linux box for less than USD 1,000. Starting in the late 1980s, Windows machines began to appear on local area networks, and they didn't even have the notion of different user accounts, much less a super user (Gasp! Erm... bummer.) The US have all but dismantled their crypto export restrictions, with Microsoft Windows 2000 being one of the first OSes to take full advantage of this with their adoption (and mutilation) of the Kerberos network authentication framework.
Looking at privileged ports from this angle, there's no reason to use them anymore today, except when interfacing to services such as NFS or rlogin.
XXX: flesh out. Mention why ports < 512 are dangerous (bounce attacks). Alternatives: use SSL, or stuff like Kerberos if available.