CPS 356: Introduction to Computer Networks Lecture 1: Introduction and course overview Xiaowei Yang xwy@cs.duke.edu Welcome back! Hope you had a great holiday break! Today • Course introduction • Course forecast – What we will be covering Who should be taking this class? • Curious about how things work – A lot of internals of networking • Loves to build things – Programming labs Why? • You use it (the Internet) every day. – Youtube, DNS, Skype, Facebook, Gmail • Multi-billion dollar companies built on it – Google, Facebook – Chances you’ll develop some network applications in the future are high • Changing the way people live – Network development in developing countries • Massive online learning, Internet clinics, the fisherman story • Fun applications – Online games, social networking, video streaming, … – The next one may be yours! Course goals • Goals: principles that underlie the design of computer networks and network protocols – Division of labor: smart vs dumb networks – Soft state vs hard state – Packet switching vs circuit switching – Layered vs integrated designs – Structured overlay vs unstructured overlay Why design principles are important • System building does not have just one answer • Help you acquire a good taste – Myspace vs Facebook – Google vs all search engines before it Prerequisites • Good knowledge of C/C++ – Labs are done in C/C++ – Some knowledge of socket programming from CPS 310 Course staff • Instructor: Xiaowei Yang – http://www.cs.duke.edu/~xwy/ – Main research interests: network architectures and protocols, network security, distributed systems • TA: Hongze Zhao – https://www.cs.duke.edu/~hongze/ Recommended Textbook • Larry L. Peterson, Bruce S. Davie, Computer Networks: A Systems Approach, 5th Edition, Morgan Kaufmann – Available from bookstore, amazon – A view as a system builder, not a user – 4th is okay Website: important • http://www.cs.duke.edu/courses/spring14/compsci356/ • Syllabus – – – – – Book chapters related to lectures Pointers to external papers for topics Read before class for discussion Assignments and due dates Lectures • All subject to change. Reload before checking Discussion forum • Piazza? • What do you suggest? Contact Us: We are here to help you • Office hours – TA: Fridays 10am-noon @ North 06 – Instructor: Fridays 1:30-3:30pm or by appointment – All course related topics: compsci356-staff@cs.duke.edu • Grading, questions, homework, labs, exams • Within a day • Email for meetings outside regular office hours • Really urgent – State so in your email – IM: xiaowei@gmail.com (voice mail does not work), zhaohongze@gmail.com • Unfortunately, no recitation section was scheduled – Do come to office hours – Do communicate with us via email Your work: important • Assigned readings in the Syllabus • Homework • Labs (substantial, but worth your time). Most of them are ~500 lines of code, 20 hours of coding/debugging – – – – Lab 1: simple router Lab 2: dynamic routing Lab 3: reliable transport Lab 4: congestion control • Labs contain pre-lab questions that help you understand the basic concepts • Labs are distributed with skeleton code and most of them have reference implementations for testing • Turn-ins include answers to pre-lab questions, source code, lab reports if we ask for them Collaboration policy • Discussion is encouraged • Individual assignments must be completed independently • Group assignments only need to turn in one copy of the files with group members noted in the submission Late policy • All assignments are due at the beginning of the class on the due dates – I may grant extensions if you show up in class • The deadline for any assignment can be extended with a 10% penalty per day. – No deadline can be extended by more than two days. – Assignments will NOT be accepted 48 hours after the due date. • Tight schedule • Extension will delay next assignment – If you are ill: contact the instructor and provide a medical note. Grading policy • Class participation and pop quizzes: 20% • Labs: 50% – In a group assignment, both students get the same grade for the assignment • Exams: 30% Questions? Course outline • The fundamentals – Reliable/secure communications over unreliable/insecure channels – Finding paths through the network – Resource sharing – Providing common services to applications • Case studies on how to use the network • Content distribution, DNS, p2p, social networks, search engines • Socket programming The networking field is broad and confusing… A Plethora of Protocol Acronyms? WAP SNMP LLDP FTP OSPF RTP PPP ICMP IMAP HTTP HIP IGMP ECN RED ARP IP RIP TCP MPLS SMTP BFD RTSP NNTP TLS SACK RTCP CIDR NAT STUN SSH DNS POP MAC UDP BGP PIM IPX SIP DHCP VLAN VTP LISP TFTP Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt LDP A Heap of Header Formats? Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt TCP/IP Header Formats in Lego Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt A Big Bunch of Boxes? Load balancer Label Switched Router Router Switch Scrubber Repeater Gateway Deep Packet Inspection NAT Route Reflector DHCP server Firewall WAN accelerator Bridge Intrusion Detection System Hub DNS server Packet shaper Packet sniffer Base station Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt Proxy A Ton of Tools? arpwatch tcpdump syslog wget nslookup traceroute trat snort nmap whois ipconfig rancid ntop net-snmp dig bro ping iperf wireshark NDT dummynet Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt mrtg What Do Other People Say? • “You networking people are very curious. You really love your artifacts.” • “In my college networking class I fell asleep at the start of the semester when the IP header was on the screen, and woke up at the end of the semester with the TCP header on the screen.” • “Networking is all details and no principles.” Is networking “just the (arti)facts”? Source: http://www.cs.princeton/~jrex/talks/conext-student10.ppt Teaching/Learning about networking can be hard I hope to make it easy for you • Emphasis on fundamentals, concepts, and design skills – Headers will be provided in all your quizzes – You’ll pay attention to details in labs • Treat everything we learn as design examples – Why they are designed that way? – Is it a success or failure? – Will you do it the same way? The first big question we study: How to design a global computer network What’s a network? • Wikipedia: A wide variety of systems of interconnected components are called networks. • Examples of networks: what components are connected? – – – – – – The Internet Telephone networks TV networks Power networks Sewage networks Water networks – …. • Why do we build networks? – To distribute/transfer something Features of computer networks • Generality • Carry many different types of data • Support an unlimited range of applications – Can you name several Internet applications? What’s the Internet? • The Internet is a large-scale general-purpose computer network. – Run more than one application • The Internet transfers information between computers. • The Internet is a network of networks. What the Internet looks like Host Host Host Ethernet Host Host Wireless Framerelay Host Ethernet Ethernet, CSMA/CD Bridges, Switches, Spanning Tree Host Host Ethernet Host IP/SONET Host 802.X email WWW phone... SMTP HTTP RTP... Host Host ATM Bandwidth x Delay TCP Performance Host Host Host Tier 3 TCP UDP… IP Blocks, CIDR, Subnets Longest Prefix Match, Fragmentation, MTU IP ethernet PPP… CSMA async sonet... RIP, OSFP Distance Vector Link-State copper fiber radio... Modulation Coding FDMA, TDMA Tier 2 BGP Tier 2 Tier 1 Tier 1 Tier 2 The Internet Summary • Course introduction – Administrivia – Course outline • Next – Network architectures: different styles of building networks