Computer Networks

A.Y. 2023/2024
Overall hours
Learning objectives
The objective of the course is to analyze the technologies, models, functioning principles, and main protocols at the basis of computer networks. The main application protocols, and related services, of the IP network and some techniques of distributed programming will be also analyzed.
Expected learning outcomes
At the end of the course, the student shall learn technologies, models, functioning principles, and the main protocols (including application protocols) at the basis of computer networks. Moreover, though laboratory activities, the student shall acquire the ability to manage and configure an IP network, on one side, and the ability to develop the client and server of a distributed application, on the other side.
Single course

This course can be attended as a single course.

Course syllabus and organization

Single session

Lesson period
Second semester
Course syllabus
The course will discuss technologies and protocols underlying computer networks. The course is composed of three parts. The first part will present the fundamentals of computer networks, including local networks and Internet, focusing on datalink (mobile and cabled networks) and on transport-level protocols (TCP/IP).
1. Introduction. Structure and types of information processing systems. Computation and service infrastructure. Multilevel standard: the ISO/OSI example.
2. Introduction to local networks. Motivation. Public and private networks; design fundamentals. Private network types and architectures: LAN, MAN, WAN. The basic notions underlying communication: contention, connection, routing. OSI Level 1: wiring and physical communication. OSI Level 2: MAC and LLC sublevels. Cabled networks. Mobile networks. Optical networks. IEEE standards. Convergence and Software-Defined Network services.
3. Introduction to protocols. OSI Level 3: Protocols' features and design. Internal organization. OSI Level 4: services for transport levels. Comparison between virtual circuit-based and datagram-based networks.
4. Case study: Internet Protocol (IP). Network level: IPv4. IP addresses. Subnetting and Supernetting. Control protocols. ICMP. ARP, RARP. IPv6. IPv6 base header. Extension headers.
5. Routing algorithms. Flooding. Static routing. Shortest path routing. Distance-vector and link-state routing. Broadcast routing. Multicast routing. Routing IP: OSPF. BGP. Internet multicasting.
6. Internetworking IP. Chaining of virtual circuits. Connectionless internetworking. Tunneling and fragmentation management. Firewall. NAT.
7. Transport-level services. Elements of transport protocols. TCP/IP transport: the TCP service model. TCP protocol. UDP protocol. TCP segment header. UDP header. Quality of service. Transport primitives.

The second part will focus on higher levels of the ISO/OSI model, describing the main application protocols and services for the Internet, and presenting some techniques for distributed programming.
1. Client-server paradigm. Structure of application services based on TCP and UDP.
2. Application protocols for IP networks. BOOTP, DHCP. IP address assignment. DNS. Naming. Domain. Domain name resolution.
3. Internet applications and services. WWW, Electronic Mail, File Transfer, Remote Login. Analysis of the main application-level protocols: HTTP, FTP, Telnet, SMTP, POP3.
4. Network administration. SMNP protocol for network management.
5. Distributed programming. Socket. Standard interfaces at socket and stream levels for Unix and Windows. TCP and UDP Sockets. Concurrent sockets.

The third part will consist of practical laboratory exercises focusing on (i) experimental analysis and configuration of the main Internet protocols and services, (ii) the main concepts of distributed programming using programming language C.
Prerequisites for admission
Basic knowledge of computer architectures.
Teaching methods
The course consists of traditional lectures and laboratory lessons. Traditional lectures aim to learn the most relevant theoretical concepts. Laboratory lessons and exercises aims to deepen the notions learned in the theoretical parts.
Teaching Resources
Slides and notes available on the course page (

Reference book:
- D.E. Comer, "Internetworking with TCP/IP: Principles, protocols, and architectures", Volume I, Prentice Hall.

Additional suggested books:
- J. Kurose, K. Ross, "Computer Networking: A Top down Approach featuring the Internet", 3rd ed. Addison Wesley
- C. Huitema, "Ipv6: New Internet Protocol", Prentice-Hall
Assessment methods and Criteria
The exam consists of two written tests and an optional presentation of a project, implemented individually or in a group up to three students. The written exams (duration 1.5 hours) aim to verify, by means of open questions, the knowledge of the student about all arguments discussed during the course. The project, proposed by the teacher or the students, aims to deepen the practical aspects of a single topic discussed during the course.

When the student successfully passes all exams and after the presentation of the optional project, a final evaluation is computed, expressed in thirtieths, considering: the knowledge of the topics, ability of applying the learned knowledge to the resolution of a practical project, project quality, critical thinking skills, clarity of exposition, and property of language.
INF/01 - INFORMATICS - University credits: 12
Laboratories: 48 hours
Lessons: 72 hours
Educational website(s)
By appointment only
At Dipartimento di Informatica, Via Celoria 18, Milan (MI)