Introduction to Networking * About this course * What's a network? * What are the fundamental ideas? * What's the Internet? How do these ideas play out there? About This Course * There are 40 of us. I have another 40 starting Capstone right now. This is the most students I've had at PSU. * The course will be run off a Moodle LMS I run: http://svcs.cs.pdx.edu/moodle/cs594 You need to get signed up as a student on the Moodle if you are not already. You then need to *separately* enroll in this course on the Moodle. (Using signup key given in class.) This must be done *now*. A week from tomorrow I will go through the roll and administratively drop anyone not hooked into Moodle from the course. In the meantime, I may well send relevant announcements to the course forum. Prerequisites * You must be reasonably OK at C programming (or willing to learn it fairly quickly). C is the official language of the Internet and therefore this course; I'm not interested in others. * You must have some idea how to interact with the UNIX (Linux) operating system. UNIX is the official OS of the Internet and therefore this course; I'm not interested in others. * You must have good reading and research skills. We will be reading a huge pile of material in this course, and you will need to find some of it yourself. * You need to have time and willingness to explore on your own. Textbook * Stevens vol. I 2nd ed is * Awesome * Encyclopedic * Huge * We will read most of the textbook this quarter. Given its volume, your reading may not be so detailed in spots, but you can't just skip it, either. Use good judgement. * Bring textbook to every class meeting, also something to write on and with. Homework and Final * I will give assignments as frequently as my schedule (not yours) permits. They will all be programming assignments. I will not accept them late or busted. * We have lab facilities if you fail to have access to your own computer running Linux. Make sure you have access to them now. * See the syllabus re academic honesty. I get really unhappy with plagiarists. * The Final will be at the scheduled time. It will be closed-book and cover mostly concepts (little if any code). Grading Philosophy * I would love to give everyone an A. It's your job to make that possible. * Part of the reason for homework / quizzes / etc is to justify the A I am giving you. Course Philosophy * Networking is a big, interrelated topic. * Three organizing principles: * Vocabulary * Mechanisms * Design and Implementation * Accelerating learning curve. Communications Basics * "Medium", "Transmit", "Receive", "Bit": Sending things over a "wire" of some sort. * "Bandwidth", "Latency", "Throughput", "Error Rate": Wires have limits. * "Flow Control", "Packets", "Synchronization": Communication should be managed. * "Topology": Who can talk to who? * One nodes: "loopback" * Two nodes: "point-to-point" * Three or more endpoints: various graph topologies, notably "shared", "bus", "star", "loop". Error Correction and Flow Control * Two basic error correction strategies * "Forward Error Correction" ("redundancy" first) * "Retransmission" (redundancy later): This is what networking protocols usually use * "Flow Control": Receiver(s) need to keep up with transmitter. Commonly same(ish) mechanism for retransmission and flow control. * Internet is "best effort" delivery: may lose or reorder packets due to errors or flow control issues. * Trad. Internet soln: "TCP" Layered Model * Networks are often built up in layers. * 7-layer ISO OSI model. * "5-layer" Internet model. * A simplified layer model: * Application: HTTP * Service: e.g. TCP * Transport: e.g. IP * Link: e.g. MAC * Physical: e.g. Ethernet * Different layers may have different topologies. Packets, Paths, Addresses and Routing * For HW reasons (etc) data is broken up into blocks called "packets", which are sent separately. * Each packet traverses a "path" through its network following some "route", hopefully arriving at its destination. * "Packet-switched" networks are "store-and-forward": packets arrive at intermediate nodes and are held there until they can be sent on. * Each packet carries a descriptor called its "address". The address may serve three functions: * Destination ID * Destination Location * Routing * Addresses may identify a "host" or "interface"---usually an interface. Reading About Networks * The "Internet Engineering Task Force (IETF)" is the organization that builds and maintains the Internet. * IETF has a "Request For Comments (RFC)" process that it uses. Nothing is officially adopted by IETF without progressing through draft RFC status. Each RFC must have two independent implementations before being adopted. * To learn about the Internet you can use the textbook, but you also need to learn to find and read RFCs. * There is specific language in RFCs that matters: "MAY" "MUST" "SHOULD" "WILL" and their negations. * Reading RFCs requires network vocabulary and patience.