This is an introductory course about computer networks. You will learn about the basic principles of computer networks, for example, packet switching, layering, encapsulation, and protocols; you will learn how applications such as the world-wide-web, video streaming (e.g., YouTube and Netflix), video conferencing (e.g., Skype and Zoom) and BitTorrent use the network to communicate. You will spend quite a lot of time learning about the specifics of how the Internet works. You will learn how applications communicate reliably over an unreliable Internet.
Specific topics are as follows. Network architectures in terms of topology, role (client/server, peer-to-peer), and layered specification. Packet and circuit switching. Physical characteristics of network transmission links. Medium access control protocols for wired links (e.g., Ethernet) and wireless links (e.g., 802.11). Protocols for error and flow control and their link layer application. Interconnection of networks using bridges, switches, and routers. Routing techniques, including Dijkstra's algorithm, distance vector, and link state routing. Addressing and naming. Network congestion control. End-to-end protocols for matching applications to networks, including TCP and UDP. Network applications, such as web (HTTP), email (SMTP, POP, IMAP), and streaming media (e.g., video, VOIP).