summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <syn@sceen.net>2010-06-04 23:24:17 +0000
committerRichard Braun <syn@sceen.net>2010-06-04 23:24:17 +0000
commit89a610e8892b7d7b3ed90a75a9941f8de090020a (patch)
tree491b4ccc487d248c12ab42334d615c809393d32b
parent65e3ff4d0da6734cc3f5986eb2420c98e0d4ab09 (diff)
Applied long forgotten patch.HEADmaster
-rw-r--r--doc/presentation/tnt.tex145
1 files changed, 145 insertions, 0 deletions
diff --git a/doc/presentation/tnt.tex b/doc/presentation/tnt.tex
index 8b1e7bc..e39528d 100644
--- a/doc/presentation/tnt.tex
+++ b/doc/presentation/tnt.tex
@@ -83,6 +83,21 @@
\section{Introduction}
+\subsection{TCP}
+
+\begin{frame}[fragile]
+\frametitle{TCP}
+\begin{itemize}
+\item Protocole de transport standardisé (RFC 793)
+\item Permet aux applications d'un système de transférer des données de
+manière fiable sur de grands réseaux
+\item Implémente le concept de flux réseau au dessus d'équipements basés sur la
+commutation de paquets
+\item Sert de mécanisme d'interopérabilité entre des systèmes fondamentalement
+différents
+\end{itemize}
+\end{frame}
+
\section{Architecture}
\begin{frame}[fragile]
@@ -249,10 +264,140 @@ Composition d'un message :
\end{figure}
\end{frame}
+\subsection{libtnt}
+
+\begin{frame}[fragile]
+\frametitle{libtnt}
+\begin{itemize}
+\item Bibliothèque de communication avec {\it tntd} côté client
+\item Utilise {\it libetp} pour effectuer des RPC ({\it Remote Procedure Call})
+\item Chaque appel fourni à l'application cliente encapsule les paramètres dans
+un message ETP envoyé au serveur, puis attend une réponse (protocole synchrone)
+\item Gestion d'erreur fixant la valeur d'errno
+\end{itemize}
+\end{frame}
+
\section{Mécanismes implémentés}
+\subsection{Établissement de connexion}
+
+\begin{frame}[fragile]
+\frametitle{Établissement de connexion}
+\begin{itemize}
+\item Poignée de main SYN - SYN/ACK - ACK classique
+\item Génération des numéros de séquence initiaux (ISN) aléatoire
+\item Mise en attente des connexions entrantes jusqu'à acceptation par
+une application serveur
+\item Prise en charge de l'option MSS, calcul du MSS en fonction du MTU
+de l'interface de sortie, et négociation de la plus petite valeur
+\item Gestion d'erreur lorsqu'un port de destination est fermé ou ne répond pas
+\end{itemize}
+\end{frame}
+
+\subsection{Transferts de données}
+
+\begin{frame}[fragile]
+\frametitle{Transferts de données}
+\begin{itemize}
+\item Gestion de l'envoi et de la réception de données sur une même socket
+\item Vérification et mise à jour des numéros de séquence et d'acquittement
+\item Support de la retransmission de paquets non acquittés
+\item Rejet des paquets dupliqués ou ne faisant pas partie de la session
+\item Prise en charge de la fenêtre de réception
+\item Segmentation des données selon le MSS négocié
+\end{itemize}
+\end{frame}
+
+\subsection{Éléments secondaires}
+
+\begin{frame}[fragile]
+\frametitle{Éléments secondaires}
+\begin{itemize}
+\item Calcul optimisé du checksum (calcul sur 32 bits et repli sur 16 bits
+uniquement à la fin du calcul)
+\item Portabilité (le serveur convertit les octets des entiers dans l'ordre
+du réseau, et conserve un maximum d'entier en mémoire dans cet ordre pour
+éviter les conversions inutiles)
+\end{itemize}
+\end{frame}
+
\section{Exploitation}
+\begin{frame}[fragile]
+\frametitle{Démarrage du serveur}
+Lancement du serveur {\it tntd} (en root) :
+\begin{verbatim}
+# ./tntd
+tntd: main(): TNT v0.1 starting...
+tntd: device_init(): device registered: lo, addr = 0x7f000001
+tntd: device_init(): device registered: eth0, addr = 0xa00000b
+tntd: main(): daemon ready
+tntd: rpc_reaper(): RPC reaper thread running...
+tntd: rpc_server(): RPC server thread running...
+tntd: gc_run(): garbage collector thread running...
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Démarrage d'une application serveur}
+\begin{verbatim}
+$ ./tnt_nc -l 10.0.0.11 1234
+creating socket...
+socket created, sd = 0
+binding socket to 0xa00000b:1234...
+socket bound
+setting socket to server mode...
+socket set to server mode
+accepting on socket...
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Démarrage d'une application cliente}
+\begin{verbatim}
+$ ./tnt_nc 10.0.0.11 4321 10.0.0.12 1234
+creating socket...
+socket created, sd = 1
+binding socket to 0xa00000b:4321...
+socket bound
+connecting to 0xa00000c:1234...
+connected to server
+enter "quit" to close the connection
+waiting input from user...
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{État du serveur}
+{\footnotesize
+\begin{verbatim}
+$ ./tnt_netstat
+Dsc RefCnt Recv-Q Send-Q Local Address Foreign Address State
+0 2 0 0 10.0.0.11:1234 0.0.0.0:* LISTEN
+1 3 0 0 10.0.0.11:1234 10.0.0.12:4321 ESTABLISHED
+
+$ ./tnt_netstat
+Dsc RefCnt Recv-Q Send-Q Local Address Foreign Address State
+0 2 0 0 10.0.0.12:4321 10.0.0.11:1234 ESTABLISHED
+\end{verbatim}
+}
+\end{frame}
+
\section{Conclusion}
+\begin{frame}[fragile]
+\frametitle{Conclusion}
+\begin{itemize}
+\item TNT est une implémentation partielle mais fonctionnelle de TCP
+\item Ce projet fut l'occasion de s'intéresser plus en profondeur à un
+élément important des réseaux modernes
+\item Des critères comme les performances et la sécurité ont été
+pris en compte lors de la conception et l'implémentation
+\item L'utilisation de l'{\it extreme programming} comme méthode de travail
+a permis une séparation nette des efforts par groupe tout en impliquant que
+les membres de l'équipe aient à tout moment une vue d'ensemble générale de
+l'état du projet
+\end{itemize}
+\end{frame}
+
\end{document}