- Docente: Claudio Salati
- Credits: 6
- SSD: ING-INF/05
- Language: Italian
- Teaching Mode: Traditional lectures
- Campus: Cesena
- Corso: First cycle degree programme (L) in Computer Engineering (cod. 0206)
Learning outcomes
Models, protocols and development tools for the design and implementation of network applications and distributed systems.
Models, protocols and development tools for the design and implementation of network applications and distributed systems.
Complete the overview of the network architecture (Layer 4, 5, 6, 7 of the OSI reference model) with particular reference to the Internet protocols and services.
Introduce concepts and technologies that are used in network programming.
Introduce those application services that are necessary to support a ditributed programming environment.
Introduce network security problems and techniques that are used to deal with them.
Course contents
Introduction
- Structure of a computer network: End-System vs. Intermediate System.
- The ISO OSI reference model: hierarchical architecture, services, service access points, protocols, protocol entities. Interworking.
- Functional description of a service and programming interfaces (API): portability of a network application.
- Function of the reference model layers.
- Allocation of protocol entities on the network nodes and end-to-end functions.
Transport Layer: connection oriented transport service
- Relations between Transport and Network Layer.
- Functional characteristics of the service provided by TCP.
- Procedures for error detection and recovery.
- Sliding window in TCP end-to-end flow control and optimal usage of the network bandwidth.
- TSAPs in the Internet transport protocols. Ports and connections.
- Connection set-up and release.
- TCP and congestion control: algorithms and their implementation.
- Performance issues.
Transport Layer: connectionless transport service
- Functional characteristics of the service provided by UDP.
- Addressing a module in a distributed program.
Unix API for the Transport Layer services.
- The socket interface.
- An alternative: the TLI.
- Portability vs. interoperability.
The presentation Layer.
- Representing information in an heterogeneous computer network.
- Data transfer (byte transfer) vs. information transfer.
- The OSI approach: abstract syntax, concrete (local) sintax, transfer syntax. ASN.1 and BER.
- The presentation layer in the Internet world: XDR.
- Why is the Presentation Layer so important. Other examples: Corba, XML schema, Java.
Structure of the Application Layer and of distributed applications in the OSI reference model
- Generic ASEs: Remote Procedure Call (RPC).
- RPC semantics.
- Sun RPC: definition of a remote interface, its implementation, the RPC protocol. Programming tools for the construction of distributed applications.
Network application and application protocols
- Name Service (DNS).
- HTTP and the WWW. Web based distributed applications.
Security in computer networks
- Identification, authentication, authorization, confidentiality, integrity.
- Security threats.
- Secret key cryptography.
- Public key cryptography.
- Distributing keys.
- Authentication protocols.
- Digital signature.
- Security on the Internet: SSL and HTTPS.
Readings/Bibliography
Main textbooks:
- A.S. Tanenbaum, Computer Networks, 4th ed., Prentice Hall.
- D. Comer, Internetworking con TCP/IP - Principi, protocolli e architetture, vol. 1, Addison-Wesley.
The following books have been used for RPC and distributed programming:
- W.R. Stevens, Unix Network Programming, Prentice Hall.
- SunSoft, Network Interfaces Programmer's Guide (available in electronic copy in the course home page).
Other references:
- RFC 1014, External Data Representation Standard, 1987.
- RFC 1057, RPC: Remote Procedure Call Protocol Specification,
1988.
- M.T. Rose, The open book, Prentice Hall.
- ISO, IS 8072 - OSI Transport Service Definition.
- ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition (a.k.a. ISO IS 9072-1).
Teaching methods
The course is structured in lectures about networking theory and exercises.
Exercises means that you will be guided in the implementation of network programs in C and Java that make use of the APIs and the underlying services that have been described during theory lectures.
Exercizes play a fundamental role in this course. If you complete and hand them in in the required form you may waive the written part of the exam.
Rules are as follows:
- groups of 2 people
- reasonable exceptions: groups of 1 person or 3 people
- groups must be organized and registered at the beginning of the course
- groups may discuss with each other but copying and exchanging source code is absolutely forbidden
During the oral exam: we will check that each student has actually contributed to the implementation of the solution. You must master it perfectly.
Assessment methods
The assessment will be based on all available information:
- classroom interactions
- exercizes
- exams.
Exams include
- a preliminary writtem test
- an oral exam.
The writtem exam takes place in the laboratory: you will develop a network application.
During the oral part of the exam there will be questions both about the written part or the exercizes and about other topics covered during the course.
Teaching tools
Lecture slides and exercises (obsolete versions. For up to date versions, see below) are available in electronic copy in the course download area:
From the same site you can download also some references and other materials.
Additional info and updates about the course, including up to date versions of course lectures, can be found in the following site:
http://dm.unife.it/~salati/cesena/annunci.htm
where a partial mirroring of most relevant parts of the download
area is also available.
Links to further information
http://dm.unife.it/~salati/cesena/annunci.htm
Office hours
See the website of Claudio Salati