%%
%% Introduction au Réseau pour le ResEl
%%
%%
%% Copyright (C) 2005 Association ResEl <gestion@resel.enst-bretagne.fr>
%% Ce document est un document libre ; vous pouvez le redistribuer et/ou
%% le modifier au titre des clauses de la Licence Publique Générale GNU,
%% telle que publiée par la Free Software Foundation ; soit la version 2
%% de la Licence, ou (à votre discrétion) une version ultérieure
%% quelconque. Ce docuement est distribué dans l'espoir qu'il sera utile,
%% mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de
%% COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. Voir
%% la Licence Publique Générale GNU pour plus de détails. Vous devriez
%% avoir reçu un exemplaire de la Licence Publique Générale GNU avec ce
%% document ; si ce n'est pas le cas, écrivez à la Free Software
%% Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%% 02110-1301, USA.

%\documentclass[xcolor=pst,compress]{beamer}
\documentclass{beamer}
% xcolor = bst pour pouvoir utiliser PSTricks et Beamer

\usepackage[francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage{pstricks,xspace}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{url}
\usepackage{color}

\def«{\og}
\def»{\fg}

%% Rajoute un \strut pour que la couleur résiste à un \item devant...
\newcommand{\vavers}{\strut{\red$\leadsto$}\xspace}

\mode<presentation>
{
  %\usetheme{Warsaw}

  % Variation sur le thème de Warsaw
  % (principalement à cause du rappel du plan en haut
  %  qui est devenu trop long)
  \useinnertheme{rounded}
  \useoutertheme{infolines}
  \usecolortheme{orchid}
  \usecolortheme{whale}

  \setbeamercovered{transparent}

  % On supprime la barre de navigation
  \setbeamertemplate{navigation symbols}{}
}



\title[Introduction aux réseaux IP]
{ResEl~102 : Présentation des notions de réseau utilisées au ResEl}

\author[Association ResEl]
{
  Association ResEl\\
  \texttt{<gestion@resel.enst-bretagne.fr>}
}

\institute[Réseau des Élèves]
{
  Réseau des Élèves de l'ENST Bretagne
}

\date{19 Octobre 2005}


\subject{ResEl~102 : Présentation de notions de réseau utilisées au ResEl}
\keywords{ResEl,réseau}


% Logo du ResEl
\pgfdeclareimage[height=0.4cm]{resel}{logo_ResEl}
\logo{\pgfuseimage{resel}}


% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Plan}
    \scriptsize
    \tableofcontents[currentsection,hideallsubsections]
    \normalsize
  \end{frame}
}


% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
%\AtBeginSubsection[]
%{
%  \begin{frame}<beamer>
%    \frametitle{Plan}
%    \scriptsize
%    \tableofcontents[currentsection,currentsubsection]
%    \normalsize
%  \end{frame}
%}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:
%\beamerdefaultoverlayspecification{<+->}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Licence}

  \begin{block}{}
    Ces slides sont sous licence GPL (General Public Licence). Ils
    sont disponibles, avec leur code source sur le site de
    l'Association ResEl
    (\href{http://resel.enst-bretagne.fr}{\texttt{http://resel.enst-bretagne.fr}}).

    \vspace{1cm}

    Ils ont été créés à partir de logiciels libres (\LaTeX -beamer).
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Plan}
  \scriptsize
  \tableofcontents[hideallsubsections]
  \normalsize
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\logo{}
\section{Introduction}
\subsection{Ceci n'est pas un cours de RES}

\begin{frame}
  \frametitle{Ceci n'est pas un cours de RES}

  \begin{block}{}
    \begin{itemize}
      \item Il faut avoir un minimum suivi en RES~101 (être allé au premier amphi...)
      \item On ne va pas vous assomer avec trop de théorie :
      \begin{itemize}
	\item une découverte des protocoles~;
	\item présentation rapide de ceux-ci sans entrer dans les détails~;
	\item pour ceux qui veulent en savoir plus, beaucoup de documentation
        sur internet (sites dédiés, RFCs, ...).
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}


\subsection{Modèle OSI - Modèle TCP/IP}
\begin{frame}
  \frametitle{Modèle OSI - Modèle TCP/IP}

  \begin{block}{}
    \begin{itemize}
      \item Modèle OSI, vu en cours de RES~101 :
      \begin{itemize}
        \item Modèle théorique d'abstraction des couches protocolaires~;
        \item N'est pas suivi en règle générale~;
      \end{itemize}
      \item Modèle TCP/IP :
      \begin{itemize}
        \item Basé sur le modèle en 3 couches du DoD Protocol Model~;
        \item Network Access Layer $\simeq$ la couche 2 du modèle OSI~;
        \item Internetwork Layer : protocole IP  $\simeq$ couche 3~;
        \item Host-to Host Transport Layer : protocole TCP $\simeq$ couche 4 et
        un peu 5.
     \end{itemize}
     \begin{center}
       \includegraphics[height=60pt]{pstack.eps}
     \end{center}
    \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Ethernet}

\subsection{Présentation}

\begin{frame}
  \frametitle{Présentation}

  \begin{block}{}
    \begin{itemize}
      \item Format de la trame Ethernet :
      \begin{center}
        \includegraphics[height=40pt]{ethernet.eps}
      \end{center}
      \item Préambule et début de trame (8 octets)
      \item Adresses MAC destination et source (6 octets chacune) :
      \begin{itemize}
        \item MAC = Medium Access Control~;
        \item Adresse unique et associée à une \og carte \fg réseau~;
        \item On représente les adresses MAC de cette façon xx-xx-xx-xx-xx-xx où
        xx est la représentation hexadécimale de l'octet~;
        \item Adresse décomposée en deux parties : préfixe constructeur et
        identifiant de carte~;
      \end{itemize}
      \item Type (2 octets)~: donne le protocole utilisé au niveau supérieur
      (0x0800 pour IPv4, 0x86dd pour IPv6).
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Réseaux switchés}

\begin{frame}
  \frametitle{Réseaux switchés}

  \begin{block}{}
    \begin{itemize}
      \item Hub : répéteur de niveau 1 c-à-d les trames sont copiées sur chaque
      segment de réseau~;
      \item Dans les switches, cache des adresses MAC déjà vues~;~envoi de la
      trame sur le bon segment de réseau~;
      \item Meilleure gestion des ressources~;
      \item Sécurité améliorée~: le trafic est envoyé au seul destinataire.
    \end{itemize}
  \end{block}
\end{frame}

%\subsection{Raffinements possibles}

%\begin{frame}
%  \frametitle{Raffinements possibles}

%  \begin{block}{}
%    \begin{itemize}
%      \item VLANs avec la norme 802.1Q
%      \begin{itemize}
%        \item VLAN = Virtual LAN~;
%        \item Un tag (numéro de VLAN) est rajouté dans
%        l'en-tête Ethernet~;
%        \item On indique sur chaque switch sur quel VLAN doit être chaque port~;
%      \end{itemize}
%      \item Authentification au niveau 2 avec 802.1X
%      \begin{itemize}
%        \item Au départ, le lien ne laisse passer que les messages 802.1X~;
%        \item Authentification 802.1X~;
%        \item Si l'authentification est correcte, le lien est ouvert aux
%        communications Ethernet classiques~;
%      \end{itemize}
%    \end{itemize}
%  \end{block}
%\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Internet Protocol v4 (IPv4)}

\subsection{Présentation}

\begin{frame}
  \frametitle{Présentation}

  \begin{block}{}
    \begin{itemize}
      \item Achemine des paquets sur un réseau en mode non-connecté~;
      \item Format du paquet IPv4~:
      \begin{center}
        \includegraphics[height=90pt]{ipv4.eps}
      \end{center}
      \item Champs \og importants \fg~:
      \begin{itemize}
        \item TTL~: est décrémenté à chaque passage dans un routeur. Lorsqu'il
        atteint 0, le paquet est supprimé~;
        \item Protocole~: indique le protocole de niveau supérieur (1 pour ICMP,
        6 pour TCP, 17 pour UDP)~;
        \item Adresses source et destination~: permet le routage des paquets.
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Adressage}

\begin{frame}
  \frametitle{Adressage 1/2 - Sous-réseaux}

  \begin{block}{}
    \begin{itemize}
      \item Adresses sur 32 bits, représentées par groupes d'1 octet : x.x.x.x~;
      \item Adresse associée à une interface réseau~;
      \item Au commencement d'Internet, répartition en classes d'adresses (A, B,
      C, D ou E)~;
      \begin{itemize}
	\item Classe A~: 126 réseaux, + de 16 000 000 hôtes par réseau~;
        \item Classe B~: 16 384 réseaux, 65 532 hôtes sur chacun~;
        \item Classe C~: + de 2 000 000 de réseaux avec 254 hôtes~;
        \item Classe D~: adresses multicast~;
        \item Classe E~: réservée pour des expérimentations~;
        \item Mauvaise gestion de l'attribution des adresses~;
      \end{itemize}
      \item Notation en vigueur CIDR (Classless Inter-Domain Routing) : 
      adresse/masque~;
      \begin{itemize}
        \item Masque de sous réseau~: 255.255.0.0 = /16~;
        \item Permet de mieux découper et hiérarchiser les plages d'IPs.
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Adressage 2/2 - Types d'adresse}

  \begin{block}{}
    \begin{itemize}
      \item Adresse de loopback~: 127.x.x.x (la plus connue étant 127.0.0.1).
      C'est une adresse de test. La carte réseau ne l'envoie pas sur le réseau
      mais se la renvoie~;
      \item Adresses privées~: Ces adresses ne sont pas routées c-à-d les 
      paquets dont l'IP destination contient une adresse privée sont 
      supprimmés lorsqu'ils atteignent un routeur. Ce sont~:
      \begin{itemize}
        \item 10.0.0.0/8~;
        \item 172.16.0.0/16~;
        \item 192.168.0.0/24~;
      \end{itemize}
      \item Adresses multicast~: 224.0.0.0 à 239.255.255.255~;
      \item Adresses publiques~: tout le reste (ou presque).
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Address Resolution Protocol (ARP)}

\begin{frame}
  \frametitle{Address Resolution Protocol (ARP)}

  \begin{block}{}
    \begin{itemize}
      \item Permet de faire la correspondance adresse IP $\leftrightarrow$ 
      adresse MAC~;
      \item \texttt{arp who-has 172.16.23.1 tell 172.16.25.185}~;
      \item \texttt{arp reply 172.16.23.1 is-at \url{00:01:01:F7:2F:90}}.
    \end{itemize}
  \end{block}{}
\end{frame}

\subsection{Internet Control Message Protocol (ICMP)}

\begin{frame}
  \frametitle{Internet Control Message Protocol (ICMP)}

  \begin{block}{}
    \begin{itemize}{}
      \item Permet d'échanger des messages d'erreur et des demandes 
      d'information~;
      \item Le paquet est constituée du type de message, du code de message 
      et de données variables qui dépendent de ces deux champs~;
      \item Commande ping :
      \begin{itemize}
        \item Envoie des messages icmp \texttt{echo-request} (Type = 8, 
        Code = 0)~;
        \item Reçoit en réponse des icmp \texttt{echo-reply} (Type = 0, 
        Code = 0)~;
      \end{itemize}
      \item Autre exemple : message icmp avec Type = 3 et Code = 0. C'est le
      message reçu par notre machine, lorsque le réseau sur lequel se situe 
      la machine que l'on veut atteindre n'est pas accessible.
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Multicast en IPv4}

\begin{frame}
  \frametitle{Multicast en IPv4}

  \begin{block}{}
    \begin{itemize}{}
      \item Principe de multidiffusion~: le trafic est envoyé en un seul
      exemplaire à une seule adresse, dite de groupe~;
      \item Le réseau réplique de manière intelligente le trafic pour le 
      faire parvenir aux \og abonnés \fg~;
      \item Les adresses utilisées pour le multicast dans IPv4 sont de 
      classe~D~: 224.0.0.1 à 239.255.255.254~; 
      \item L'utilisateur utilise IGMP (\emph{Internet Group Management 
      Protocol}) pour rejoindre ou quitter un groupe multicast.
    \end{itemize}
  \end{block}
\end{frame}

%\subsection{Network Address Translation (NAT)}
%
%\begin{frame}
%  \frametitle{Network Address Translation (NAT)}
%
%  \begin{block}{}
%    \begin{itemize}
%      \item Epuisement des adresses IPv4~;
%      \item Solution : cacher un réseau adressée en IP privées derrière une IP
%      publique. Nécessite une passerelle.
%      \item Lorsqu'une des machines du réseau privée veut se connecter sur une
%      machine hors du réseau, elle passe par la passerelle
%    \end{itemize}
%  \end{block}{}
%\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Internet Protocol v6 (IPv6)}

\subsection{Présentation}

\begin{frame}
  \frametitle{Présentation 1/3}

  \begin{block}{}
    \begin{itemize}
      \item Adresses sur 128 bits : espace d'adressage beaucoup plus important
      que pour IPv4~;
      \item Simplification de l'en-tête des paquets~;
      \item Mécanismes d'autoconfiguration des machines~;
      \item IPsec, QoS et multicast \og natifs \fg~;
      \item Mobilité accrue~;
      \item Coexistence aisée avec IPv4 pour la transition~;
      \item Compatibilité assurée avec la plupart des autres protocoles de
      l'Internet avec pas ou peu de modifications de ceux-ci.
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Présentation 2/3}

  \begin{block}{}
    \begin{itemize}
      \item Format du paquet IPv6 :
      \begin{center}
        \includegraphics[height=190pt]{ipv6.eps}
      \end{center}
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Présentation 3/3}

  \begin{block}{}
    \begin{itemize}
      \item Version (4 bits) : numéro de version du protocole IP = 6~;
      \item Traffic Class (8 bits) : permet de faire la distinction entre le 
      traffic temps réel et les autres et dans chacune de ces deux classes de
      définir des priorités~;~QoS intégrée~;
      \item Flow Label (20 bits) : label qui permet d'appliquer des traitements
      particuliers à un flux de données dans les noeuds du réseau~;
      \item Payload Length (16 bits) : Longueur des données après
      l'en-tête~;
      \item Next Header (8 bits) : Identifie le protocole situé juste après~;
      \item Hop Limit (8 bits) : Remplace le TTL d'IPv4.
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Adresses IPv6}

\begin{frame}
  \frametitle{Adresses IPv6}

  \begin{block}{}
    \begin{itemize}
      \item Adresses sur 128 bits : on les note en faisant des groupes de 2
      octets séparés par \og \url{:} \fg~:
      \url{fe80:0000:0000:0000:0214:85ff:fe80:0d33}~;
      \item Pour raccourcir ces adresse :
      \begin{itemize}
        \item On peut enlever les premiers 0 de chaque bloc~;
        \item Les blocs de 4 zéros consécutifs sont omis~;
        \item Avec l'exemple : \url{fe80::214:85ff:fe80:d33}~;
      \end{itemize}
      \item Types d'adresse :
      \begin{itemize}
        \item Unicast : associée à une interface réseau~;
        \item Multicast : paquets envoyés à un groupe d'interfaces réseau~;
        \item Anycast : paquets envoyés à une seule interface parmi un groupe.
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}

\subsection{ICMPv6}

\begin{frame}
  \frametitle{ICMPv6}

  \begin{block}{}
    \begin{itemize}
      \item Même format d'en-tête que ICMPv4~;
      \item Plus de types de messages~:
      \begin{itemize}
        \item Les mêmes qu'ICMP~;
        \item Neighbor Sollicitation/Advertisement~: remplace ARP~;
        \item Router Sollicitation/Advertisement~: permet d'annoncer les \og
        routes \fg et le préfixe de sous-réseau pour l'autoconfiguration~;
      \end{itemize}
      \item Autoconfiguration de l'adresse IPv6~:
      \begin{itemize}
        \item L'interface réseau envoie un message Router Sollicitation pour
        obtenir l'adresse du routeur ainsi que le préfixe de sous-réseau~;
        \item Le routeur répond par un Router Advertisement~;
        \item La machine reçoit le préfixe (\url{2001:660:7302:3::0/64} par
        exemple) et rajoute derrière son adresse MAC un peu modifiée. Cela assure
        l'unicité de l'IP sur le réseau.
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Transport Control Protocol (TCP)}

\subsection{Présentation}

\begin{frame}
  \frametitle{Présentation}

  \begin{block}{}
    \begin{itemize}
      \item Protocole en mode connecté~;
      \item Three Way Handshake~:
      \begin{itemize}
        \item Le client demande une connection au serveur~;
        \item Le serveur acquitte cette demande~;
        \item Le client confirme qu'il a bien reçu l'acquittement~;
      \end{itemize}
      \item Gestion des sessions~;
      \item Contrôle d'erreur~;
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Notion de port}

\begin{frame}{}
  \frametitle{Notion de port}

  \begin{block}{}
    \begin{itemize}
      \item Dans l'en-tête TCP, numéros de port destination et source codés sur 16
      bits~;
      \item Une session TCP monopolise au moins un port chez le client et le
      serveur~;
      \item Numéros de ports inférieurs à 1024~: réservés pour des applications 
      classiques (80~: http, 22~: ssh, 25~smtp, ...), assignés par l'IANA
      (\emph{Internet Assigned Number Authority})~;
      \item Entre 1024 et 49151, ports réservés~;
      \item À partir de 49152, ports dynamiques, c-à-d partagés par toutes les
      applications et alloués en fonction des besoins.
    \end{itemize}
  \end{block}
\end{frame}

\section{User Datagram Protocol (UDP)}

\begin{frame}
  \frametitle{User Datagram Protocol (UDP)}

  \begin{block}{}
    \begin{itemize}
      \item Protocole en mode non connecté~;
      \item Les paquets en erreur ne sont pas réémis~;
      \item Idéal pour les flux temps réel~;
      \item Même notion de ports que pour TCP.
    \end{itemize}
  \end{block}
\end{frame}

\section{Network Adress Translation (NAT)}

\begin{frame}
  \frametitle{Network Adress Translation (NAT)}

  \begin{block}{}
    \begin{itemize}
      \item Face à la pénurie d'adresses IPv4 et avant la mise en place d'IPv6,
      besoin d'une solution pour pouvoir rajouter des machines~;
      \item Principe du NAT~:
      \begin{itemize}
        \item Réseau privé sur lequel est connecté un certain nombre de machines~;
        \item Une passerelle avec 2 interfaces réseau, une sur le réseau privé et
        une avec une IP publique, connectée à Internet~;
        \item Les requêtes des machines internes sont vues de l'extérieur comme
        venant de la passerelle~;
        \item Lorsque la passerelle reçoit une réponse, elle s'occupe de la
        rediriger vers la bonne machine.
      \end{itemize}
    \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Au dessus du niveau 4...}

\begin{frame}
  \frametitle{Au dessus du niveau 4...}

  \begin{block}{}
    \begin{itemize}
      \item De nombreux protocoles~;
      \item DNS~: Domain Name System. Correspondance IP $\leftrightarrow$ adresse
      compréhensible~;
      \item DHCP : Dynamic Host Configuration Protocol. Permet de configurer un
      hôte automatiquement~;
      \item SNMP : Simple Network Management Protocol. Permet de gérer du matériel
      à distance.
    \end{itemize}
  \end{block}
\end{frame}

\end{document}
