Introduction: Syllabus Calendar Course Website No textbook this semester! Weird, huh? I never found one I really liked Instead, I'm going to produce documentation for the class examples What else can I do? Notes: The client/server project, done well, is a lot of work Project is a client/server system - It is a text-based multi-user RPG This is a project-focused course Dual-purpose, but less so this semester - Learn to develop network software (main) - Learn how networks work (secondary, but important for #1) - This odd dual nature is sometimes considered disconcerting - Common comment: "It feels like two separate classes" But this semester, most of you had Cyb251 I can get the others of you through just fine Might assign a couple youtube videos or something This class will be focused on network programming Nobody can show you the matrix The rain forest and ssh Comparison with Distributed System Cluster is a distributed system Access to information and tyranny of geography client/server systems Metcalfe's Law peer to peer networks mobile vs. wireless - not the same, but related mobile phone users expect to pay for stuff network neutrality More technical, review from 251 if you had it, overview if not packets, frames, connections, datagrams, and packaging broadcast, multicast, vs. point to point LAN vs. WAN units: bits per second, not bytes. Why? switch vs. hub (and wireless) Other little boxes you probably have (all of these can be stuffed into one box): gateway router firewall access point modem WAN: Diverse locations, link may (usually is) through the Internet Can be unified to look like LAN The Internet: subnets managed by different ISPs, all linked together Addressing scheme IPv4 and IPv6 Network layers and protocols layers can be replaced lowest layer is physical layer headers Making the network work Error correction routing scalability connections acknowledgement lower levels are unreliable services provided by layers OSI Network Layers Physical Layer: Transmits 0's and 1's This must happen reliably More than one method is used here Not in TCP/IP, although this function must be performed Data link layer: Form 0's and 1's into frames Send acks Hide errors from network layer For broadcast: Manage shared channel Link layer in TCP/IP Network layer: routing For broadcast: Do nothing Internet layer in TCP/IP Packet format in TCP/IP is called IP (Internet Protocol) IP routing is not always effective Transport layer: Separate messages into packets and put them back together TCP and UDP handle this in TCP/IP TCP is reliable, UDP is not Session layer: maintain sessions Sessions involve keep track of which computer should send data, checkpointing long transmissions, etc. Not in TCP/IP, TCP handles some of these functions Presentation layer: Convert internal information to a representation that can be transmitted Allows high-level structures to be defined and transmitted (objects, etc) Not in TCP/IP Application layer: Contains protocols like HTTP, SMTP, SSH, etc. Servers, etc. are here We will use the TCP/IP model, because it exists And we're programming this semester, not philosophizing Why TCP/IP? It put existing protocols into a model OSI is complex and includes layers nobody needs Initial implementations were slow compared to BSD UNIX Politics: Friendly old UNIX had TCP/IP, OSI standard was from the government Was that bad? TCP/IP isn't that generic No physical layer definition Simple client and server in C