The Internet provides global connectivity for applications and end-users. We want to understand, on the one hand, how common distributed applications such as the world-wide web use the network (the Internet), and on the other hand how the network is designed and how it provides its services to applications. This course serves the designers of distributed applications, as well as network designers as an introduction to advanced studies in computer networking. The course covers the architecture of networked applications and the network itself, their fundamental protocols, and the design principles behind them. This includes applications such as the Web, e-mail, and peer-to-peer systems; the two most important transport protocols of the Internet, namely UDP and TCP with its provisions for reliability and congestion control; and the network layer, with the structure of routers and the network as a whole, packet forwarding, and the basics of interdomain and intradomain routing.