CSCI.4220 Network Programming
Class 2, Monday, Jan 24, 2005

Internet History

In the 1960's DoD wanted a network that could survive a nuclear attack. The phone system of the time had a few major switching centers, and if these were destroy, the phone system would be destroyed. DoD turned to ARPA (advanced research project agency (later DARPA, now ARPA again), who issued the major contract to the consulting firm BBN.

BBN adopted the notion of packet switching, (much of the research on this was done by Leonard Kleinrock at MIT). The original internet, called the ARPAnet was a network of minicomputers, each of which would be connected to at least two others. BBN also developed what is now TCP UDP and IP.

TCP/IP software was bundled with BSD (Berkeley Software Distribution) Unix. BSD also developed the socket interface., and this made it very popular in the mid 80s. A number of other federally funded networks developed CSNET, BITNET, NSFNET. Initially used for email, ftp, telnet and news.

Jan 1, 1983 - TCP/IP became the standard

But the Internet really took off with a new application, the WWW in the early '90s. The Web was invented at CERN by Tim Berners-Lee, 1989-1991. He developed HTTP, HTML, and wrote the first web server and web browser. In 1992 there were about 200 web servers deployed

In 1994 Marc Andreesen and Jim Clark formed Mosaic communications, this later became Netscape. In 1996 Microsoft started their own browser, Internet Explorer, leading to the browser wars.

Four killer apps

The client-server model

A server is a process that is waiting to be contacted by a client process so the server can do something for the client.

Note that the client has to know the name of the server and the port number to connect. Servers listen on well-known ports. Example, web servers listen on port 80.

Socket programming

Pseudocode for a simple stream oriented server.
Pseudocode for a simple stream oriented client
Function prototypes for system calls
Data structures
A stream oriented (TCP) server for Unix
A stream oriented client for Unix
A stream oriented (TCP) server for Windows
A stream oriented client for Windows