Network programming

Introduction

Goals of the course

Design and implement software that exchange data via the network

  • on top of the protocols IP, UDP or TCP
  • using architectures adapted to the needs (concurrent servers, non-blocking IO)
  • taking into account the fundamental mechanisms of communication protocols : data representation, frames, streams, acknowledgments, ...
  • Main concepts covered

  • data representations, handling data through java.nio.Buffer
  • communication in UDP, reliability of exchanges, clients vs server, a first taste of non-blocking IO
  • TCP clients, handling a stream of data, protocols on top of TCP, the case of HTTP
  • concurrent TCP servers and their limits, TCP servers using non-blocking IO.
  • Teaching philosophy

    All sessions mix both lecture and exercises with

  • some notions in a few slides
  • exercises to immediately apply these notions
  • a guided personal reflexion and experimentation
  • a group consolidation : problems raised, possible solutions, dogmas to obey...
  • Organization

    You need to be active during the session ...

  • the interactions during the session are rich
  • you must be on time!
  • ... but it is not enough!

  • you must finish the exercises and post them to elearning
  • you must review the previous lectures
  • project quite large and difficult
  • Evaluation

    30% TPnoteUDP + 30% TPnoteTCP + 40% PROJECT

  • TPnote[UDP|TCP]: exam in front of a machine
  • PROJECT three grades:
    • write an RFC for a protocol
    • presentation beta of your project at mid-course,
    • final delivery packaged and documented
  • What you need to do

  • be active during all sessions
  • review the slides and finish the exercises
  • always post your work on elearning
  • start the project as soon as possible