First commit

This commit is contained in:
Yorick Barbanneau 2018-10-12 23:06:04 +02:00
commit 5c269302ed
59 changed files with 5613 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
public/

51
README.md Normal file
View file

@ -0,0 +1,51 @@
Notes de cours et TD machines
-----------------------------
Dépôt git pour la construction d'un sitre statique avec
[Hugo](https://gohugo.io) reprenant l'ensemble de mes notres de cours et TM
machine mises au propre (J'ai beaucoup de retard...)
Je rajouterai plus tard un `makefile` pour la construction de fichiers PDF avec
[pandoc](https://pandoc.org/)
## Construction du site
### Installer le thème
Pour que la construction du site fonctionne, il faut installer le thème visuer
choisi (ici er). Il est présent sous la forme d'un `submodule` git au'il faut
initialiser (dans le répertoire racine du dépôt).
```shell
git submodule init && git submodule update
```
### Version locale du site
Pour construite le site, il faut au préalable installer hugo, sur Archlinux :
```shell
# pacman -S hugo
```
Pour activer le serveur web intégré à Hugo, il suffit de lancer la commande
(dans le répertoire racine du dépôt) :
```shell
$ hugo server -D --disableFastRender -v
```
Il est possible de rajouter l'option `--debug` afin d'afficher plus
d'information sur la sortie standard. Une fois ce mode activé, il suffit
d'ouvrir son navigateur er d'aller à l'adresse *http://localhost:1313*.
## Site en ligne
Le site n'est pas encore accessible en ligne, un jour peut-être...
## Bugs
C'est la première fois que j'utilise un générateur de site statique, le
focntionnement du site n'est donc pas optimal. Les pages **tags** et
**catégories** ne fonctionnent pas (pages blanches) pour une raison encore
mystérieuse.

6
archetypes/default.md Normal file
View file

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

25
config.toml Normal file
View file

@ -0,0 +1,25 @@
baseURL = "https://lpro.epha.se"
languageCode = "fr"
defaultContentLanguage = "fr"
title = "Licence pro ADSILLH - Cours et TD"
pygmentsCodeFences = true
pygmentsUseClasses = true
theme = "mainroad"
rssLimit = 10
paginate = 10
[taxonomies]
category = "categories"
tag = "tags"
[Params]
toc = true
post_navigation = true
postSections = ["reseau", "progsys", "installations", "bdd"]
[Params.sidebar]
home = "right" # Configure layout for home page
list = "left" # Configure layout for list pages
single = false # Configure layout for single pages
# Enable widgets in given order
widgets = ["search", "categories", "taglist"]

View file

@ -0,0 +1,43 @@
CREATE SCHEMA Bibliotheque;
SET search_path TO Bibliotheque, public;
CREATE TYPE Bibliotheque.Sexe AS ENUM ('F', 'M');
CREATE TYPE Bibliotheque.Etat AS ENUM ('Neuf', 'Bon', 'Use');
CREATE TABLE Bibliotheque.Lecteur (
num_lecteur serial NOT NULL,
nom text NOT NULL,
sexe Bibliotheque.Sexe NOT NULL,
-- age devient date de naissance
naissance date NOT NULL,
ville text NOT NULL,
-- clefs candidates
PRIMARY KEY (num_lecteur)
);
CREATE TABLE Bibliotheque.Livre (
isbn integer NOT NULL,
titre text NOT NULL,
auteur text NOT NULL,
editeur text NOT NULL,
annee interval YEAR NOT NULL,
-- clefs candidates
PRIMARY KEY (isbn)
);
CREATE TABLE Bibliotheque.Exemplaire (
num_exemplaire serial NOT NULL,
isbn integer NOT NULL,
date_achat date NOT NULL,
etat Bibliotheque.Etat NOT NULL,
-- clefs candidates
PRIMARY KEY (num_exemplaire),
-- Clefs étrangères
FOREIGN KEY (isbn) REFERENCES Bibliotheque.Livre(isbn)
);
CREATE TABLE Bibliotheque.Emprunt (
num_exemplaire serial NOT NULL,
num_lecteur serial NOT NULL,
date_emprunt date NOT NULL,
-- clefs candidates
PRIMARY KEY (num_exemplaire, num_lecteur),
-- Clefs étrangères
FOREIGN KEY (num_exemplaire) REFERENCES Bibliotheque.Exemplaire(num_exemplaire),
FOREIGN KEY (num_lecteur) REFERENCES Bibliotheque.Lecteur(num_lecteur)
);

Binary file not shown.

View file

@ -0,0 +1,41 @@
-- schema de Base de données pour la gestion d'une compagnie aérienne.
CREATE SCHEMA aerocremi;
SET search_path TO aerocremi, public;
CREATE TABLE aerocremi.avion(
-- Je pars du principe que le numéro de série est donné par le fabricant
-- de l'avion et qu'il ne contient que des chiffres. Il ne peut donc pas
-- être du type serial.
num_serie integer NOT NULL,
type text NOT NULL,
capacite integer NOT NULL,
PRIMARY KEY (num_serie)
);
CREATE TABLE aerocremi.pilote(
matricule serial NOT NULL,
nom text NOT_NULL,
anciennete date,
PRIMARY KEY (matricule)
);
CREATE TABLE aerocremi.vol(
num_vol text NOT NULL,
-- Je part du principe qu'il faut gérer les times zones sur les horaires
-- de vol (logique pour une compagnie aérienne)
-- https://www.postgresql.org/docs/current/static/datatype-datetime.html
heure_depart time with time zone NOT NULL,
heure_arrivee time with time zone NOT NULL,
PRIMARY_KEY (num_vol)
);
CREATE TABLE aerocremi.planning(
num_planning serial NOT NULL,
num_vol text NOT NULL,
matricule integer NOT NULL,
date_vol date NOT NULL
PRIMARY KEY (num_planning),
FOREIGN KEY num_vol REFERENCES aerocremi.vol(num_vol),
FOREIGN KEY num_avion REFERENCES aerocremi.avion(num_serie),
FOREIGN KEY matricule REFERENCES aecrocremi.pilote(matricule)
);

Binary file not shown.

View file

@ -0,0 +1,31 @@
---
title : "Base de données : Introduction"
date: 2018-09-10
categories: ["Base de données", "Cours"]
---
Lors de ce cours, nous allons créer une application web de gestion d'un hôtel :
gestion des réservation et des factures.
## Qu'est ce qu'une application web
C'est une application de type client <> serveur disponible via un navigateur
web. Elle est conçue à partir d'un ensemble de sources (au sens code source)
hétérogène : HTML, CSS et javascript côté client; PHP, Python perl etc
côté serveur.
On compte 3 types d'applications web :
- **statique** (un site web basique)
- dynamique **côté serveur**
- dynamique *côté client et serveur**
## Processus de création d'une base de données
1- données du "monde réel"
2- réel perçu
3- données et contraintes
4- modèle relationnel
5- implémentation dans un SGBDR *(Système de Gestion de Base de Données
Relationnelles)

View file

@ -0,0 +1,113 @@
---
title: "Base de données : définitions"
date: 2018-09-17
modify: 2018-09-24
categories: ["Base de données", "cours"]
---
## Le domaine
Il représente l'ensemble des valeurs autorisées pour une information. Cette
notion est très proche [de domaine de définition](w_dom-def) en mathématiques.
On le décompose en deux grandes familles.:
- **élémentaire** : les types de base comme les entiers, réels, chaines de
caractères mais aussi les intervales ou les listes de valeurs
- **structuré** : des types de valeurs plus structurée comme pas exemple la
notion de point définit pat une composant `X` et `Y`.
[w_dom-def]:https://fr.wikipedia.org/wiki/Ensemble_de_d%C3%A9finition
## Le produit cartésien
Le produit cartésien des domaines $D_{1} D_{2}$ représente l'ensemble
des valeurs contenue dans $D_{1}$ et $D_{2}$, il est noté
$$
D_{1} \times D_{2}
$$
## La relation
Elle représente un sousrensemble r du produit carthésien. Elle est caractérisée
par un nom.
## Tuple ou n-tuple
Il représente une ligne dans une relation
## Attributs
Nom donné à un colonne. Il est composé d'un indentifiant et d'un domaine
## Schéma de relation
Il ets définis par un ensemble d'attributs U et un ensenble de contraintes. on
le note courrament R(U), R(U) décrit l'intention de la relation. La relation
(tableau + valeurs) définit une extention.
Une relation `r` est une instance finie d'un schema de relation notée `r:R(U)`,
exemple :
```
AlimentsPreferes(nom,type,origine,bio)
```
## La base de données
Un schéma de base de données et un ensemble de schemas de relation liés par des
dépendances référencielles (un type de contraines). Une base de données est
alors un ensemble de relations (extensions) associées au schéma et verifiamts
ses contraines.
## Le modèle relationnel
Il est définis en 1970 par *E. F. Codd* (IBM Research Lab) et se veut
indépendant de la representation physique des données. Il a une assise
mathématique forte ([algèbre relationnelle](w_algebre-r), [formes
normales](w_form-norm)).
[w_algebre-r]:https://fr.wikipedia.org/wiki/Alg%C3%A8bre_relationnelle
[w_form-norm]:https://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles)
### Objectifs généraux
- Éliminer les comportements anormaux lors des mises à jour des données.
- Éliminer les données redondantes.
- Meilleures compréhension des relationssémantiques entres les données.
### Buts
Éliminer les anomalies de la relation universelle (tous les attributs sur toutes
les colonnes) pour faciliter la manipulation des relation. En un mot normaliser
les relations.
### Méthode
Décomposer la relation universelle en sous-relations qui ne souffre pas des
anomalies de la relation universelle.
- conserve toutes les données
- conserve un minimum de contraintes
### Les types de contraintes
- sur les attributs : valeur nulle autorisées (ou non), valeur imposée ...
- sur les n-uplets (plusieurs valeurs) : l'exemple d'une bibliothèque, la date
de retour d'un livre doit être suppérieure à la date d'emprunt.
- sur les relations : clé, cardinalité
- sur la base de données : clé étrangères
- sur l'évolution temporelle de la base de données : exemple de l'état civil,
on passe, dans l'ordre de célibataire à marié puis divorcé. On ne peut pas
passer de célibataire à divorcé.
# La notion de clé
Une clé doit permettre de trouver un tuple dans une relation avec seulement une
partie des attributs, dit plus simplement, identifier sans équivoque un
enregistrement.
Du point de vue mathématique, il ne doit pas avoir deux fois le même éléments
dans un ensemble : deux tuples d'une même relation ne peuvent être égaux.
Soit un ensemble $U\{A_{1}, A_{2}, ..., A_{n}\}$

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,263 @@
---
title: Les annuaires LDAP
date: 2018-09-06
tags: ["annuaire", "LDAP", "LDIG"]
categories: ["Installations", "Cours"]
---
**LDAP** pour *Lightweight Directory Access Protocol* est à l'origine un
protocole utilisé pour la modification et la consultation de services
d'annuaire. Il a évolué pour devenir une norme pour les services d'annuaire
incluant un modèle de données, un modèle de nommage, un modèle fonctionnel, un
modèle de sécurité et un modèle de réplication.
Dérivé du protocole x500, réputé "usine à gaz" complexe à mettre en place et
peu performant, LDAP se veux, comme son nom l'indique plus léger, il est
standardisé par l'IETF. La version actuelle est la LDAPv3 définie dans plusieurs
RFC en commençant par la RFC 4510
# Les modèles du LDAPv3
Ils sont au nombre de 4 :
- **le modèle d'information** qui reprend entres autres le schéma, les OID, les
attributs, les classes d'objets
- **le modèle de désignation** qui s'attache au nommage des entrées, à la
hiérarchisation des données, au lien LDAP - DNS
- **le modèle de services** qui décrit les services offerts par le service
d'annuaire
- **le modèle de sécurité** qui défini l'authentification, la confidentialité,
l'intégrité et la gestion des habilitations.
# Le modèle d'information
Il décrit principalement le schéma de l'annuaire : les *attributs*, les
*syntaxes*, les *classes d'objets* et les *règles de recherches*.
## les attributs
Se sont les éléments de base du schéma décrit comme suit :
```
attributetype (
<OID> # identifiant OID unique
NAME <nom> # nom de l'attribut
DESC <desc> # description de l'attribut
OBSOLETE # indique aue l'attribut est obsolète
SUP <classe> # classe parente de l'attribut
EQUALITY <règle> # nom de la règle de recherche
ORDERING <règle> # nom de la règle d'ordenancement
SUBSTR <règle> # nom de la règle de recherche dabs une sous-chaine
# de caractère
SYNTAX <syntax> # syntaxe de l'attribut
SINGLE-VALUE # indique d'une seule valeur est attendue
COLLECTIVE # indique que le schéma est collectif
NO-USER-MODIFICATION # indique aue l'utilisateur ne peut modifier l'attribut
USAGE # usage de l'attribut.
)
```
Voici un exemple concret :
```
attributetype (
2.5.4.16
NAME 'postalAddress'
DESC 'RFC2256: postal address'
EQUALITY caseIgnoreListMatch
SUBSTR caseIgnoreListSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41
)
```
## Les attributs
On distingue les **attributs utilisateurs** qui caractérisent l'objet manipulé
par les utilisateurs des **attributs opérationnels** manipulés seulement par le
serveur afin de modifier les données.
### Les OID - Object IDentifiers
Ce sont des identifiants universels, représentés par une suite d'entiers séparés
par des points. Il sont organisés sous forme hiérarchique ainsi seul l'organisme
1.2.3 peur donner la signification de 1.2.3.4.
Leur objectif est d'assurer l'interopérabilité entre différents logiciels et son
utilisés dans le LDAP, mais aussi le SNMP.
Voir la [liste des OID](https://ldap.com/ldap-oid-reference-guide/)(en). Il est
possible d'utiliser [ce site](http://oid-info.com/get/)(en) pour faire une
recherche par OID.
## Les syntaxes
Elles permettent d'indiquer la règle à suivre pour enseigner l'attribut. Si, par
exemple, l'attribut suit une syntaxe dn et l'utilisateur saisit une chaîne de
caractère lambda, l'attribut ne pourra être renseigné.
## Les classes d'objets
Ils représentent une collection d'attributs . On peut y définir, par exemple, ce
qui est obligatoire ou facultatif. Voici une description du format :
```
ObjectClassDescription (
<OID> # OID de la classe
NAME <nom> # nom de la classe
DESC <desc> # description de la classe
OBSOLETE # indique que la classe est obsolete
SUP <classe> # indique la classe parente
ABSTRACT # Les 3 éléments suivant sont au choix ( voir l'explication
STUCTURAL # ci-dessous
AUXILIARY
MUST () # Liste des attributs obligatoires
MAY () # liste des attributs facultatifs
)
```
Voici un exemple concret avec les classes `person` et `organisationnalPerson`:
```
( 2.5.6.6
NAME 'person'
SUP top
STRUCTURAL
MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $
description )
)
( 2.5.6.7
NAME 'organizationalPerson'
SUP person
STRUCTURAL
MAY ( title $ x121Address $ registeredAddress $
destinationIndicator $ preferredDeliveryMethod $
telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationaliSDNNumber $
facsimileTelephoneNumber $ street $ postOfficeBox $
postalCode $ postalAddress $
physicalDeliveryOfficeName $ ou $ st $ l )
)
```
### Les types de classes d`objets
Il en existe trois :
- **abstraites** : ce sont des classe de plus haut niveau non instanciable mais
pouvant être dérivées. la classe d'objets la plus haute étant `top` dont
toute classe dérive
- **structurelles** : sont des classes instanciables.
- **auxiliaires** : sont des classes permettant d'ajouter des attributs
facultatifs à des classes structurelles
Voir diaporama du cours page 41.
## Les règles de recherche
Elles permettent aux serveur de comparer les valeurs des attributs avec celles
demandées dans les requêtes.
L'exemple ci-dessous présente une règle de recherche sur un entier :
```
(
2.5.13.14
NAME
'integerMatch'
1.3.6.1.4.1.1466.115.121.1.27 )
```
# Le modèle de désignation
Afin de pouvoir identifier tous les objets dans l'annuaire, il est important de
définir des règles de nommage communes a tous le service d'annuaire. deux
notions importante apparaissent :
- le **RDN** pour *Relative Distinguished Name* est un nom unique seulement
dans le niveau considéré.
- le **DN** pour *Distinguished Name** est un nom unique identifiant un objets
dans l'arbre. Il est la somme de tous les RDN
Pour un nommage cohérent, il est important de définir des règle commune de
nommage pour s'assurer de la cohérence des RND. Ceci permet de résoudre les
problèmes d'homonymie.
Exemple :
```
RDN = CN=DURAND Yves
CN=DURAND Yves,L=Paris,L=Ile de France,C=fr
```
# L'organisation hiérarchique
Un annuaire se présente sous la forme d'un arbre (DIT pour *Directory
information Tree*).
Il peut refléter l'organisation hiérarchique de la
structure ou son implantation géographique, voir même mixer les deux.
Il peut aussi représenter l'organisation de l'entreprise sous forme sémantique
en groupant les informations qui ont un même sens (personnes, groupes,
applications et.). Cette configuration facilite l'administration des droits
d'accès. Par exemple en affectant les droits d'écriture au DRH seulement sur
`ou=Personnes`
# Le modèle de services
LDAP est basé sur un modèle **Client <> Serveur**. Le client transmet une
requête décrivant une ou plusieurs actions à réaliser sur l'annuaire. Le serveur
est lui responsable de sa réalisation. Le serveur renvoi alors le résultat ou
une ou plusieurs références à d'autres serveurs susceptibles d'accéder à la
demande du client.
Toutes les opération sont encapsulées dans une envelope commune : **le message
LDAP** *(LDAPMEssage)*
Chaque requête possède son propre identifiant Il est possible de réutiliser cet
identifiant si :
- la requête n'a pas été abandonnée
- elle n'ai pas eu de réponse à l'instant donné.
Quelle que soit la requête, la réponse sera donné sous la forme d'un message
*LDAPResult*
# Le modèle de sécurité
L'accès à l'annuaire LDAP peut se faire :
- en accès anonyme
- par authentification via un mot de passe
- par authentification par mot de passe via une liaison chiffrée TLS
- par authentification forte via certificats
- par authentification forte via certificats et liaison chiffrée TLS
# Le format LDIF
Le **LDIF** *LDAP Data Interchange Format* est un format de fichier de type
texte (ASCII) utilisé pour la représentation des données issues d'un annuaire
LDAP ou d'opération sur les données (mais pas les deux à la fois).
Il est donc utilisé pour faciliter les opérations d'importation et/ou
d'exportation massive d'informations. Il contient une série d'enregistrements
séparés par des séparateur de lignes. Un enregistrement décrit un enregistrement
ou une modification.
Exemple :
```ldif
dn: dmdName=Devices,ou=iut_mont-de-marsan,dc=universite, dc=education,dc=gouv,dc=fr
dmdName: Devices
objectClass: dmd
objectClass: top
dn: dmdName=Applications,ou=iut_mont-de-marsan,dc=universite,dc=education,dc=gouv,dc=fr
dmdName: Applications
objectClass: dmd
objectClass: top
```
Voir le format
[LDIF](https://fr.wikipedia.org/wiki/LDAP_Data_Interchange_Format) sur
Wikipedia.

View file

@ -0,0 +1,198 @@
---
title: TDM1 OpenLDAP - notes d'installation
date: 2018-09-13
lastmod: 2018-08-27
category: Installations
tags: ['OpenLDAP', 'Apache Directory Studio', 'PAM']
---
Le but de ce TD Machine est d'installer OpenLDAP sur une machine virtuelle, de
configurer un DIT en `dc=u-bordeaux,dc=fr`, de gérer les personnes, matériels et
fonctions et enfin de gérer l'authentification par le LDAP.
# Installation d'openLDAP sur Debian
Lors de l'installation, j'ai choisi de nommer la machine `openldap` et le
`domaine u-bordeaux.fr`, ainsi lors du paramétrage de mon service, il sera
accessible directement sur `openldap.u-bordeaux.fr`
Sur une Debian 9 il suffit d'installer les paquets `slapd` et `ldap-utils` avec
la commande :
```shell
apt install slapd ldap-utils
```
Il est possible de définir simplement le domaine et le mot de passe de
l'administrateur du serveur LDAP en reconfigurant le paquet avec la commande :
```shell
dpkg-reconfigure -pHIGH slapd
```
Il est aussi possible de le faire directement par l'intégration de fichiers LDIF
dans l'annuaire.
# Intégration des personnes, fonctions et matériels
Nous allons créer 3 objets de type `dmd` *directory management domain* reprenant
les trois catégories demandées. Lors de la création de mon arbre, j'ai cependant
choisi cd créer des `ou` *organizational unit* mais c'est sémantiquement pas
juste (ce serait valable pour le service marketing ou le site de Pessac par
example).
À partir du moment ou le serveur LDAP est lancé, fonctionnel et l'administrateur
créé, il est tout à fait possible de lancer cette étape depuis un logiciel comme
Apache Directory studio ou phpldapmyadmin. Mais le but ici était de le faire
depuis un fichier LDIF.
```LDIF
dn: dmdName=users,dc=u-bordeaux,dc=fr
dmdName: users
objectClass: dMD
dn: dmdName=roles,dc=u-bordeaux,dc=fr
dmdName: fonctions
objectClass: dMD
dn: dmdName=machines,dc=u-bordeaux,dc=fr
dmdName: machines
objectClass: dMD
```
Il suffit d'intégrer ce fichier à l'annuaire avec la commande `ldapadd` :
```shell
ldapadd -H ldap://openldap.u-bordeaux.fr -D "cn=admin,dc=u-bordeaux,dc=fr" \
-W -f tree.ldif
```
- `-H <uri>` : URI d'accès au serveur LDAP
- `-D <dn>` : dn du compte autorisé pour l'ajout (ici l'admin)
- `-W` : demande le mot de passe
- `-f <path>` : fichier LDIF contenant les entrées à ajouter.
## Effectuer une recherche dans l'annuaire
La recherche dans l'annuaire est importante dans la mesure ou elle va nous
permettre de vérifier au fur et à mesure les données que l'on y ajoute.
```shell
ldapsearch -x -W -D "cn=admin,dc=u-bordeaux,dc=fr" -b "dc=u-bordeaux,dc=fr" \
"(objectClass=dMD)"
```
- `-W` : demande le mot de passe
- `-D` : dn de l'admiistrateur du serveur
- `-b` : chemin ou effectuer la rechercheo
- `-x` : uriliser l'anthentification simple plutôt que SASL **déconseillé**
- `(*)` : recherche
## Ajouter un mot de passe
```shell
ldappasswd -H "ldap://ldapsrv.u-bordeaux.fr" -D "cn=admin,dc=u-bordeaux,dc=fr" \
-W "uid=yorick.barbanneau,dmdName=users,dc=u-bordeaux,dc=fr"
```
- `-H` : host du serveur LDAP à contacter
Les autres options sont similaires aux comances ci-dessus.
# Apache Directory Studio
C'est un logiciel permettant la gestion complète d'un annuaire LDAP. Écrit en
java, c'est une application open-source sous licence Apache 2.
Pour l'installer, il faut disposer d'une interface graphique et d'un
environnement d'exécution Java. Pour le TD, j'ai donc installé le bureau `Lxde` et
`openjdk-8-jre`.
```shell
apt install lxde openjdk-8-jre
```
j'ai ensuite téléchargé la dernière version d'Apache Directory Studio sur [le
site Apache](https://directory.apache.org/studio/download/download-linux.html).
Une fois le logiciel téléchargé et décompressé, je l'ai lancé puis ajoute la
connexion au serveur LDAP dans *LDAP > nouvelle connexion*.
J'ai créé un groupe enfant de `dmdName=fonction,dc=u-bordeaux,dc=fr` avec comme `cn`
users et un `gidNumber` de 2000
J'ai ensuite créé un utilisateur enfant de `dmdName=personnes,dc=u-bordeaux,dc=fr`
avec comme classe `OrganizationalPerson` et `PosixAccount`. J'ai fait choisi
un `uidMumber` suffisamment haut pour ne pas gêner ceux du système (2000)
On pourrait le modéliser dans le fichier LDIF suivant (à Corriger):
```LDIF
dn: uid=yorick.barbanneau,dmdName=users,dc=u-bordeaux,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: yorick.barbanneau
sn: Barbanneau
cn: Yorick Barbanneau
userpassword: {SSHA}......
uidnumber: 2000
gidnumber: 2000
homedirectory: /home/yorick.barbanneau
loginshell: /bin/bash
```
# Authentification sur la machine avec les comptes LDAP
L'authentification machine depuis les données de l'annuaire nécessite
l'installation et la configuration de deux paquets Debian :
```shell
apt install libpam-ldap libnss-ldap
```
L'installation entraine ici automatiquement le lancement de la configuration de
certains éléments via debconf. il reste cependant des choses à configurer.
Tout d'abord le fichier `/etc/nsswitch.conf` :
```
passwd: files ldap
group: files ldap
shadow: files ldap
```
Ensuite il faut modifier le fichier `/etc/libnss-ldap.conf` et y modifier les champs
`base` et `uri` en fonction de notre serveur
```
uri ldap://openldap.u-bordeaux.fr
base dc=u-bordeaux,dc=fr
```
et redémarrer le service nscd :
```shell
systemctl restart nscd
```
Enfin, il reste à configurer PAM afin qu'il créé le dossier utilisateur s'il
n'existe pas. Dans le fichier `/etc/pam.d/common-account` rajouter la ligne :
```
session required pam_mkhomedir.so skel=/etc/skel umask=0022
```
Pour vérifier que tout fonctionne, lancer `getent passwd`, les utilisateurs
venant du LDAP devraient apparaître dans la liste obtenue.
# Voir aussi
- [LDAP PAM sur la documentation Debian](https://wiki.debian.org/LDAP/PAM)
- [LDAP Authentication (Archlinux)](https://wiki.archlinux.org/index.php/LDAP_authentication)
- [SSSD](https://docs.pagure.org/SSSD.sssd/)
## SSSD
C'est une méthode d'authentification couplée à PAM qui semble intéressante : elle
supporte la connexion même en mode hors-ligne grâce à un cache.

Binary file not shown.

View file

@ -0,0 +1,106 @@
---
title: "Programmation Système : Appels systèmes"
date: 2018-09-04
tags: ["programmation", "système", "appels système"]
categories: ["Programmation système", "Cours"]
---
# Qu'est ce que c'est?
C'est créer des programmes plutôt bas niveau qui s'interfacent avec le noyau
et/ou les librairies du système. Il faut donc une bonne connaissance du
fonctionnement du système et être en mesure d'identifier d'éventuels problèmes
de performance.
# Le système d'exploitation
C'est un ensemble de logiciels fournissant les services nécessaires à
l'exécution de programmes pour l'utilisateur final :
- exécution de programmes
- accès aux matériels
- accès au(x) système(s) de fichier(s)
- accès mémoire
- accès réseau
## POSIX et IEE
La norme POSIX, standard IEEE, définie les interfaces utilisateurs et
logiciels, la ligne de commande standard et son interface de scripts, les
entrées / sorties de base. les attributs de fichiers (permissions)
La norme SUS *Single Unie Specification* est une norme plus récente et moins
contraignante. elle est basée sur les travaux de l'IEEE et de l'Open Group.
[SUS][https://fr.wikipedia.org/wiki/Single_UNIX_Specification] et
[POSIX][https://fr.wikipedia.org/wiki/POSIX] sur Wikipedia
## LSB
LSB ou *Linux Standard Base* définie l'agencement général du système GNU / Linux
: librairies standard, commandes POSIX étendues, hiérarchie du système de
fichiers, les runlevels etc.
[LSB][https://fr.wikipedia.org/wiki/Linux_Standard_Base] sur Wikipedia.
## Architecture des systèmes "modernes"
Ils sont organisés en couches un peu à la façon du modèle OSI :
1. le matériel
2. l'assemblage (assembleur)
3. système (applications système)
4. Application
N. Les applications / machines virtuelles (capables de traverser les couches
pour atteindre le matériel)
Plus la couche est basse, plus la programmation est efficace du point de vue
des performances mais plus difficile est la portabilité (un code assembleurs et
moins portable qu'un script Python)
Les systèmes modernes possèdent deux espaces d'exécutions :
- l'espace utilisateur `user-space` ou `user-land`
- l'espace noyau `kernel-space` ou `kernel-land`
# La libc
La `libc` est la librairie standard des système GNU/ Linux, elle implémente
les fonctionnalités de base pour la plupart des programmes. C'est une API pour
accéder aux services du noyau :
- entrées /sorties
- allocation fine de la mémoire
- gestion du temps
- encapsulation des appels noyau et en dehors du noyau (user-land)
# Programme et processus
Un programme est un fichier exécutable stocké sur un disque (mémoire morte). Un
processus et un programme mais en mémoire (et donc en cours d'exécution). Un
processus est défini par son identifiant (PID) et accède à un espace d'adressage
en mémoire vive (pour la pile, les données ...)
# Descripteurs de fichiers
Un descripteur de fichier pour *file descriptor* (abrégé *fd*) est un entier
positif affecté par le noyau pour référencer un fichier utilisé par un
processus. Il est bon de préciser que dans la philosophie Unix, tout est
fichier, le *fd* se retrouve donc pour les fichiers, sockets, tubes,
périphériques etc.
# Les appels système
Ils permettent de demander au noyau de réaliser une action précise et se font au
travers de la libc. Voici comment cela se passe :
- Préparer les arguments en les positionnant dans des registres spécifiques
pour le noyau
- placer le numéro d'appel système dans un registre spécifique invoquer
- l'instruction `trap` qui bascule le processeur en mode noyau
Le noyau invoque `system_call` après validation des arguments et retourne le
résultat à la libc :
- en cas d'erreur la libc invoque `errno` avec en résultat le code erreur
- sinon le résultat

Binary file not shown.

View file

@ -0,0 +1,251 @@
---
title: "Les fichiers"
date: 2018-09-11
categories: ["Programmation système", "Cours"]
tags: ["fichiers", "descripteurs", "c"]
---
Dans la philosophie Unix, tout est fichiers, les entrees sorties sont donc
symbolisées par des manipulations de fichiers. Celles-ci se font par le biais de
**descripteurs de fichiers**, il représente le point d'entrée d'un fichier pout
un processus.
Pour chaque programme en cours d'exécution, le noyau maintient une table des
fichiers ouverts. Cette table contient entres autres le descripteur de fihers
(un nombre entier non signé) et la **position du curseur** ( *file offset* ).
Le curseur est la position où aura lieu la prochaine opération (lecture /
écriture). Cette position est exprimée en octets.
Il existe cependant 3 types particuliers de descripteur de fichiers :
- l'entrée standard (0 ou `STDIN_FILENO`)
- la sortie standard (1 ou `STDOUT_FILENO`)
- la sortie d'erreur (2 ou `STDERR_FILENO`)
## Les appels système de base
### open()
```c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
```
Cet appel système ouvre le fichier dont le chemin est `pathname` et retourne un
descripteur de fichier. En vas de problème, la fonction `open()`retourne -1.
#### flag
`flag` est un masquage de bits permettant de spécifier le mode d'accès :
flag | utilisation
---------|------------
O RDONLY | Lecture seule
O WRONLY | Écriture seule
O RDWR | Lecture et écriture
O CREAT | Création du fichier s'il n'existe pas
O TRUNC | Troncature du fichier
... | ...
O APPEND | Écriture à la fin du fichier
#### mode
C'est aussi un masquage de bits définissant le node du fichier en vas de
création :
| mode | octal | utilisation |
|---------|-------|--------------------------------------------------------
| S_IRWXU | 00700 | Le propriétaire a le droit de lire, écrire, exécuter |
| S_IRUSR | 00400 | Lutilisateur a le droit de lire |
| S IWUSR | 00200 | L'utilisateur a le droit d'écrire |
| S IXUSR | 00100 | L'utilisateur a le droit d'exécuter |
| S_IRWXG | 00070 | Le groupe a le droit de lire, écrire, exécuter |
| S_IRGRP | 00040 | Le groupe a le droit de lire |
| S IWGRP | 00020 | Le groupe a le droit d'écrire |
| S IXGRP | 00010 | Le groupe a le droit d'exécuter |
| S_IRWXO | 00007 | Le propriétaire a le droit de lire, écrire, exécuter |
| S_IROTH | 00004 | Lutilisateur a le droit de lire |
| S IWOTH | 00002 | L'utilisateur a le droit d'écrire |
| S IXOTH | 00001 | L'utilisateur a le droit d'exécuter |
#### Exemple en C
```c
fd = open("test1.txt", O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
```
Ouvre un fichier `test.txt`, s'il n'existe pas il sera créé. Il est ouvert en
lecture - écritur seul le propriétaire a le droit de lire et d'écrire.
#### Exemple en Python
Il est possible de faire les même action en Python avec les modules `stat` et
`os`.
```python
import os, stat
f = os.open("test1.txt",
os.O_RDWR | os.O_CREAT | os.O_TRUNC,
stat.S_IRUSR | stat.S_IWUSR)
f = open("test1.txt", 'w+', 0o600) # umask issue
```
Ce programme réalise les mêmes actions que ci-dessus mais en Python
### read()
Cet appel système lit des données d'un fichiers
```c
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
```
Lit au plus `count` octets depuis le fichier référencé par le descripteur `fd`
et les stocke dans `*buff`. Renvoie 0 s'il n'y a plus d'octets à lire ou -1 si
la commande échoue
### write()
Écrits des données sur un fichier
```c
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
```
Lit au plus `count` octets depuis la zone mémoire depuis `*buf` et les écrits
dans le fichier référencé par `fd`. Renvoie le nombre d'octets écrits ou -1 si
la commande échoue. Le nombre d'octets écrits peut être inférieur à `count`
(plus de place disponible par exemple).
### close()
Ferme un fichier, rend libère le descripteur associé et les ressources associées
allouées par le noyau.
```c
#include <unistd.h>
int close(int fd);
```
Renvoie 0 en cas de réussite et -1 s'il échoue.
### Exemple de lecture-ecriture
### en c
```c
#include <unistd.h>
#include <stdlib.h>
#define BUFMAX 32
int main (int argc, char **argv) {
char buffer[BUFMAX];
int count;
count = read(STDIN_FILENO, buffer, BUFMAX);
if (count == -1) {
write(STDERR_FILENO, "Unable to read stdin\n", 21);
exit(EXIT_FAILURE);
}
write(STDOUT_FILENO, "Input data was: ", 16);
write(STDOUT_FILENO, buffer, count);
exit(EXIT_SUCCESS);
}
```
### en Python
```Python
#!/usr/bin/python3
import os, sys
def main():
#buf = sys.stdin.read() # Ctrl-D for EOF
try:
buf = input()
except EOFError:
buf = ''
except Exception as e:
sys.stderr.write("Unable to read stdin: %s", e)
sys.exit(os.EX_DATAERR)
sys.stdout.write("Input data was: %s" % (buf))
sys.exit(os.EX_OK)
main()
```
### lseek()
```c
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
```
Renvoie en octets depuis le début du fichier la nouvelle position du curseur.
Cet appel système modifie seulement la table de fichiers ouverts mais ne
provoque pas d'accès au système de fichiers.
### whence
position | utilisation
---------|------------
SEEK_SET | le curseur est placé à `offset` octets depuis le début du fichier
SEEK_CUP | le curseur est déplacé de `offset` depuis sa position courante
SEEK_END | le curseur est déplacé de `offset` octets après la fin de fichier
### fichiers à trou
Si l'on positionne le curseur après la fin du fichier puis une opération
d'écriture, on créé alors un **trou**. Les données à l'intérieur du trou
contiennent 0 pour notre fichier, mais ne prenne pas d'espace disque.
Ces **fichiers à trou** aussi appelés *sparse files* permettent d'utiliser le
système de fichier de manière plus efficace surtout lorsque le fichier est
majoritairement vide. Ils sont utilisés pour les bases de données, les images
disques, les fichiers journaux etc.
### Unlink ()
Détruit un nom dans le système de fichiers. Si ce nom était le dernier lien vers
un fichier et que celui-ci n'est ouvert dans aucun processus, il est effacé et
l'espace qu'il occupait est marqué comme disponible.
Si ce fichier et encore ouvert par un processus, il continu d'exister jusqu'à ce
que le dernier descripteur de fichier le référençant soit fermé.
```c
#include <unistd.h>
int unlink(const char *pathname);
```
## La librairie stdio
La librairie sdtio.h fourni par la librairie standard permet de manipuler les
fichiers avec des fonction de plus haut niveau.
Les fonction de cette librairie n'opèrent pas directement sur les descripteurs
de fichiers (notion spécifiques à Unix) mais sur des pointeur sur une structure
de type *FILE*. Elle contient entres autres :
- le descripteur de fichier
- un champ *flag* indiquant l'état du flux
- une mémoire tampon
- la position courante dans le tampon
Chaque appel système de gestion de fichiers a un équivalent dans `stdio`.
```c
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fd, const char *mode);
int fclose(FILE *stream);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
int fseek(FILE *stream, long offset, int whence);
int fflush(FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
```

View file

@ -0,0 +1,262 @@
---
title: "Les processus"
date: 2018-09-18
categories: ["Programmation système", "Cours"]
tags: ["processus", "programme", "c"]
---
Il ne faut pas confondre processus et programme, un processus étant une
instance chargée en mémoire et en cours d'exécution d'un programmme. Plusieurs
instance d'un programme peuvent s'exécuter en même temps.
À chaque processus est assicié un identidiant (PID) et un espace de stockage en
mémoire pou y stocker la pile, les données, le code etc. (espace d'adressage).
Un programme contient toutes les informations nécessaire à la création du
processus :
- un format binaire ELF (historiquement a.out, Coff)
- le point d'entrée de la première instruction
- les données
- les information de débogage
- les information sur les librairies partagées
Un processus est une entité abstraite connue du noyau aui lui alloue des
ressources pour son execution. Du point de vue du noyau un processus consiste en
:
- En mode **user**
- une portion d'espace mémoire
- le code du programme
- les variables auquelles le programme a accès
- em mode **kernel**
- Une structure de données de l'état du processus
- la table des fichiers ouverts
- la table de la mémoire allouée
- le répertoire courant
- la priorité
- le gestionnaire d'évènements (signaux, fin de programmes ...)
- les limites du processus
## le PID
Il est créé par le noyau et aussi utilisé dans l'espace utilisateur (`kill`,
`ps`, `nice`)
```c
#include <unistd.h>
pid_t getpid(void)
```
Renvoi le PID du processus appelant. Cette fonction est ouvent utilisée par des
routines qui créées des fichiers temporaires uniques.
`pid_t` est un type abstrait pouvant être transtypé en `int`, sa valeur maximale
est définie dans `/proc/sys/kernel/pid_max`
## Démarrage d'un programme en C
Un programme en C commence toujours par la fonction `main()` :
```c
int main (int argc, char **argv) {
}
```
- `argc` : entier, nombres d'arguments passés
- `**argv` : tableau de pointeurs, arguments passés
Linvocateur du programme (ex: le shell) exécute lappel système execvp et
utilise les arguments passés au programme comme paramètres.
### exemple
```shell
$ mycommand --color -l -s
argv = ["mycommand", "--color", "-l", "-s"]
argc = 4
```
on récupèrera les paramètres avec le code c suivant :
```c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
for (int i=0; i<argc; i++){
printf("Argument %i value %s",i, argv[i]);
}
}
```
La boucle aurait pu aussi être écrite comme suit :
```c
for(int i=0; argv[i] != NULL; i++){}
```
## Terminer un programme
Il y a deux façons de terminer un programme :
- **nomale** : par la fin du `main()`, un `exit()` : nettoyage de toutes les
ressources, appel de `close()` sur tous les descripteurs de fichiers etr
appel du getionnaire de sorties (*exit handlers*)
- **anormale** : par la réception d'un signal (kill par exemple)
Par conventionm un programme qui termine correctement renvoi 0, dinon il renvoi
un entier positif.
### atexit
```c
#include <unistd.h>
int atexit(void (*function)(void));
```
La fonction `atexit()` enregistre la fonction donnée pour que celle-ci soit
automatiquement appelée lorsque le programme se termine normalement avec exit(3)
ou lors de la fin de la fonction main. Les fonctions ainsi enregistrées sont
invoquées dans l'ordre inverse de leur enregistrement ; aucun argument n'est
transmis `atexit()` renvoie 0 en cas de succès et une valeur non nulle en cas
d'échec
## Mémoire allouée
La mémoire allouée à chaque processus est divisée en segments :
- **le segment texte**, en lecture seule contient les instructions en langage
machine (le binaire su programme au format *ELF*)
- **le segment des données initialisées** qui contient les variables globales
et statiques explicitement initialisées. Les valeurs de ces variables sont
lues depuis le fichiers exécutables lorsqu'il est chargé.
- **le segment des données non-initialisées** aui contient des variables
globales et statiques non explicitement initialisées (BSS)
- **la pile** appelées aussi *stack* est un segment dynamique aui s'étend et se
réduit. Il contient des blocs de pile appelés *stack frame* par fonction
appelée. Une *frame* contient les variables locales et la/les valeur(s) de
retour de la fonction.
- **le tas** aussi appelé *heap* est une zone où la mémoire peut être
dynamiquement allouée pour les variables à l'exécution du programme.
L'espace mémoire d'un processus est virtuel car celui-ci n'adresse pas
directement la mémoire. Les processus sont isolées du noyau et le noyau
maintient un tableau de pages mémoires aui adresse les pages de la mémoire
physique. Un processus peut adressser plus de mémoire que le système en a de
disponible.
Sous Unix, un processus est définis sous forme arborescente : chacun d'eux a un
processus parent (mis à pat le 1 - processus d'init) et chacun a aucun, un ou
plusieurs fils.
## Création de processus
```c
#include <unistd.h>
pid_t fork(void);
```
Après le `fork()`, le processus parent continue normalement son exécution. Le
processus fils commence son exécution juste après. On distingue le parent du
fils par la valeur de retour du `fork()` 0 pour le fils, le *PID* du fils pour
le père). Le fils est une copie du père cependant seule les zones modifiées sont
vraiment copiées. Le segment *text* est partagé entre les deux
Après le `fork()`, la table des fichiers est partagées entre le parent et
l'enfant. Ainsi si l'offset est modifié dans un des processus, il le sera aussi
pour l'autre. Cela permet entres autres de faire collaborer les processus sur
les mêmes données.
### exemple de `fork()`
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (int argc, char **argv) {
pid_t pid;
printf("Starting process with PID=%d\n", getpid());
pid = fork();
if (pid < 0) {
perror("Unable to fork");
}
else if (pid == 0) {
printf("Starting child with PID=%d (my parent PID=%d)\n", getpid
}
else {
printf("Still in process with PID=%d\n", getpid());
}
printf("Finishing process with PID=%d\n", getpid());
exit(EXIT_SUCCESS);
}
```
## Terminaison de processus
Quelle que soit la façon dont se termine un processus (père comme fils), le
noyau nettoie les ressources allouées. Il stocke cependant le status de
terminaison du fils jusqu'au moment ou le père en prend connaissance.
Lorsque le père se termine, le processus fils devient enfant de 1 (*PID* 1)
### Processus zombies
Lorsqu'un processus enfant est terminé mais que le parent n'a toujours pas pris
connaissance de sa terminaison, il devient alors un processus zombie. Ce dernier
continue de consommer des ressources noyau (code de terminaison, entrée dans la
table des processus etc.)
### Attendre la fin d'un processus enfant
```c
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *status, int options);
pid_t wait(int *status); // waitpid(-1, &status, 0);
// en cas de réussite, l'identifiant du processus fils
// terminé (ou changé) est renvoyé ; en cas d'erreur,
// la valeur de retour est -1
```
L'appel système `waitpid()` permet d'attendre la fin d'un processus. C'est un
appel bloquant (sauf avec certaines options). Il retourne une erreur s'il n'y a
pas de processus fils. Lorsque le processus fils se termine, la variable
`status` contient son code de retour.
## Création d'un nouveau processus
Sous Unix, la création d'un nouveau processus et l'exécution d'un programme sont
deux choses distinctes. L'exécution d'un nouveau processus ne créé pas de
nouveau processus, il remplace juste le programme appelant en allant chercher
les données sur le système de fichiers.
À l'exécution, tous les segments son réinitialisés comme si le programme avait
été exécuté normalement.
L'exécution d'un programme se fait grâce à l'appel `execve()`
```c
#include <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, ..., (char *) NULL);
int execlp(const char *file, const char *arg, ..., (char *) NULL);
int execle(const char *path, const char *arg, ...,(char *) NULL, char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
// Une sortie des fonctions exec() n'intervient que si une erreur s'est
// produite. La valeur de retour est -1, et errno contient le code
// d'erreur.
```
## Le format ELF
ELF pour *Executable and Linkable Format* est utilisé pour l'exécution de code
compilé. Dévellopé par Unix System Labortatories, il est utilisé par Linux, BSD,
System V, IRIX, SPARC.

Binary file not shown.

View file

@ -0,0 +1,39 @@
---
title: Programmation systeme TDM 1
date: 2018-09-05
categorie: ['Programmation système', 'TDM']
tags : ['appels', 'systèmes', 'Python', 'C']
---
#Différence entre les strace C et Python
Le strace python est plus volumineux, ce aui semble normal puisque le code est
interprété, et charge par conséquent l'ensemble de l'environnement d'execution
Python. *(36 lignes pour le C contre 613 pour le Python)*.
Cependant il y a aussi beaucoup des similitudes, comme l'appel à la libc et les
commamdes envoyées au kernel (write).
On peut donc en déduire que le temps d'exécution pour la version Python est plus
grande avec plus d'appels système.
## temps d'execution comparé avec strace -tt
- C : début 17:52:29.647826 fin 17:52:29.668778
- Python : début 17:50:49.455004 fin 17:50:49.769447
La différence de temps d'execution apparaît clairement ici
# Tracer un programme en cours d'exécution
J'ai essayé de tracer htop lancé dans un autre terminal mais j'ai une erreur
(Opération non permise). En passant par root pour lancer mon strace, il
fonctionne. L'affichage du strace est continue logique puisque le programme
tournant en arrière plan, il continue de faire des appels systèmes (surveillance
des processus du sytèmes)
Il est dont logique que je ne puisse pas stracer le processus 0, même apres
avoir modifier la variable sysctl yama.
# Avec le sleep
On constate un appel système de plus (nanosleep) avant le write.

View file

@ -0,0 +1,8 @@
#include <stdlib.h>
#include <stdlib.h>
int main (){
printf("Hello World\n");
sleep(5);
exit(0);
}

View file

@ -0,0 +1,8 @@
#include <stdlib.h>
#include <stdlib.h>
int main (){
printf("Hello World\n");
sleep(5);
exit(0);
}

Binary file not shown.

View file

@ -0,0 +1,7 @@
---
title: "TDM : Les fichiers"
date: 2018-09-11
categories : ['Programmation système', 'TDM']
---
Pas encore de contenu

View file

@ -0,0 +1,26 @@
#include <unistd.h>
#include <stdlib.h>
int main () {
char buffer[32];
int ret, read_ret;
int next_read = 1;
do {
read_ret = read(STDIN_FILENO, buffer, 1);
switch ( read_ret ) {
case -1 :
write (STDERR_FILENO,"Error when reading\n", 19);
exit(EXIT_FAILURE);
case 0:
next_read = 0;
break;
default:
ret = write(STDOUT_FILENO, buffer, 1);
if ( ret == -1){
write (STDERR_FILENO,"Error when writing\n", 19);
exit(EXIT_FAILURE);
}
}
} while ( next_read );
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,27 @@
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
int main () {
int fd,i;
char alphabet[26] = "abcdefghijklmnopqrstuvwxyz";
//open file
fd = open("tp2-q2.txt",O_WRONLY | O_CREAT, S_IRWXU);
if ( fd == -1 ) {
write(STDERR_FILENO,"Error when opening file\n", 25);
exit(EXIT_FAILURE);
}
for (i=0;i<26;i++) {
if ( write(fd, &alphabet[i], 1) == -1 || write(fd,"\n",1) == -1){
write (STDERR_FILENO,"Error when writing\n", 19);
exit(EXIT_FAILURE);
}
}
//Clode file
if ( close(fd) == -1){
write(STDERR_FILENO, "Can't close file.\n", 18);
}
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,24 @@
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#define HOLE 10000
int main (int argc, char **argv) {
int fd = open("td2-q3.txt", O_WRONLY | O_CREAT, S_IRWXU);
if ( fd < 0) {
write(STDOUT_FILENO, "Error : can't open file\n", 24);
exit(EXIT_FAILURE);
}
for (int i=0;i<4;i++){
if ( write(fd, "A", 1) == -1 || lseek(fd, HOLE, SEEK_CUR) == -1) {
write(STDOUT_FILENO, "Error : can't write to file.\n", 29);
exit(EXIT_FAILURE);
}
}
if ( close(fd) == -1) {
write(fd,"Error : can't close file.\n", 26);
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,24 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#define BUFFER 32
int main () {
char read_error[] = "Error when reading input.\n";
#include <string.h>
char buff[BUFFER];
FILE *out, *in;
in = fdopen(STDIN_FILENO, "r");
out = fdopen(STDOUT_FILENO,"w");
int count;
while ((count = fread(&buff, BUFFER,1,in)) > 0)
{
fwrite(&buff, BUFFER,1,out);
}
if ( count == -1 ){
fwrite(&read_error, strlen(read_error) + 1,1,fdopen(STDERR_FILENO,"w"));
}
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,33 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
void output_error() {
fprintf(stderr,"Error : %s\n",strerror(errno));
exit(EXIT_FAILURE);
}
int main() {
char *file = "tp2_q5.txt";
FILE *f = fopen(file,"w");
char m[56] = "\0";
char ret = '\n';
if ( f == NULL ){
output_error();
}
for(char i='a' ;i<='z' ; i++){
strncat(m,&i,1);
strncat(m,&ret,1);
}
fwrite(&m,strlen(m) + 1,1,f);
if ( ferror(f) ) {
output_error();
}
fclose(f);
if ( ferror(f) ){
output_error();
}
exit(EXIT_SUCCESS);
}

Binary file not shown.

View file

@ -0,0 +1,59 @@
---
Title: "TDM : Les Processus"
Date: 2018-09-18
Category: Programmation système
tags: ['TD Machine', 'programmation', 'C', 'processus']
---
[Télécharger les questions](./files/tdm3.pdf)
## Question 1
Sans exécuter le programme, je pense qu'il y aura Il y a 4 processus de créé.
```
q1.bin─┬─q1.bin
├─q1.bin
└─q1.bin
```
Les processus se "clonent" et l'arbre des processus est plus complexe que prévu
: il y a 8 processus au total.
```shell
$ ./q1.bin &
[1] 8895
$ pstree 8895
q1.bin─┬─q1.bin─┬─q1.bin───q1.bin
│ └─q1.bin
├─q1.bin───q1.bin
└─q1.bin
```
## Question 2
Je suis parti au départ pour créer la commande avec une boucle for pour
parcourir `*argv` mais il est plus simple de construire la commande avec
` &argv[1]` qui retourne le tableau après l'élément 1.
```C
int out = execvp(argv[1], &argv[1]);
```
J'ai aussi fait en sorte que le programme père se termine sur un `EXIT_FAILURE`
si le fils se termine sur une erreur.
```C
while ((pid = waitpid(pid, &status, 0)) > 0){
(status == 0) ? exit(EXIT_SUCCESS) : exit(EXIT_FAILURE);
}
```
Télécharger mon [code](./src/td3/q2.c).
## Question 3
Ma proposition était un peu complexe et surtout ne correspondant pas vraiment à
la demande. J'ai donc modifié ma réponde (q3bis.c)
Télécharger mon [code](./src/td3/q3.c).
Et la version remaniée [code](./src/td3/q3bis.c).

View file

@ -0,0 +1,9 @@
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char **argv) {
fork();
fork();
fork();
sleep(10);
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,33 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
int main (int argc, char **argv) {
pid_t pid;
int status;
pid = fork ();
if ( pid < 0 ){
printf("Error: %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
if ( pid == 0){
printf(" Into child, command : %s\n",argv[1]);
// we are in children
int out = execvp(argv[1], &argv[1]);
if ( out == -1 ){
printf("Error : %s\n",strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
else {
// if child exit code is not 0 then exit father with EXIT_FAILURE
while ((pid = waitpid(pid, &status, 0)) > 0){
(status == 0) ? exit(EXIT_SUCCESS) : exit(EXIT_FAILURE);
};
}
}

View file

@ -0,0 +1,37 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
int main(int argc, char **argv){
if (argc > 2) {
printf("Error : %s must have one argument\n", argv[0]);
exit(EXIT_FAILURE);
}
if (argv[1] == NULL) {
printf("Execute child process\n");
exit(EXIT_SUCCESS);
}
else {
int x = atoi(argv[1]);
printf("Number of children to create : %d\n", x);
for (int i=0; i < x ; i++){
int pid = fork();
if (pid == -1) {
printf("Error : %s", strerror(errno));
exit(EXIT_FAILURE);
}
if (pid == 0) {
// we are in our children
if ((execl(argv[0],"",NULL)) < 0 ) {
printf("Error : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
}
}
}
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,35 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
int main(int argc, char **argv){
if (argv[1] == NULL) {
printf("Error : %s must have one argument\n", argv[0]);
exit(EXIT_FAILURE);
}
printf("Execute programme number %s\n",argv[1]);
int r = atoi(argv[1]) - 1;
if (r > 0){
int pid = fork();
if (pid == -1) {
printf("Error : %s", strerror(errno));
exit(EXIT_FAILURE);
}
if (pid == 0) {
// we are in our children
char args[12] = "";
sprintf(args,"%i", r);
if ((execl(argv[0], argv[0], args, NULL)) < 0 ) {
printf("Error : %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
}
}
else {
printf("This is the end!\n");
}
exit(EXIT_SUCCESS);
}

Binary file not shown.

View file

@ -0,0 +1,21 @@
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int i;
void signal_sigint(){
printf("value : %d\n",i);
//exit(EXIT_SUCCESS);
}
int main () {
if((signal(SIGINT,signal_sigint)) == SIG_ERR){
perror("unable to catch signal");
}
for (i=0; i<1000000; i++) {
sleep(0.01);
}
}

View file

@ -0,0 +1,45 @@
#include <signal.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define PAUSE 60
#define CHILDREN 2
int pids[CHILDREN];
void signal_sigterm () {
for(int i=0; i<CHILDREN; i++){
// do nothing if whe are in childs
if (pids[i] > 0) {
if ((kill(pids[i],15)) == -1){
perror("Error in signal catch\n");
}
printf("Sending SIGTERM to child %d\n", pids[i]);
}
else{
printf("\tKilling me\n");
exit(EXIT_SUCCESS);
}
}
}
int main( int argc, char **argv){
printf("Starting father with pid %d\n", getpid());
int status;
for (int i=0;i<CHILDREN;i++){
pids[i] = fork();
if (pids[i] == 0) {
sleep(PAUSE);
exit(EXIT_SUCCESS);
}
else {
printf ("Starting child with pid : %d\n", pids[i]);
}
}
if((signal(SIGTERM,signal_sigterm)) == SIG_ERR){
perror("unable to catch signal");
}
waitpid(-1, &status,0);
exit(EXIT_SUCCESS);
}

Binary file not shown.

View file

@ -0,0 +1,22 @@
---
title : "TDM : Les processus légers"
category: Programmation système
date: 2018-09-25
---
[télécharger les questions](./files/tdm5.pdf)
## Question 1
Comme vu en TD, les résultats ne sont pas ceux attendu du fait de l'absence de
mutex. Je constate aussi qu'ils varient aussi d'une execution sur l'autre.
### avec un mutex
J'obtiens la valeur attendue pour blob.
[Voir mon code dans mutex](./src/td5/q1.c)
[Voir mon code avec mutex](./src/td5/q1_mutex.c)
## Question 2
[Voir mon code](./src/td5/q2.c)

View file

@ -0,0 +1,44 @@
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
//define
#define THREADS 2
#define ITERATIONS 1000000
static long glob = 0;
void *tmain( void *arg){
long tmp;
for (int i=0; i < ITERATIONS; i++){
tmp = glob;
tmp++;
glob = tmp;
}
return NULL;
}
int main(int argc, char **argv) {
pthread_t *t;
void *res;
// memory allocation for threads
if ( (t=calloc(THREADS, sizeof(pthread_t))) == NULL) {
perror("Unable ro allocate memory for pthread");
}
for (int i=0; i < THREADS; i++){
if (pthread_create(&t[i],NULL, tmain, &"") != 0){
perror("unable to create thread\n");
}
}
// Need to block parent thread until brother thread are finished
for (int j=0;j < THREADS; j++){
// bloc main thread exec with pthread_join()
if (pthread_join(t[j], &res) != 0){
perror ("Unable to join process");
}
}
printf("glob is %ld, should be 2000000\n", glob);
free(t);
exit (EXIT_SUCCESS);
}

View file

@ -0,0 +1,52 @@
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
//define
#define THREADS 2
#define ITERATIONS 1000000
static long glob = 0;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *tmain( void *arg){
long tmp;
for (int i=0; i < ITERATIONS; i++){
if (pthread_mutex_lock(&mutex) != 0) {
perror("Mutex lock failed");
exit(EXIT_FAILURE);
}
tmp = glob;
tmp++;
glob = tmp;
if (pthread_mutex_unlock(&mutex) != 0) {
perror("Mutex lock failed");
exit(EXIT_FAILURE);
}
}
return NULL;
}
int main(int argc, char **argv) {
pthread_t *t;
void *res;
// memory allocation for threads
if ( (t=calloc(THREADS, sizeof(pthread_t))) == NULL) {
perror("Unable ro allocate memory for pthread");
}
for (int i=0; i < THREADS; i++){
if (pthread_create(&t[i],NULL, tmain, &"") != 0){
perror("unable to create thread\n");
}
}
// Need to block parent thread until brother thread are finished
for (int j=0;j < THREADS; j++){
// bloc main thread exec with pthread_join()
if (pthread_join(t[j], &res) != 0){
perror ("Unable to join process");
}
}
printf("glob is %ld, should be 2000000\n", glob);
free(t);
exit (EXIT_SUCCESS);
}

View file

@ -0,0 +1,40 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
//define
#define THREADS 5
#define ITERATIONS 5
#define SLEEP 2
void *tmain( void *arg){
for (int i=0; i < ITERATIONS; i++){
sleep(SLEEP);
printf("I'm alive : %i\n",(int) pthread_self());
}
return NULL;
}
int main(int argc, char **argv) {
pthread_t *t;
void *res;
// memory allocation for threads
if ( (t=calloc(THREADS, sizeof(pthread_t))) == NULL) {
perror("Unable ro allocate memory for pthread");
}
for (int i=0; i < THREADS; i++){
if (pthread_create(&t[i],NULL, tmain, &"") != 0){
perror("unable to create thread\n");
}
}
// Need to block parent thread until brother thread are finished
for (int j=0;j < THREADS; j++){
// bloc main thread exec with pthread_join()
if (pthread_join(t[j], &res) != 0){
perror ("Unable to join process");
}
}
free(t);
exit (EXIT_SUCCESS);
}

Binary file not shown.

View file

@ -0,0 +1,6 @@
---
title: "TDM6 : les tubes"
date: 2018-10-09
---

View file

@ -0,0 +1,59 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#define BUFFMAX 256
#define OUTPATH "packages.list"
int main (int argc, char **argv) {
pid_t pid;
int fds[2], status;
if (pipe(fds) == -1) {
perror ("Unable to create pipe");
}
pid = fork();
if (pid == -1) {
perror("Unable to fork");
}
else if(pid > 0){
// father
printf("Fork : Init father...\n");
if (close(fds[1]) == -1) {
perror("Unable to close pipe from parent");
}
// Waiting for children to terminate
char buff[BUFFMAX];
FILE *fout = fopen(OUTPATH,"w");
if ( fout == NULL ){
perror("");
}
int n;
while ((n=read(fds[0], &buff, BUFFMAX)) > 0){
if ( fwrite(&buff, n, 1, fout) == -1 ){
perror("Error when writing output");
}
}
if ( fclose(fout) == -1){
perror("Error ou outp[ut file close");
}
wait(&status);
}
else {
// children
if (close(fds[0]) == -1) {
perror("Unable to close pipe from child");
}
if ( dup2(fds[1], STDOUT_FILENO) != STDOUT_FILENO){
perror("Unable to duplicate files descriptors");
}
if ( close(fds[1]) == -1 ){
perror ("error on pipe in close");
}
execlp("pacman","pacman","-Qs", NULL);
}
exit(EXIT_SUCCESS);
}

View file

@ -0,0 +1,64 @@
---
date: "2018-09-03"
categories: ["Réseau", "Cours"]
title: "Réseaux - Introduction"
tags: ["OSI", "latence", "débit"]
---
Le principe de ce cours est de permettre de savoir configurer et gérer un réseau
d'entreprise.
# La pile OSI (vue rapide)
elle se découpe en 7 couches a connaitre par cœur.
1. Physique : les bits *câble, ondes, fibre, ADSL ...*
2. Liaison : on parle de **trames** *Ethernet, WiFi*
3. Réseau : acheminement - **paquets** *IP, IPX*
4. Transport : accusé de réception, port, **datagramme** *TCP, UDP, IPX*
5. Session : qui? quoi? *CAS (SSO)*
6. Présentation : encodage, langue *UTF-8, XML*
7. Application : tout le reste.
Voir schema sur l'encapsulation
# Latence et débit
Voir schema Page 3
**Débit** : Quantité d'information que l'on est capable d'envoyer / recevoir
dans un certain laps de temps.
**Latence** : Temps entre le moment ou j'envoie mon premier bit est envoyé et où
il est reçu. La latence est indépendante du débit. La latence étant difficile à
mesurer, il est commun d'utiliser plutôt le temps d'un aller retour.
Les deux notions ne sont pas liées même s'il est possible que l'une impacte
l'autre. On considère que l'expérience utilisateur n'est plus fluide à partir de
10ms de latence et n'est plus "interactive" à partir de 100ms.
## Exercice
Calculer le débit nécessaire pour envoyer une vidéo de 640x360 à 25hz et 24
bits/pixels et un fichier audio 16 bits à 48 Khz
### fichier vidéo
Une image de notre fichier vidéo se compose donc de **230400** pixels et donc
pèse **5529**Kb *(5529600 bits)*. Pour 24 images il faut un débit de
**138240**Kb/s
### fichier audio
Une seconde de flux audio représentant 48000 valeurs de 16 bits le débit
nécessaire est donc de **768**Kb/s. Je suis parti du principe que le fichier
audio en question est mono.
## Correction
Prendre des approximations, ne pas s'embêter des détails.
Pour comparaison
- Fichier vidéo h264 400-100 Kb/s
- Fichier audio 128 Kb/s

View file

@ -0,0 +1,127 @@
---
title: "Le modèle OSI - la couche physique, la couche liaison et la couche réseau"
date: 2018-09-05
categories: ["Réseau", "Cours"]
tags: ["physique", "cable", "fibre", "wifi"]
---
Les normes 801.## concerne en général la couche physique voire la couche liaison
voir la page [IEEE 802](https://fr.wikipedia.org/wiki/IEEE_802) sur Wikipedia.
# Les câbles
On parles souvent de câble RJ45 ou câble Ethernet, il est plus juste de parler
de câble à paires torsadées et fiches RJ45. Pourquoi les fils sont torsadés?
tout simplement pour minimiser les perturbations
[diaphoniques](https://fr.wikipedia.org/wiki/Diaphonie) induites par les fils
entre eux. Le tout est souvent enveloppé dans un blindage soit par
paire et/ou pour l'ensemble.
Voir la page des [paires
torsadées](https://fr.wikipedia.org/wiki/Paire_torsad%C3%A9e) sur Wikipedia
# La fibre optique
Le principe est de faire passer de la lumière dans un fil en utilisant les
propriété réfractrice de la lumière. La fibre est en fait composée, en son cœur,
de deux couches avec des indice de réfraction différent afin de contenir la
lumière en la faisant rebondir.
De par leurs longueur d'onde différentes, il est tout à fait possible d'utiliser
plusieurs couleurs de lumières afin d'envoyer plusieurs signaux en simultané.
On parle de *fibre noire* lorsque la fibre est livrée telle quelle, c'est au
client de "l'allumer" et fournissant les boitiers d'alimentation (émetteur et
récepteurs).
A contrario, la fibre allumée est fournie avec sa "lumière" c'est par contre le
prestataire (FAI par exemple) qui attribuera la couleur de la lumière.
Voir [la fibre optique](https://fr.wikipedia.org/wiki/Fibre_optique) sur
Wikipedia
# Le WiFi
Le WiFi, utilisé pour l'ensemble des normes 802.11, couvre un ensemble de
protocoles de communication sans fils utilisant les ondes radioélectriques en
utilisant des bandes de fréquences autour de 2,4 Ghz (normes a,b,g,n) et
5 Ghz(n,ac)
La norme découpe des canaux dans les bandes définie (14 utilisables dont 11 en
France pour celle 2,4 Ghz et 25 utilisable pour 5 Ghz)
On trouve deux type d'antennes pour le WiFi :
- **directionnelle** : le signal est envoyé dans une direction en particulier,
qui permet de diminuer l'atténuation et d'augmenter la portée.
- **omnidirectionnelle** : le signal est envoyé dans toute les directions, ce
qui diminue la portée.
Voir la page du [WiFi](https://fr.wikipedia.org/wiki/Wi-Fi) sur Wikipédia.
## Le théorème de Shannon
Voir [la
page](https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d%27%C3%A9chantillonnage)
Wikipedia.
# Les adresses
Quel que soit le type de réseau, il y a forcément une notion d'adresse
sous-jacente. Pou Internet, réseau de réseaux, on dénombre trois type d'adresses
## Adresse MAC
Inscrite directement dans le matériel (carte réseau ethernet, wifi ...). Cette
adresse est utilisée localement (réseau interne) est codée sur 48bits en
hexadécimal : 24 étant spécifique au constructeur et 24 au matériel. Deux
périphériques peuvent avoir la même adresse MAC, mais le fabriquant se
débrouillera pour les envoyer à des coins opposés du monde pour ne pas qu'ils se
retrouve sur le même réseau local.
## Adresse IP
C'est une adresse virtuelle, dans le sens ou elle n'est pas inscrite en dur dans
le matériel comme l'adresse MAC. Elle est globale, routable et doit être unique.
Il en existe deux type IPv4 et IPv6
### IPv4
C'est le type d'adresse le plus ancien, une adresse IPv4 se compose de 4 valeurs
décimales séparées par des points (32 bits). Il est donc possible d'en attribuer
environ 4 milliards. C'est aujourd'hui une ressource rare épuisée dans certaines
partie du globe (États-Unis par exemple).
### IPv6
C'est le type d'adresse le plus récent, il a été créé pour pallier à la pénurie
d'IPv4. Une adresse IPv6 est composée de 128 bits en hexadécimal regroupés en
paquet de 16 bits séparés par des deux-points (:).
Elles sont plus facilement structurées, prenons l'exemple de la machine 4 de la
salle 101 du CREMI, son adresse est
```
2001:660:6101:800:252:4
```
- `2001:660` correspond au réseau
[RENATER](https://fr.wikipedia.org/wiki/R%C3%A9seau_national_de_t%C3%A9l%C3%A9communications_pour_la_technologie,_l%27enseignement_et_la_recherche0
- `:6101` c'est la région (Aquitaine - Bordeaux)
- `:800` c'est le bâtiment du CREMI
- `:252` c'est le numéro de salle
- `:4` c'est le poste.
On voit ici que le découpage de l'adresse IPv6 la rend lisible.
## Le masque de sous réseau
Il permet de distinguer la partie utilisée pour le routage de celle utilisée
pour numéroter les interface d'une adresse IP.
En IPv4, le masque de sous réseau distingue les bits d'une adresse IP
identifiant le sous-réseau et ceux identifiant l'hôte.
En IPv6, le masque est appelé préfixe et est un multiple de 4 afin de découper
des morceaux entiers d'adresse pour les sous réseau, facilitant ainsi la vie de
tout le monde.

View file

@ -0,0 +1,729 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="801.19281"
height="440.46127"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="tcp_close.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path3816"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path3819"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path3813"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)" />
</marker>
<marker
inkscape:stockid="DotS"
orient="auto"
refY="0"
refX="0"
id="DotS"
style="overflow:visible">
<path
id="path3854"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path3795"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path3807"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path3789"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective3606"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3681"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3756"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4427"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5228"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5259"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5298"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5353"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5384"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5415"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5446"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5498"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5575"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5603"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8519"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8541"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8563"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8585"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8607"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8629"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8651"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8673"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698-0"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698-6"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698-4"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698-5"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective8698-06"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10160"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10193"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70710678"
inkscape:cx="472.12883"
inkscape:cy="160.3244"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:snap-grids="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="952"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
objecttolerance="5"
guidetolerance="5">
<sodipodi:guide
position="0.59648418,-587.56936"
orientation="0,744.09448"
id="guide3620" />
<inkscape:grid
type="xygrid"
id="grid5523"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0.59648418,-24.331562)">
<rect
style="fill:#ff9191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.19259691px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822-1"
width="299.81329"
height="391.21613"
x="500.18671"
y="72.980232" />
<text
xml:space="preserve"
style="font-size:31.88286018px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="646.30457"
y="47.63348"
id="text3628"
transform="scale(1.003674,0.99633941)"><tspan
sodipodi:role="line"
id="tspan3630"
x="646.30457"
y="47.63348">Computer B</tspan></text>
<rect
style="fill:#98ff91;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.19296837px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822"
width="300"
height="391.21613"
x="0"
y="72.980232" />
<text
xml:space="preserve"
style="font-size:39.8644371px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="149.39859"
y="47.647427"
id="text3632"
transform="scale(1.0040254,0.99599073)"><tspan
sodipodi:role="line"
id="tspan3634"
x="149.39859"
y="47.647427"
style="font-size:31.89155006px;text-align:center;text-anchor:middle">Computer A</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.48322684;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3"
width="180"
height="51.216137"
x="99.236809"
y="72.980232"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="189.69531"
y="107.17815"
id="text5563"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565"
x="189.69531"
y="107.17815"
style="fill:#000000">ESTABLISHED</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.64488679;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-7-3"
width="180"
height="91.216133"
x="519.23682"
y="72.980232"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="609.69531"
y="127.17815"
id="text5563-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-7"
x="609.69531"
y="127.17815"
style="fill:#000000">ESTABLISHED</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="415.58517"
y="60.728451"
id="text8431"
sodipodi:linespacing="125%"
transform="matrix(0.98542395,0.17011655,-0.17011655,0.98542395,0,0)"><tspan
sodipodi:role="line"
id="tspan8433"
x="415.58517"
y="60.728451"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8469">Fin</tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8459"> seq=x</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="373.54782"
y="225.66434"
id="text8435"
sodipodi:linespacing="100%"
transform="matrix(0.99245298,-0.12262578,0.12262578,0.99245298,0,0)"
inkscape:transform-center-x="7.4752714"
inkscape:transform-center-y="-3.858387"><tspan
sodipodi:role="line"
id="tspan8437"
x="375.76657"
y="225.66434"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8473">Ack </tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8457">ack=x+1 </tspan></tspan></text>
<rect
style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:0.6039384;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4"
width="180"
height="80"
x="99.236809"
y="124.19637"
rx="0"
ry="0" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.76987344;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-2"
width="180"
height="130"
x="519.23682"
y="164.19637"
rx="0"
ry="0" />
<rect
style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:0.76987344;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-7"
width="180"
height="130"
x="99.236809"
y="204.19637"
rx="0"
ry="0" />
<rect
style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:0.60851151;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-2-7"
width="180"
height="81.216133"
x="519.23682"
y="292.98022"
rx="0"
ry="0" />
<rect
style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:0.60851151;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-7-9"
width="180"
height="81.216133"
x="99.236809"
y="334.19638"
rx="0"
ry="0" />
<rect
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.60851151;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-2-7-3"
width="180"
height="81.216133"
x="519.23682"
y="372.98022"
rx="0"
ry="0" />
<rect
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.42704886;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3-4-7-9-1"
width="180"
height="39.999989"
x="99.236809"
y="414.19641"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="190.46143"
y="169.82854"
id="text5563-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8"
x="190.46143"
y="169.82854"
style="fill:#000000">FIN_WAIT_1</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="190.46143"
y="275.43658"
id="text5563-9-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-5"
x="190.46143"
y="275.43658"
style="fill:#000000">FIN_WAIT_2</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="190.46143"
y="381.04468"
id="text5563-9-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-8"
x="190.46143"
y="381.04468"
style="fill:#000000">TIME_WAIT</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="189.28369"
y="442.79211"
id="text5563-9-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-2"
x="189.28369"
y="442.79211"
style="fill:#000000">CLOSED</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="610.46143"
y="235.55379"
id="text5563-9-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-6"
x="610.46143"
y="235.55379"
style="fill:#000000">CLOSE_WAIT</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="610.46143"
y="339.82855"
id="text5563-9-09"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-0"
x="610.46143"
y="339.82855"
style="fill:#000000">LAST_ACK</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="610.46143"
y="419.82849"
id="text5563-9-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-8-3"
x="610.46143"
y="419.82849"
style="fill:#000000">CLOSED</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="M 280,94.864807 520,134.86481"
id="path8770"
transform="translate(-0.76319253,24.331562)"
inkscape:connector-type="polyline" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="m 520,144.86481 -240,30"
id="path8968"
transform="translate(-0.76319253,24.331562)"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="333.56494"
y="391.52441"
id="text8431-8"
sodipodi:linespacing="125%"
transform="matrix(0.98435455,-0.17619907,0.17619907,0.98435455,0,0)"><tspan
sodipodi:role="line"
id="tspan8433-9"
x="333.56494"
y="391.52441"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8469-3">Fin</tspan><tspan
style="font-size:16px;fill:#0000ff"
id="tspan8459-4"> seq=y</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="441.86334"
y="322.15979"
id="text8435-4"
sodipodi:linespacing="100%"
transform="matrix(0.99302658,0.11789067,-0.11789067,0.99302658,0,0)"
inkscape:transform-center-x="6.2070095"><tspan
sodipodi:role="line"
id="tspan8437-6"
x="444.08209"
y="322.15979"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8473-0">Ack </tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8457-6"><tspan
style="fill:#0000ff"
id="tspan10216">ack=y+1 </tspan></tspan></tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="m 520,264.86481 -240,40"
id="path10218"
transform="translate(-0.76319253,24.331562)"
inkscape:connector-type="polyline" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="m 280,314.86481 240,30"
id="path10416"
transform="translate(-0.76319253,24.331562)"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="403.79932"
y="228.19637"
id="text10614"
sodipodi:linespacing="89.999998%"><tspan
sodipodi:role="line"
id="tspan10616"
x="406.29541"
y="228.19637"
style="fill:#000080">Connection is </tspan><tspan
sodipodi:role="line"
x="403.79932"
y="244.39636"
id="tspan10622"
style="fill:#000080">half-closed</tspan><tspan
sodipodi:role="line"
x="403.79932"
y="260.59637"
id="tspan10620"
style="fill:#000080">Computer B can still</tspan><tspan
sodipodi:role="line"
x="403.79932"
y="276.79636"
id="tspan10618"
style="fill:#000080">send data to A</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,589 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="801.2359"
height="421.23608"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="tcp_connect.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path3816"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path3819"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path3813"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)" />
</marker>
<marker
inkscape:stockid="DotS"
orient="auto"
refY="0"
refX="0"
id="DotS"
style="overflow:visible">
<path
id="path3854"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path3795"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path3807"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path3789"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective3606"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3681"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3756"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4427"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5228"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5259"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5298"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5353"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5384"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5415"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5446"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5498"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5575"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5603"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4142136"
inkscape:cx="374.63645"
inkscape:cy="151.10332"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:snap-grids="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="952"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
objecttolerance="5"
guidetolerance="5">
<sodipodi:guide
position="0.61803794,-619.38197"
orientation="0,744.09448"
id="guide3620" />
<inkscape:grid
type="xygrid"
id="grid5523"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0.61803794,-11.744145)">
<rect
style="fill:#edff91;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23569119px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822-1"
width="299.81329"
height="420"
x="500.18671"
y="12.362183" />
<text
xml:space="preserve"
style="font-size:31.88286018px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="646.30457"
y="47.63348"
id="text3628"
transform="scale(1.003674,0.99633941)"><tspan
sodipodi:role="line"
id="tspan3630"
x="646.30457"
y="47.63348">Server</tspan></text>
<rect
style="fill:#91fffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23607588px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822"
width="300"
height="420"
x="0"
y="12.362183" />
<text
xml:space="preserve"
style="font-size:39.8644371px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="149.39859"
y="47.647427"
id="text3632"
transform="scale(1.0040254,0.99599073)"><tspan
sodipodi:role="line"
id="tspan3634"
x="149.39859"
y="47.647427"
style="font-size:31.89155006px;text-align:center;text-anchor:middle">Client</tspan></text>
<rect
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.79893541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206"
width="180"
height="140"
x="100"
y="72.362183"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="190.04688"
y="150.95789"
id="text5547"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5549"
x="190.04688"
y="150.95789">CLOSED</tspan></text>
<g
id="g5625">
<rect
ry="0"
rx="0"
y="212.36218"
x="100"
height="80"
width="180"
id="rect5206-2-1"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.6039384;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text5551"
y="258.71375"
x="189.70703"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
xml:space="preserve"><tspan
y="258.71375"
x="189.70703"
id="tspan5553"
sodipodi:role="line">SYN_SENT</tspan></text>
</g>
<g
id="g5640">
<rect
ry="0"
rx="0"
y="132.36218"
x="520"
height="120"
width="180"
id="rect5206-2"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.73967052;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text5555"
y="200.95203"
x="610.11133"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
xml:space="preserve"><tspan
y="200.95203"
x="610.11133"
id="tspan5557"
sodipodi:role="line">LISTEN</tspan></text>
</g>
<g
id="g5645">
<rect
ry="0"
rx="0"
y="252.36218"
x="520"
height="80"
width="180"
id="rect5206-2-7"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.6039384;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text5559"
y="298.71375"
x="610.10547"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
xml:space="preserve"><tspan
y="298.71375"
x="610.10547"
id="tspan5561"
sodipodi:role="line">SYN_RVCD</tspan></text>
</g>
<g
id="g5630">
<rect
ry="0"
rx="0"
y="292.36218"
x="100"
height="140"
width="180"
id="rect5206-2-3"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79893541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text5563"
y="370.95203"
x="189.69531"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
xml:space="preserve"><tspan
y="370.95203"
x="189.69531"
id="tspan5565"
sodipodi:role="line">ESTABLISHED</tspan></text>
</g>
<rect
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.52030438;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-1"
width="180"
height="59.37719"
x="520"
y="72.362183"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="610.04688"
y="110.64648"
id="text5547-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5549-3"
x="610.04688"
y="110.64648">CLOSED</tspan></text>
<g
id="g5650">
<rect
ry="0"
rx="0"
y="332.36218"
x="520"
height="100"
width="180"
id="rect5206-2-7-3"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.67522365;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text5563-8"
y="390.95203"
x="609.69531"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
xml:space="preserve"><tspan
y="390.95203"
x="609.69531"
id="tspan5565-7"
sodipodi:role="line">ESTABLISHED</tspan></text>
</g>
<g
id="g8451"
transform="translate(-26,0)">
<text
sodipodi:linespacing="125%"
id="text5675"
y="202.36218"
x="114.05469"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
xml:space="preserve"><tspan
y="202.36218"
x="119.04688"
id="tspan5677"
sodipodi:role="line">socket() </tspan><tspan
id="tspan5679"
y="224.86218"
x="119.04688"
sodipodi:role="line">connect() </tspan></text>
<path
inkscape:connector-type="polyline"
id="path5681"
d="m 120,192.36218 0,35"
style="fill:#ff0000;stroke:#ff0000;stroke-width:1.76383424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotS);marker-end:url(#Arrow2Send)" />
</g>
<g
id="g8443"
transform="translate(16,0)">
<text
sodipodi:linespacing="125%"
id="text5661"
y="102.36218"
x="690"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
xml:space="preserve"><tspan
y="102.36218"
x="690"
id="tspan5663"
sodipodi:role="line"> socket()</tspan><tspan
id="tspan5665"
y="124.86218"
x="690"
sodipodi:role="line"> bind()</tspan><tspan
id="tspan5667"
y="147.36218"
x="690"
sodipodi:role="line"> listen()</tspan><tspan
id="tspan5673"
y="169.86218"
x="690"
sodipodi:role="line"> accept()</tspan></text>
<path
inkscape:connector-type="polyline"
id="path7241"
d="m 690,97.362183 0,69.999997"
style="fill:#ff0000;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotS);marker-end:url(#Arrow2Send)" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow2Mend)"
d="m 280,207.36218 240,40"
id="path7641"
inkscape:connector-type="polyline" />
<path
style="fill:none;stroke:#000000;stroke-width:3.46410179;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="m 520,257.36218 -240,30"
id="path7643"
inkscape:connector-type="polyline" />
<path
style="fill:none;stroke:#000000;stroke-width:3.46410155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="m 280,297.36218 240,30"
id="path7645"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="432.07501"
y="148.80128"
id="text8431"
sodipodi:linespacing="100%"
transform="matrix(0.98542395,0.17011655,-0.17011655,0.98542395,0,0)"><tspan
sodipodi:role="line"
id="tspan8433"
x="432.07501"
y="148.80128"><tspan
style="-inkscape-font-specification:Arial Bold;font-family:Arial;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:17.99999998px;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
id="tspan8469">Syn</tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8459"> seq=x</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="364.11249"
y="310.91501"
id="text8435"
sodipodi:linespacing="100%"
transform="matrix(0.99311758,-0.11712163,0.11712163,0.99311758,0,0)"><tspan
sodipodi:role="line"
id="tspan8437"
x="364.11249"
y="310.91501"><tspan
style="-inkscape-font-specification:Arial Bold;font-family:Arial;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:17.99999996px;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
id="tspan8471">Syn</tspan>+<tspan
style="-inkscape-font-specification:Arial Bold;font-family:Arial;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:17.99999996px;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
id="tspan8473">Ack</tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8457"><tspan
style="fill:#0000ff"
id="tspan8465"> seq=y</tspan> ack=x+1</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="437.90137"
y="280.53427"
id="text8439"
sodipodi:linespacing="100%"
transform="matrix(0.99257382,0.12164377,-0.12164377,0.99257382,0,0)"><tspan
sodipodi:role="line"
id="tspan8441"
x="437.90137"
y="280.53427"
style="text-align:center;text-anchor:middle"><tspan
style="-inkscape-font-specification:Arial Bold;font-family:Arial;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:18.00000005px;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
id="tspan8475">Ack</tspan><tspan
style="font-size:16px;fill:#0000ff"
id="tspan8461"><tspan
style="fill:#ff0000"
id="tspan8463"> seq=x+1</tspan> ack=y+1</tspan></tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,225 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 211.66666 116.41667"
height="440"
width="800">
<defs
id="defs2">
<marker
style="overflow:visible;"
id="Arrow2Mend"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path4547" />
</marker>
<marker
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path4523" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Mend-3"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path4547-6" />
</marker>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-180.58332)"
id="layer1">
<path
id="path4518"
d="m 8.9701516,290.02237 v -99.9588"
style="fill:none;stroke:#000000;stroke-width:0.86500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
<path
id="path5528"
d="m 125.48052,211.28611 0,79.26302"
style="fill:#0000ff;stroke:#0f4ae4;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.465, 0.93;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path4518-7"
d="m 8.9701516,290.02237 190.8304384,0"
style="fill:none;stroke:#000000;stroke-width:0.86500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-3)" />
<path
id="path5473"
d="m 11.091685,286.84374 c 20.847023,0.13363 37.409101,-68.86711 54.623708,-74.16729 17.214607,-5.30018 25.669753,10.5216 33.868016,10.69078 8.198261,0.16918 15.528161,-12.45364 23.920631,-12.6953 8.39246,-0.24166 22.2498,13.13691 31.39274,12.96257"
style="fill:none;stroke:#f21515;stroke-width:0.76499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#f21515;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.06000001,3.06000001;stroke-opacity:1;stroke-dashoffset:0"
d="m 154.89678,223.6345 c 9.14294,-0.17434 16.40398,-11.78442 26.32605,-12.2944"
id="path5513" />
<path
id="path5515"
d="m 72.563677,212.36337 v 78.17634"
style="fill:#0000ff;stroke:#0f4ae4;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.465, 0.93;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:#0000ff;stroke:#0f4ae4;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.465, 0.93;stroke-dashoffset:0;stroke-opacity:1"
d="m 99.551193,223.78434 0,65.99937"
id="path5526" />
<path
style="fill:#0000ff;stroke:#0f4ae4;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.465, 0.93;stroke-dashoffset:0;stroke-opacity:1"
d="m 155.64321,223.6345 0,66.14921"
id="path5530" />
<g
id="text5534"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="Débit">
<path
id="path5602"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 15.008714,190.97844 v 3.19981 h 0.672482 q 0.851628,0 1.245747,-0.38585 0.396875,-0.38585 0.396875,-1.21819 0,-0.82682 -0.396875,-1.20992 -0.394119,-0.38585 -1.245747,-0.38585 z m -0.556728,-0.4575 h 1.143772 q 1.196137,0 1.755621,0.49885 0.559483,0.49609 0.559483,1.55442 0,1.06385 -0.562239,1.5627 -0.56224,0.49885 -1.752865,0.49885 h -1.143772 z" />
<path
id="path5604"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 21.413835,192.96558 v 0.24804 h -2.33164 q 0.03307,0.52366 0.314192,0.79926 0.283876,0.27286 0.788238,0.27286 0.292144,0 0.564996,-0.0717 0.275608,-0.0717 0.545703,-0.21498 v 0.47956 q -0.272851,0.11576 -0.559483,0.17639 -0.286632,0.0606 -0.581533,0.0606 -0.738628,0 -1.171332,-0.42994 -0.429948,-0.42995 -0.429948,-1.16307 0,-0.75792 0.407899,-1.20165 0.410656,-0.44648 1.105187,-0.44648 0.622873,0 0.983919,0.40238 0.363802,0.39964 0.363802,1.08866 z m -0.507118,-0.14883 q -0.0055,-0.41617 -0.234266,-0.66422 -0.225998,-0.24804 -0.600825,-0.24804 -0.424436,0 -0.680751,0.23977 -0.253559,0.23978 -0.292144,0.67524 z m -0.487825,-2.69545 h 0.548459 l -0.898481,1.03629 h -0.42168 z" />
<path
id="path5606"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 24.462056,193.09511 q 0,-0.55948 -0.231511,-0.87643 -0.228754,-0.31971 -0.631141,-0.31971 -0.402387,0 -0.633898,0.31971 -0.228754,0.31695 -0.228754,0.87643 0,0.55948 0.228754,0.87919 0.231511,0.31695 0.633898,0.31695 0.402387,0 0.631141,-0.31695 0.231511,-0.31971 0.231511,-0.87919 z m -1.725304,-1.07763 q 0.159852,-0.2756 0.402387,-0.40789 0.245291,-0.13505 0.584288,-0.13505 0.56224,0 0.912262,0.44648 0.352777,0.44649 0.352777,1.17409 0,0.7276 -0.352777,1.17409 -0.350022,0.44648 -0.912262,0.44648 -0.338997,0 -0.584288,-0.13229 -0.242535,-0.13505 -0.402387,-0.41065 v 0.46302 h -0.509874 v -4.28846 h 0.509874 z" />
<path
id="path5608"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 25.82907,191.54895 h 0.507118 v 3.08681 H 25.82907 Z m 0,-1.20165 h 0.507118 v 0.64217 H 25.82907 Z" />
<path
id="path5610"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 27.896127,190.67252 v 0.87643 h 1.044553 v 0.39412 h -1.044553 v 1.6757 q 0,0.37758 0.101975,0.48506 0.104731,0.10749 0.42168,0.10749 h 0.520898 v 0.42444 h -0.520898 q -0.587045,0 -0.810287,-0.21773 -0.223242,-0.22049 -0.223242,-0.79926 v -1.6757 h -0.37207 v -0.39412 h 0.37207 v -0.87643 z" />
</g>
<g
id="text5534-5"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="Temps">
<path
id="path5613"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 184.08466,280.53624 h 3.48092 v 0.46853 h -1.46072 v 3.64629 h -0.55948 v -3.64629 h -1.46072 z" />
<path
id="path5615"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 189.76493,282.98088 v 0.24805 h -2.33164 q 0.0331,0.52365 0.3142,0.79926 0.28387,0.27285 0.78823,0.27285 0.29215,0 0.565,-0.0717 0.27561,-0.0717 0.5457,-0.21497 v 0.47956 q -0.27285,0.11575 -0.55948,0.17638 -0.28663,0.0606 -0.58153,0.0606 -0.73863,0 -1.17134,-0.42995 -0.42994,-0.42995 -0.42994,-1.16306 0,-0.75792 0.4079,-1.20165 0.41065,-0.44649 1.10518,-0.44649 0.62288,0 0.98392,0.40239 0.3638,0.39963 0.3638,1.08865 z m -0.50711,-0.14883 q -0.006,-0.41617 -0.23427,-0.66421 -0.226,-0.24805 -0.60083,-0.24805 -0.42443,0 -0.68075,0.23978 -0.25356,0.23978 -0.29214,0.67524 z" />
<path
id="path5617"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 193.00057,282.15681 q 0.19017,-0.34175 0.45475,-0.50436 0.26458,-0.16261 0.62287,-0.16261 0.48232,0 0.74414,0.339 0.26183,0.33624 0.26183,0.95911 v 1.86311 h -0.50987 v -1.84657 q 0,-0.44373 -0.1571,-0.6587 -0.1571,-0.21498 -0.47956,-0.21498 -0.39412,0 -0.62287,0.26183 -0.22875,0.26183 -0.22875,0.71383 v 1.74459 h -0.50988 v -1.84657 q 0,-0.44648 -0.15709,-0.6587 -0.1571,-0.21498 -0.48507,-0.21498 -0.38861,0 -0.61737,0.26459 -0.22875,0.26183 -0.22875,0.71107 v 1.74459 h -0.50987 v -3.0868 h 0.50987 v 0.47955 q 0.17363,-0.28387 0.41617,-0.41892 0.24253,-0.13505 0.57602,-0.13505 0.33624,0 0.57051,0.17088 0.23702,0.17088 0.35002,0.49609 z" />
<path
id="path5619"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 196.58898,284.18804 v 1.63711 h -0.50988 v -4.26089 h 0.50988 v 0.46853 q 0.15985,-0.27561 0.40239,-0.4079 0.24529,-0.13505 0.58428,-0.13505 0.56224,0 0.91226,0.44649 0.35278,0.44648 0.35278,1.17409 0,0.7276 -0.35278,1.17408 -0.35002,0.44649 -0.91226,0.44649 -0.33899,0 -0.58428,-0.13229 -0.24254,-0.13505 -0.40239,-0.41066 z m 1.7253,-1.07762 q 0,-0.55949 -0.23151,-0.87644 -0.22875,-0.3197 -0.63114,-0.3197 -0.40239,0 -0.6339,0.3197 -0.22875,0.31695 -0.22875,0.87644 0,0.55948 0.22875,0.87918 0.23151,0.31695 0.6339,0.31695 0.40239,0 0.63114,-0.31695 0.23151,-0.3197 0.23151,-0.87918 z" />
<path
id="path5621"
style="font-size:5.64444447px;stroke-width:0.26458332"
d="m 201.64914,281.65521 v 0.47955 q -0.21498,-0.11024 -0.44649,-0.16536 -0.23151,-0.0551 -0.47956,-0.0551 -0.37758,0 -0.56775,0.11575 -0.18741,0.11576 -0.18741,0.34727 0,0.17639 0.13505,0.27836 0.13504,0.0992 0.54294,0.19017 l 0.17364,0.0386 q 0.54019,0.11575 0.76619,0.32797 0.22875,0.20946 0.22875,0.58704 0,0.42995 -0.34175,0.68076 -0.339,0.2508 -0.93431,0.2508 -0.24805,0 -0.51815,-0.0496 -0.26734,-0.0469 -0.56499,-0.14332 v -0.52365 q 0.28112,0.14607 0.55397,0.22048 0.27285,0.0717 0.54019,0.0717 0.35829,0 0.55122,-0.12126 0.19292,-0.12403 0.19292,-0.34727 0,-0.20671 -0.14056,-0.31695 -0.1378,-0.11024 -0.60909,-0.21222 l -0.17639,-0.0413 q -0.47129,-0.0992 -0.68075,-0.30317 -0.20946,-0.2067 -0.20946,-0.56499 0,-0.43546 0.30868,-0.67249 0.30868,-0.23702 0.87643,-0.23702 0.28112,0 0.52917,0.0413 0.24804,0.0413 0.45751,0.12403 z" />
</g>
<circle
r="5.4790254"
cy="264.66037"
cx="49.578499"
id="path5554"
style="opacity:0.86699997;fill:#ff1900;fill-opacity:1;stroke:none;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:0.46499999, 0.92999999000000000;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="text5534-56"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="1">
<path
id="path5636"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46666622px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;stroke-width:0.26458332"
d="m 47.463066,266.36679 h 1.405599 v -3.98942 l -1.442806,0.29765 v -1.08314 l 1.434538,-0.29765 h 1.513086 v 5.07256 h 1.405598 v 1.09967 h -4.316015 z" />
</g>
<circle
style="opacity:0.86699997;fill:#ff1900;fill-opacity:1;stroke:none;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:0.46499999, 0.92999999;stroke-dashoffset:0;stroke-opacity:1"
id="circle5578"
cx="86.620155"
cy="264.66037"
r="5.4790254" />
<g
id="text5582"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="2">
<path
id="path5633"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46666622px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;stroke-width:0.26458332"
d="m 85.95167,266.29651 h 2.716113 v 1.16995 h -4.485514 v -1.16995 l 2.253093,-1.98851 q 0.30179,-0.27285 0.446484,-0.5333 0.144694,-0.26045 0.144694,-0.54157 0,-0.43408 -0.293522,-0.69867 -0.289388,-0.26458 -0.77308,-0.26458 -0.37207,0 -0.81442,0.16123 -0.44235,0.1571 -0.946712,0.47129 v -1.35599 q 0.537435,-0.17777 1.062467,-0.26872 0.525033,-0.0951 1.029395,-0.0951 1.107942,0 1.719791,0.48782 0.615983,0.48783 0.615983,1.36013 0,0.50436 -0.260449,0.94257 -0.260449,0.43409 -1.09554,1.16582 z" />
</g>
<circle
r="5.4790254"
cy="264.66037"
cx="112.54932"
id="circle5584"
style="opacity:0.86699997;fill:#ff1900;fill-opacity:1;stroke:none;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:0.46499999, 0.92999999;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="text5588"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="3">
<path
id="path5630"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46666622px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;stroke-width:0.26458332"
d="m 113.38565,264.1385 q 0.62425,0.16123 0.94671,0.56224 0.3266,0.39687 0.3266,1.01286 0,0.91777 -0.7028,1.39733 -0.7028,0.47542 -2.05052,0.47542 -0.47543,0 -0.95498,-0.0786 -0.47543,-0.0744 -0.94258,-0.22737 v -1.22784 q 0.44648,0.22325 0.8847,0.339 0.44235,0.11162 0.86816,0.11162 0.63252,0 0.96738,-0.21911 0.339,-0.2191 0.339,-0.62838 0,-0.42168 -0.34726,-0.63665 -0.34314,-0.21911 -1.017,-0.21911 h -0.63665 v -1.02526 h 0.66973 q 0.59944,0 0.89297,-0.18604 0.29352,-0.19017 0.29352,-0.57464 0,-0.35553 -0.28526,-0.54984 -0.28525,-0.1943 -0.80615,-0.1943 -0.38447,0 -0.77721,0.0868 -0.39274,0.0868 -0.78135,0.25631 v -1.16582 q 0.47129,-0.13229 0.93431,-0.19844 0.46302,-0.0661 0.90951,-0.0661 1.20302,0 1.79834,0.39687 0.59944,0.39274 0.59944,1.18649 0,0.54157 -0.28525,0.88884 -0.28526,0.34313 -0.84336,0.48369 z" />
</g>
<circle
r="5.4790254"
cy="264.66037"
cx="140.06583"
id="circle5590"
style="opacity:0.86699997;fill:#ff1900;fill-opacity:1;stroke:none;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:0.46499999, 0.92999999;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="text5594"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="2">
<path
id="path5627"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46666622px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;stroke-width:0.26458332"
d="m 139.39739,266.29651 h 2.71612 v 1.16995 h -4.48552 v -1.16995 l 2.2531,-1.98851 q 0.30179,-0.27285 0.44648,-0.5333 0.14469,-0.26045 0.14469,-0.54157 0,-0.43408 -0.29352,-0.69867 -0.28939,-0.26458 -0.77308,-0.26458 -0.37207,0 -0.81442,0.16123 -0.44235,0.1571 -0.94671,0.47129 v -1.35599 q 0.53744,-0.17777 1.06247,-0.26872 0.52503,-0.0951 1.02939,-0.0951 1.10794,0 1.71979,0.48782 0.61599,0.48783 0.61599,1.36013 0,0.50436 -0.26045,0.94257 -0.26045,0.43409 -1.09554,1.16582 z" />
</g>
<circle
style="opacity:0.86699997;fill:#ff1900;fill-opacity:1;stroke:none;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:0.46499999, 0.92999999;stroke-dashoffset:0;stroke-opacity:1"
id="circle5596"
cx="170.75768"
cy="264.66037"
r="5.4790254" />
<g
id="text5600"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
aria-label="3">
<path
id="path5624"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46666622px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;stroke-width:0.26458332"
d="m 171.59402,264.1385 q 0.62425,0.16123 0.94671,0.56224 0.32659,0.39687 0.32659,1.01286 0,0.91777 -0.7028,1.39733 -0.7028,0.47542 -2.05052,0.47542 -0.47542,0 -0.95498,-0.0786 -0.47542,-0.0744 -0.94258,-0.22737 v -1.22784 q 0.44649,0.22325 0.8847,0.339 0.44235,0.11162 0.86817,0.11162 0.63252,0 0.96738,-0.21911 0.339,-0.2191 0.339,-0.62838 0,-0.42168 -0.34727,-0.63665 -0.34313,-0.21911 -1.01699,-0.21911 h -0.63665 v -1.02526 h 0.66972 q 0.59945,0 0.89297,-0.18604 0.29352,-0.19017 0.29352,-0.57464 0,-0.35553 -0.28525,-0.54984 -0.28525,-0.1943 -0.80615,-0.1943 -0.38447,0 -0.77722,0.0868 -0.39274,0.0868 -0.78134,0.25631 v -1.16582 q 0.47129,-0.13229 0.93431,-0.19844 0.46302,-0.0661 0.9095,-0.0661 1.20303,0 1.79834,0.39687 0.59945,0.39274 0.59945,1.18649 0,0.54157 -0.28526,0.88884 -0.28525,0.34313 -0.84335,0.48369 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,463 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="800.80908"
height="229.10162"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="tcp_connect.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path3816"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path3819"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path3813"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)" />
</marker>
<marker
inkscape:stockid="DotS"
orient="auto"
refY="0"
refX="0"
id="DotS"
style="overflow:visible">
<path
id="path3854"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path3795"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path3807"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path3789"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective3606"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3681"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3756"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4427"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5228"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5259"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5298"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5353"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5384"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5415"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5446"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5498"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5575"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5603"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="394.44528"
inkscape:cy="16.200833"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:snap-grids="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="952"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
objecttolerance="5"
guidetolerance="5">
<sodipodi:guide
position="0.4046008,-798.92901"
orientation="0,744.09448"
id="guide3620" />
<inkscape:grid
type="xygrid"
id="grid5523"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0.4046008,-24.331562)">
<rect
style="fill:#ff9191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80894977px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822-1"
width="299.81329"
height="180"
x="500.18671"
y="72.980232" />
<text
xml:space="preserve"
style="font-size:31.88286018px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="646.30457"
y="47.63348"
id="text3628"
transform="scale(1.003674,0.99633941)"><tspan
sodipodi:role="line"
id="tspan3630"
x="646.30457"
y="47.63348">Computer B</tspan></text>
<rect
style="fill:#98ff91;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8092016px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2822"
width="300"
height="180"
x="0"
y="72.980232" />
<text
xml:space="preserve"
style="font-size:39.8644371px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="149.39859"
y="47.647427"
id="text3632"
transform="scale(1.0040254,0.99599073)"><tspan
sodipodi:role="line"
id="tspan3634"
x="149.39859"
y="47.647427"
style="font-size:31.89155006px;text-align:center;text-anchor:middle">Computer A</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.90590757;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-3"
width="180"
height="180"
x="100"
y="72.980232"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="189.69531"
y="171.57007"
id="text5563"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565"
x="189.69531"
y="171.57007"
style="fill:#999999">ESTABLISHED</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.90590757;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect5206-2-7-3"
width="180"
height="180"
x="520"
y="72.980232"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="609.69531"
y="112.98023"
id="text5563-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5565-7"
x="609.69531"
y="112.98023"
style="fill:#999999">ESTABLISHED</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:4.31850767;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow2Mend)"
d="m 278.76392,104.72437 239.38196,46.74414"
id="path7641"
inkscape:connector-type="polyline" />
<path
style="fill:none;stroke:#000000;stroke-width:3.89279699;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
d="M 518.76392,184.72437 282.52784,223.21265"
id="path7643"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="409.44995"
y="49.387558"
id="text8431"
sodipodi:linespacing="125%"
transform="matrix(0.98542395,0.17011655,-0.17011655,0.98542395,0,0)"><tspan
sodipodi:role="line"
id="tspan8433"
x="409.44995"
y="49.387558"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8469">Data</tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8459"> seq=x <tspan
style="fill:#0000ff"
id="tspan8483">ack=y</tspan></tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="358.78629"
y="261.63596"
id="text8435"
sodipodi:linespacing="100%"
transform="matrix(0.98580839,-0.16787444,0.16787444,0.98580839,0,0)"><tspan
sodipodi:role="line"
id="tspan8437"
x="358.78629"
y="261.63596"><tspan
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="tspan8473">Ack</tspan><tspan
style="font-size:16px;fill:#ff0000"
id="tspan8457"><tspan
style="fill:#0000ff"
id="tspan8465"> seq=y</tspan> ack=x+n</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="274.49915"
y="102.98023"
id="text8485"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8487"
x="279.49133"
y="102.98023">Send n bytes </tspan><tspan
sodipodi:role="line"
x="274.49915"
y="125.48023"
id="tspan8501">of data</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="529.38196"
y="162.98022"
id="text8489"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8491"
x="529.38196"
y="162.98022">Receive n bytes </tspan><tspan
sodipodi:role="line"
x="529.38196"
y="185.48022"
id="tspan8499">of data</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
x="269.51086"
y="212.98022"
id="text8493"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8495"
x="274.50305"
y="212.98022">Know that data </tspan><tspan
sodipodi:role="line"
x="269.51086"
y="235.48022"
id="tspan8497">are received</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="89.444466"
y="92.980232"
id="text8503"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8505"
x="89.444466"
y="92.980232">write()</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Italic"
x="757.47571"
y="212.98022"
id="text8507"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8509"
x="757.47571"
y="212.98022">read()</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,143 @@
---
title: "Les protocoles"
categories: ["Réseau", "Cours"]
date: 2018-09-12
---
Les protocoles sont des conventions qui définissent des manières de communiquer.
En informatiquem on dénombre deux types de protocoles : binaires ou textuels.
Théoriquement, aucun protocole ne peut être parfait. Ceci peur être illustré par
,le théorême des deux armees :
> Soit des armées aui combattent, l'armée A, composée d'un seul soldat est
> assiégés par l'arméé B composée elle de deux soldats.
>
> Les deux soldats B sont de part-et d'autres du soldat de A qui possède un
> fusil. Pour assurer leurs victoire, les deux soldats B doivent attaquer de
> façon coodonnée. Utilisant des pigeons voyageurs, comment s'assurer de la bnne
> transmission des messages : le soldat A pourrait tuer le messager à tout
> moment (contenant le message ou la confirmation de bonne réception).
# La commutation de circuits
C'est le fonctionnement typique du réseau téléphonique jusque dans les années
60-70. les information échangées emprunte toujours le même chemin au sein du
réseau pour une session donnée. Son principal inconvénient est l'occupation de
la "route" même si aucune donnée ne transite (blanc).
Voir [la commutation de circuits][w_comm-cirk] sur Wikipedia
[w_comm-circ]:https://fr.wikipedia.org/wiki/Commutation_de_circuits
# La commutation de paquet
Apparue dans les années 70, il est ici question de découper l'information en
paquets contenant un entête pour l'acheminement, et de les faire transiter par
des routes aui peuvent être différentes. Il n'y a pas ici de réservation de
route, optimisant l'utilisation de la ressource.
En France, l'ingénieur [Louis Pouzin][w_l-pouzin] a inventé le datagramme qui
servira de base pour le réseau par commutation de paquest, puis pour le
protocole UDP et inspirera Vint Cerf pour la création de TCP-IP
Voir [la commutation de paquets][w_comm-pak] sur Wikipedia
[w_l-pouzin]:https://fr.wikipedia.org/wiki/Louis_Pouzin
[w_comm-pak]:https://fr.wikipedia.org/wiki/Commutation_de_paquets
# Les sommes de contrôles
Les *checksum* ou sommes de controles permettent de s'assurer de l'intégrité
d'un message reçu par le réseau. Ce n'est cependant pas un code de correction
d'erreur, le but ici est bien la détection (pour éventuellement demander à
l'expéditeur de renvoyer le message).
Dans notre quotidien, les sommes de contrôles sont utilisée pour les numéros
INSEE, les numéros de cartes bancaire etc.
Il sont là avant tout pour détecter des erreur non intentionnelle (fiabilité)
mais n'ont pas vocation à prévenir les erreur intentionnelles (sécurité)
Voir [les sommes de contrôles][w_checksum]
[w_checksum]:https://fr.wikipedia.org/wiki/Somme_de_contr%C3%B4le
# Le protocole TCP
TCP pour *Transmission Control Protocol* est un protocole de transport fiable de
l'information sur des réseau infomatique. Il correspond à la couche
**transport** du modèle OSI. Il fonctionne en trois phases :
- L'établissement d'une connection
- Le transfert des données
- La fin de connexion
## Etablissement d'une connexion
![Établissement d'une connexion TCP (source Wikipedia)](./images/Tcp_connect.svg)
Le serveur ouvre une *socket* et attends la demande de connexion du client
(attente passive). Le client initie une connexion active en trois temps :
- le client envoi un segment *SYN* au serveur.
- le serveur lui réponds par un segment *ACK + SYN*
- le client confirme par un segment *ACK*
Durant ces échanges, les numéros de séquences du serveur et du client sont
synchronisés. Le client utilise son numéro de séquence `x` pour son premier
segment *SYN*. Le serveur utilise son numéro de séquence `y` dans le segment
*ACK+SYN* et le numero d'aquitement `x + 1`. Le client confirme par un *ACK*
avec comme numéro de séquence `x + 1` et comme numéro d'aquittement `y + 1`.
## Tranfert de données
![Transfert de données TCP (source Wikipedia)](images/Tcp_talk.svg)
Lors du transfert de données, les numéros de séquences sont utilisés afn de
réordonner les paquets. Les aquitements servent à s'assurer de la transmission
des messages et les sommes de contrôles leurs intégrités.
- Le serveur envoi un paquet avec comme numéro de séquence `x` et est numero
d'aquittement `y` avec `z` octets
- le client réponds avec un sergment *ACK* avec comme numéro de séquence `x`
et comme numéro d'aquittenemt `y + z`
Les numéros de soéquences sont des nombres entiers non-signés codés sur 32bits
### temporisation
TCP utilise un mécanisme de temporisation et de retransmission. Après l'emvoi
d'un segment, TCP attendra un certain temps la confirmation par un *ACK*
correspondant.
## Terminaison d'une connexion
![Fin connexion TCP (source Wikipedia)](images/Tcp_close.svg)
La fin d'une connexion TCP se fait en quatre temps, chaque extremités de la
connexion envoyant un segment *FIN* et répondant à l'autre par un *ACK*
## Gestion des flux
Dans un espace réseau, comment les extremités (souvent le serveur) devinent la
vitesse de transmission des segments? En général prudemment : le serveur
commence à transferer les données lentement et augmente au fur et à mesure le
débit. Il inspecte alors les *ACK* et ajuste le débit en fonction des retours.
![Gestion de flux d'une connexion TCP (source Wikipedia)](images/Tcp_flux.svg)
1. la connexion démarre doucement, le débit augmente au fur et à mesure que les
*ACK* reviennent en temps et en heure.
2. les segments *ACK* n'arrivent pas à temps, le débit est diminué.
3. à partir du moment ou les segments *ACK* arrivent bien, le débit est aumenté
à nouveau progressivement.
4. on repasse à létape 2.
Il existre plusieurs algorithmes pour la gestion du débit : Reno, Vegas, Bil,
Cubil.
# Bibliographie
[TCP sur Wikipedia](https://fr.wikipedia.org/wiki/Transmission_Control_Protocol)

View file

@ -0,0 +1,904 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 214.13786 213.36129"
height="806.40491"
width="809.33997">
<defs
id="defs2">
<marker
orient="auto"
refY="0"
refX="0"
id="marker2896"
style="overflow:visible">
<path
id="path2894"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker2826"
style="overflow:visible">
<path
id="path2824"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mstart"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(0.4,0,0,0.4,4,0)"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path895" />
</marker>
<marker
style="overflow:visible"
id="marker2434"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path2432" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker2225"
style="overflow:visible">
<path
id="path2223"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6)" />
</marker>
<marker
style="overflow:visible"
id="marker2121"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path2119" />
</marker>
<marker
style="overflow:visible"
id="marker1807"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path1805" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker1635"
style="overflow:visible">
<path
id="path1633"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker1273"
style="overflow:visible">
<path
id="path1271"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6)" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Mend"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path916" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path910" />
</marker>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-0.56140107,-394.60786)"
id="layer1">
<rect
y="491.20468"
x="19.393324"
height="12.225417"
width="49.873222"
id="rect2097"
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<g
transform="translate(0,-3.1750001)"
id="text2107"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="TCP">
<path
id="path3636"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="M 41.218761,502.65164 H 40.306662 V 499.0977 H 39.22336 v -0.76156 h 3.075751 v 0.76156 h -1.08035 z" />
<path
id="path3638"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 44.619208,499.03571 q -0.262708,0 -0.466381,0.10332 -0.20072,0.10036 -0.339454,0.29222 -0.135782,0.18892 -0.206624,0.46343 -0.07084,0.27157 -0.07084,0.61102 0,0.34536 0.06199,0.61397 0.06494,0.26861 0.194818,0.45457 0.13283,0.18301 0.336502,0.28042 0.206625,0.0945 0.489995,0.0945 0.262708,0 0.525417,-0.059 0.265659,-0.059 0.575596,-0.16825 v 0.76746 q -0.141685,0.059 -0.280419,0.10036 -0.138733,0.0413 -0.28337,0.0679 -0.144637,0.0266 -0.29813,0.0384 -0.15054,0.0148 -0.324695,0.0148 -0.498851,0 -0.864871,-0.1594 -0.36602,-0.15939 -0.605114,-0.44867 -0.239094,-0.28927 -0.354214,-0.69662 -0.115119,-0.40734 -0.115119,-0.90619 0,-0.49 0.13283,-0.89734 0.13283,-0.4103 0.389635,-0.70548 0.256804,-0.29518 0.634632,-0.45752 0.377827,-0.1653 0.867822,-0.1653 0.321744,0 0.643488,0.0827 0.324695,0.0797 0.619873,0.22138 l -0.295178,0.74385 q -0.242046,-0.11512 -0.487043,-0.20072 -0.244998,-0.0856 -0.48114,-0.0856 z" />
<path
id="path3640"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 47.550323,500.36697 h 0.180058 q 0.386683,0 0.5815,-0.1535 0.197769,-0.15349 0.197769,-0.49885 0,-0.32174 -0.177106,-0.47523 -0.174155,-0.15349 -0.549031,-0.15349 h -0.23319 z m 1.886185,-0.68482 q 0,0.28337 -0.0856,0.54313 -0.0856,0.25976 -0.283371,0.45753 -0.194817,0.19777 -0.516561,0.31584 -0.318792,0.11807 -0.791076,0.11807 h -0.209576 v 1.53492 h -0.915051 v -4.3155 h 1.198421 q 0.416201,0 0.717282,0.0945 0.304033,0.0915 0.498851,0.26566 0.197769,0.1712 0.292226,0.4221 0.09446,0.24795 0.09446,0.56379 z" />
</g>
<path
id="path2109"
d="m 29.310708,501.71742 v 12.37107"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2121)" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)"
d="M 59.136975,515.38384 V 503.01277"
id="path2111" />
<rect
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2113"
width="49.873222"
height="12.225417"
x="19.999914"
y="516.97534" />
<g
transform="translate(0,-6.879167)"
id="text2117"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="IP">
<path
id="path3619"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 44.149876,532.12506 h -1.962932 v -0.51951 l 0.525416,-0.24205 v -2.79238 l -0.525416,-0.24204 v -0.51952 h 1.962932 v 0.51952 l -0.525417,0.24204 v 2.79238 l 0.525417,0.24205 z" />
<path
id="path3621"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 45.799919,529.84039 h 0.180058 q 0.386683,0 0.5815,-0.1535 0.19777,-0.15349 0.19777,-0.49885 0,-0.32174 -0.177107,-0.47523 -0.174155,-0.1535 -0.549031,-0.1535 h -0.23319 z m 1.886186,-0.68482 q 0,0.28337 -0.0856,0.54313 -0.0856,0.25976 -0.283371,0.45753 -0.194817,0.19776 -0.516561,0.31584 -0.318792,0.11807 -0.791076,0.11807 h -0.209576 v 1.53492 H 44.88487 v -4.3155 h 1.198422 q 0.4162,0 0.717281,0.0945 0.304033,0.0915 0.498851,0.26566 0.197769,0.1712 0.292226,0.4221 0.09446,0.24795 0.09446,0.56379 z" />
</g>
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2225)"
d="m 29.310708,527.48379 v 12.37107"
id="path2213" />
<path
id="path2215"
d="M 59.136975,541.15021 V 528.77914"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)" />
<rect
y="542.63239"
x="18.476799"
height="12.225417"
width="49.873222"
id="rect2217"
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<g
transform="translate(0,-10.583334)"
id="text2221"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="Ethernet">
<path
id="path3602"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 33.451161,561.59558 h -2.485396 v -4.3155 h 2.485396 v 0.74975 h -1.570345 v 0.94752 h 1.461129 v 0.74976 h -1.461129 v 1.11282 h 1.570345 z" />
<path
id="path3604"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 35.623669,560.93733 q 0.13283,0 0.250901,-0.0295 0.121023,-0.0295 0.244998,-0.0738 v 0.67006 q -0.126927,0.0649 -0.31584,0.10626 -0.185962,0.0443 -0.407346,0.0443 -0.215479,0 -0.401441,-0.0502 -0.185962,-0.0502 -0.321744,-0.17416 -0.135782,-0.12692 -0.21548,-0.3365 -0.07675,-0.21253 -0.07675,-0.53132 v -1.59101 h -0.430959 v -0.38078 l 0.495898,-0.30108 0.259757,-0.69662 h 0.575596 v 0.70252 h 0.802883 v 0.67596 h -0.802883 v 1.59101 q 0,0.19186 0.09446,0.28337 0.09446,0.0915 0.247949,0.0915 z" />
<path
id="path3606"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 39.649894,561.59558 h -0.900292 v -1.92751 q 0,-0.35716 -0.112168,-0.53427 -0.109216,-0.18006 -0.339454,-0.18006 -0.174155,0 -0.292226,0.0708 -0.118071,0.0708 -0.188914,0.20958 -0.07084,0.13873 -0.10036,0.34241 -0.02952,0.20367 -0.02952,0.46638 v 1.55263 h -0.90029 v -4.59296 h 0.900292 v 0.93571 q 0,0.12397 -0.0059,0.26271 -0.0059,0.13578 -0.01476,0.2509 -0.01181,0.13578 -0.02066,0.26566 h 0.04723 q 0.144637,-0.25681 0.368972,-0.36897 0.224335,-0.11512 0.507706,-0.11512 0.244998,0 0.442767,0.0708 0.200721,0.0679 0.342406,0.21548 0.141685,0.14759 0.218431,0.37783 0.07675,0.22728 0.07675,0.54608 z" />
<path
id="path3608"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 41.910955,558.87404 q -0.239094,0 -0.39849,0.16825 -0.156444,0.16826 -0.180058,0.52837 h 1.148241 q -0.003,-0.15054 -0.03837,-0.27747 -0.03542,-0.12692 -0.106264,-0.21843 -0.07084,-0.0944 -0.177107,-0.14759 -0.106264,-0.0531 -0.247949,-0.0531 z m 0.115119,2.78058 q -0.354213,0 -0.652342,-0.10332 -0.29813,-0.10331 -0.51361,-0.30993 -0.215479,-0.20958 -0.336502,-0.52542 -0.118071,-0.31879 -0.118071,-0.7468 0,-0.43391 0.109215,-0.7586 0.109216,-0.3247 0.304033,-0.54018 0.19777,-0.21843 0.472285,-0.32765 0.277467,-0.10921 0.613969,-0.10921 0.327648,0 0.590356,0.10036 0.26566,0.0974 0.44867,0.28927 0.185962,0.19187 0.283371,0.47229 0.10036,0.27746 0.10036,0.63758 v 0.43686 h -2.013112 q 0.0059,0.18892 0.05904,0.34241 0.05608,0.15054 0.153492,0.2568 0.10036,0.10332 0.239094,0.1594 0.141685,0.0561 0.321744,0.0561 0.15054,0 0.28337,-0.0148 0.135782,-0.0177 0.262708,-0.0502 0.126927,-0.0325 0.250901,-0.0797 0.123975,-0.0502 0.253853,-0.11512 v 0.69662 q -0.118071,0.062 -0.239094,0.10626 -0.118071,0.0413 -0.250901,0.0708 -0.13283,0.0295 -0.286322,0.0413 -0.153493,0.0148 -0.336503,0.0148 z" />
<path
id="path3610"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 45.816155,558.23351 q 0.03542,0 0.07675,0.003 0.04428,0 0.08265,0.006 0.04133,0.003 0.07379,0.009 0.03542,0.003 0.05313,0.009 v 0.84421 q -0.02361,-0.006 -0.06494,-0.0118 -0.04133,-0.006 -0.08855,-0.009 -0.04428,-0.006 -0.08855,-0.006 -0.04428,-0.003 -0.0738,-0.003 -0.174154,0 -0.321743,0.0443 -0.144637,0.0443 -0.250901,0.14464 -0.103312,0.0974 -0.162348,0.25975 -0.05608,0.1594 -0.05608,0.39259 v 1.67956 h -0.900292 v -3.30009 h 0.681861 l 0.13283,0.4959 h 0.04428 q 0.07084,-0.12692 0.153493,-0.23024 0.08265,-0.10331 0.18301,-0.17415 0.103312,-0.0738 0.230239,-0.11217 0.129878,-0.0413 0.295177,-0.0413 z" />
<path
id="path3612"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="M 49.579672,561.59558 H 48.67938 v -1.92751 q 0,-0.35716 -0.109216,-0.53427 -0.106264,-0.18006 -0.342406,-0.18006 -0.177107,0 -0.295178,0.0708 -0.118071,0.0708 -0.188914,0.20958 -0.06789,0.13873 -0.09741,0.34241 -0.02952,0.20367 -0.02952,0.46638 v 1.55263 h -0.900292 v -3.30009 h 0.687764 l 0.121023,0.42211 h 0.05018 q 0.07084,-0.12693 0.171203,-0.21843 0.103312,-0.0915 0.224335,-0.15054 0.121023,-0.059 0.256805,-0.0856 0.135781,-0.0295 0.277467,-0.0295 0.242045,0 0.439815,0.0708 0.197769,0.0679 0.339454,0.21548 0.141685,0.14759 0.218431,0.37783 0.07675,0.22728 0.07675,0.54608 z" />
<path
id="path3614"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 51.840732,558.87404 q -0.239094,0 -0.39849,0.16825 -0.156444,0.16826 -0.180058,0.52837 h 1.148241 q -0.003,-0.15054 -0.03837,-0.27747 -0.03542,-0.12692 -0.106264,-0.21843 -0.07084,-0.0944 -0.177107,-0.14759 -0.106264,-0.0531 -0.247949,-0.0531 z m 0.115119,2.78058 q -0.354213,0 -0.652342,-0.10332 -0.29813,-0.10331 -0.51361,-0.30993 -0.215479,-0.20958 -0.336502,-0.52542 -0.118071,-0.31879 -0.118071,-0.7468 0,-0.43391 0.109216,-0.7586 0.109215,-0.3247 0.304033,-0.54018 0.197769,-0.21843 0.472284,-0.32765 0.277467,-0.10921 0.61397,-0.10921 0.327647,0 0.590355,0.10036 0.26566,0.0974 0.44867,0.28927 0.185962,0.19187 0.283371,0.47229 0.10036,0.27746 0.10036,0.63758 v 0.43686 h -2.013112 q 0.0059,0.18892 0.05904,0.34241 0.05608,0.15054 0.153492,0.2568 0.100361,0.10332 0.239094,0.1594 0.141685,0.0561 0.321744,0.0561 0.15054,0 0.28337,-0.0148 0.135782,-0.0177 0.262708,-0.0502 0.126927,-0.0325 0.250902,-0.0797 0.123974,-0.0502 0.253852,-0.11512 v 0.69662 q -0.118071,0.062 -0.239094,0.10626 -0.118071,0.0413 -0.250901,0.0708 -0.13283,0.0295 -0.286322,0.0413 -0.153492,0.0148 -0.336503,0.0148 z" />
<path
id="path3616"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 55.365154,560.93733 q 0.13283,0 0.250901,-0.0295 0.121023,-0.0295 0.244998,-0.0738 v 0.67006 q -0.126927,0.0649 -0.31584,0.10626 -0.185962,0.0443 -0.407346,0.0443 -0.215479,0 -0.401441,-0.0502 -0.185962,-0.0502 -0.321744,-0.17416 -0.135782,-0.12692 -0.21548,-0.3365 -0.07675,-0.21253 -0.07675,-0.53132 v -1.59101 h -0.430959 v -0.38078 l 0.495898,-0.30108 0.259756,-0.69662 h 0.575597 v 0.70252 h 0.802883 v 0.67596 h -0.802883 v 1.59101 q 0,0.19186 0.09446,0.28337 0.09446,0.0915 0.247949,0.0915 z" />
</g>
<rect
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2357"
width="49.873222"
height="12.225417"
x="137.27548"
y="491.20468" />
<g
transform="translate(0,-3.1750001)"
id="text2363"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="TCP">
<path
id="path3629"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 159.10086,502.65164 h -0.9121 v -3.55394 h -1.0833 v -0.76156 h 3.07575 v 0.76156 h -1.08035 z" />
<path
id="path3631"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 162.50131,499.03571 q -0.26271,0 -0.46638,0.10332 -0.20072,0.10036 -0.33946,0.29222 -0.13578,0.18892 -0.20662,0.46343 -0.0708,0.27157 -0.0708,0.61102 0,0.34536 0.062,0.61397 0.0649,0.26861 0.19482,0.45457 0.13283,0.18301 0.3365,0.28042 0.20663,0.0945 0.49,0.0945 0.26271,0 0.52541,-0.059 0.26566,-0.059 0.5756,-0.16825 v 0.76746 q -0.14169,0.059 -0.28042,0.10036 -0.13873,0.0413 -0.28337,0.0679 -0.14464,0.0266 -0.29813,0.0384 -0.15054,0.0148 -0.32469,0.0148 -0.49885,0 -0.86487,-0.1594 -0.36603,-0.15939 -0.60512,-0.44867 -0.23909,-0.28927 -0.35421,-0.69662 -0.11512,-0.40734 -0.11512,-0.90619 0,-0.49 0.13283,-0.89734 0.13283,-0.4103 0.38963,-0.70548 0.25681,-0.29518 0.63463,-0.45752 0.37783,-0.1653 0.86783,-0.1653 0.32174,0 0.64348,0.0827 0.3247,0.0797 0.61988,0.22138 l -0.29518,0.74385 q -0.24205,-0.11512 -0.48704,-0.20072 -0.245,-0.0856 -0.48114,-0.0856 z" />
<path
id="path3633"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 165.43242,500.36697 h 0.18006 q 0.38668,0 0.5815,-0.1535 0.19777,-0.15349 0.19777,-0.49885 0,-0.32174 -0.17711,-0.47523 -0.17415,-0.15349 -0.54903,-0.15349 h -0.23319 z m 1.88619,-0.68482 q 0,0.28337 -0.0856,0.54313 -0.0856,0.25976 -0.28337,0.45753 -0.19482,0.19777 -0.51657,0.31584 -0.31879,0.11807 -0.79107,0.11807 h -0.20958 v 1.53492 h -0.91505 v -4.3155 h 1.19842 q 0.4162,0 0.71728,0.0945 0.30404,0.0915 0.49885,0.26566 0.19777,0.1712 0.29223,0.4221 0.0945,0.24795 0.0945,0.56379 z" />
</g>
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2121)"
d="m 147.19292,501.71742 v 12.37107"
id="path2365" />
<path
id="path2367"
d="M 177.01918,515.38384 V 503.01277"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)" />
<rect
y="516.97534"
x="137.88206"
height="12.225417"
width="49.873222"
id="rect2369"
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<g
transform="translate(0,-6.879167)"
id="text2373"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="IP">
<path
id="path3624"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 162.03197,532.12506 h -1.96293 v -0.51951 l 0.52542,-0.24205 v -2.79238 l -0.52542,-0.24204 v -0.51952 h 1.96293 v 0.51952 l -0.52542,0.24204 v 2.79238 l 0.52542,0.24205 z" />
<path
id="path3626"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 163.68201,529.84039 h 0.18006 q 0.38669,0 0.5815,-0.1535 0.19777,-0.15349 0.19777,-0.49885 0,-0.32174 -0.1771,-0.47523 -0.17416,-0.1535 -0.54904,-0.1535 h -0.23319 z m 1.88619,-0.68482 q 0,0.28337 -0.0856,0.54313 -0.0856,0.25976 -0.28337,0.45753 -0.19482,0.19776 -0.51656,0.31584 -0.3188,0.11807 -0.79108,0.11807 h -0.20958 v 1.53492 h -0.91505 v -4.3155 h 1.19842 q 0.41621,0 0.71729,0.0945 0.30403,0.0915 0.49885,0.26566 0.19777,0.1712 0.29222,0.4221 0.0945,0.24795 0.0945,0.56379 z" />
</g>
<path
id="path2375"
d="m 147.19292,527.48379 v 12.37107"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2225)" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)"
d="M 177.01918,541.15021 V 528.77914"
id="path2377" />
<rect
style="opacity:1;fill:#318e34;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2379"
width="49.873222"
height="12.225417"
x="136.35896"
y="542.63239" />
<g
transform="translate(0,-10.583334)"
id="text2383"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="Ethernet">
<path
id="path3585"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 151.33329,561.59558 h -2.4854 v -4.3155 h 2.4854 v 0.74975 h -1.57035 v 0.94752 h 1.46113 v 0.74976 h -1.46113 v 1.11282 h 1.57035 z" />
<path
id="path3587"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 153.5058,560.93733 q 0.13283,0 0.2509,-0.0295 0.12102,-0.0295 0.24499,-0.0738 v 0.67006 q -0.12692,0.0649 -0.31584,0.10626 -0.18596,0.0443 -0.40734,0.0443 -0.21548,0 -0.40144,-0.0502 -0.18597,-0.0502 -0.32175,-0.17416 -0.13578,-0.12692 -0.21548,-0.3365 -0.0767,-0.21253 -0.0767,-0.53132 v -1.59101 h -0.43096 v -0.38078 l 0.4959,-0.30108 0.25975,-0.69662 h 0.5756 v 0.70252 h 0.80288 v 0.67596 h -0.80288 v 1.59101 q 0,0.19186 0.0945,0.28337 0.0945,0.0915 0.24795,0.0915 z" />
<path
id="path3589"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 157.53202,561.59558 h -0.90029 v -1.92751 q 0,-0.35716 -0.11217,-0.53427 -0.10922,-0.18006 -0.33945,-0.18006 -0.17416,0 -0.29223,0.0708 -0.11807,0.0708 -0.18891,0.20958 -0.0709,0.13873 -0.10036,0.34241 -0.0295,0.20367 -0.0295,0.46638 v 1.55263 h -0.90029 v -4.59296 h 0.90029 v 0.93571 q 0,0.12397 -0.006,0.26271 -0.006,0.13578 -0.0147,0.2509 -0.0118,0.13578 -0.0207,0.26566 h 0.0472 q 0.14464,-0.25681 0.36897,-0.36897 0.22434,-0.11512 0.50771,-0.11512 0.245,0 0.44277,0.0708 0.20072,0.0679 0.3424,0.21548 0.14169,0.14759 0.21843,0.37783 0.0767,0.22728 0.0767,0.54608 z" />
<path
id="path3591"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 159.79308,558.87404 q -0.23909,0 -0.39849,0.16825 -0.15644,0.16826 -0.18006,0.52837 h 1.14824 q -0.003,-0.15054 -0.0384,-0.27747 -0.0354,-0.12692 -0.10626,-0.21843 -0.0709,-0.0944 -0.17711,-0.14759 -0.10626,-0.0531 -0.24795,-0.0531 z m 0.11512,2.78058 q -0.35421,0 -0.65234,-0.10332 -0.29813,-0.10331 -0.51361,-0.30993 -0.21548,-0.20958 -0.3365,-0.52542 -0.11808,-0.31879 -0.11808,-0.7468 0,-0.43391 0.10922,-0.7586 0.10922,-0.3247 0.30403,-0.54018 0.19777,-0.21843 0.47229,-0.32765 0.27746,-0.10921 0.61397,-0.10921 0.32764,0 0.59035,0.10036 0.26566,0.0974 0.44867,0.28927 0.18596,0.19187 0.28337,0.47229 0.10036,0.27746 0.10036,0.63758 v 0.43686 h -2.01311 q 0.006,0.18892 0.059,0.34241 0.0561,0.15054 0.15349,0.2568 0.10036,0.10332 0.23909,0.1594 0.14169,0.0561 0.32175,0.0561 0.15054,0 0.28337,-0.0148 0.13578,-0.0177 0.26271,-0.0502 0.12692,-0.0325 0.2509,-0.0797 0.12397,-0.0502 0.25385,-0.11512 v 0.69662 q -0.11807,0.062 -0.23909,0.10626 -0.11807,0.0413 -0.2509,0.0708 -0.13283,0.0295 -0.28633,0.0413 -0.15349,0.0148 -0.3365,0.0148 z" />
<path
id="path3593"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 163.69828,558.23351 q 0.0354,0 0.0767,0.003 0.0443,0 0.0827,0.006 0.0413,0.003 0.0738,0.009 0.0354,0.003 0.0531,0.009 v 0.84421 q -0.0236,-0.006 -0.0649,-0.0118 -0.0413,-0.006 -0.0885,-0.009 -0.0443,-0.006 -0.0885,-0.006 -0.0443,-0.003 -0.0738,-0.003 -0.17415,0 -0.32174,0.0443 -0.14464,0.0443 -0.2509,0.14464 -0.10331,0.0974 -0.16235,0.25975 -0.0561,0.1594 -0.0561,0.39259 v 1.67956 h -0.90029 v -3.30009 h 0.68186 l 0.13283,0.4959 h 0.0443 q 0.0708,-0.12692 0.15349,-0.23024 0.0827,-0.10331 0.18301,-0.17415 0.10332,-0.0738 0.23024,-0.11217 0.12988,-0.0413 0.29518,-0.0413 z" />
<path
id="path3595"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 167.4618,561.59558 h -0.90029 v -1.92751 q 0,-0.35716 -0.10922,-0.53427 -0.10626,-0.18006 -0.34241,-0.18006 -0.1771,0 -0.29517,0.0708 -0.11808,0.0708 -0.18892,0.20958 -0.0679,0.13873 -0.0974,0.34241 -0.0295,0.20367 -0.0295,0.46638 v 1.55263 h -0.9003 v -3.30009 h 0.68777 l 0.12102,0.42211 h 0.0502 q 0.0708,-0.12693 0.1712,-0.21843 0.10332,-0.0915 0.22434,-0.15054 0.12102,-0.059 0.2568,-0.0856 0.13579,-0.0295 0.27747,-0.0295 0.24205,0 0.43982,0.0708 0.19776,0.0679 0.33945,0.21548 0.14169,0.14759 0.21843,0.37783 0.0768,0.22728 0.0768,0.54608 z" />
<path
id="path3597"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 169.72286,558.87404 q -0.2391,0 -0.39849,0.16825 -0.15645,0.16826 -0.18006,0.52837 h 1.14824 q -0.003,-0.15054 -0.0384,-0.27747 -0.0354,-0.12692 -0.10627,-0.21843 -0.0708,-0.0944 -0.1771,-0.14759 -0.10627,-0.0531 -0.24795,-0.0531 z m 0.11512,2.78058 q -0.35422,0 -0.65235,-0.10332 -0.29812,-0.10331 -0.5136,-0.30993 -0.21548,-0.20958 -0.33651,-0.52542 -0.11807,-0.31879 -0.11807,-0.7468 0,-0.43391 0.10922,-0.7586 0.10921,-0.3247 0.30403,-0.54018 0.19777,-0.21843 0.47228,-0.32765 0.27747,-0.10921 0.61397,-0.10921 0.32765,0 0.59036,0.10036 0.26566,0.0974 0.44867,0.28927 0.18596,0.19187 0.28337,0.47229 0.10036,0.27746 0.10036,0.63758 v 0.43686 h -2.01311 q 0.006,0.18892 0.059,0.34241 0.0561,0.15054 0.1535,0.2568 0.10036,0.10332 0.23909,0.1594 0.14169,0.0561 0.32174,0.0561 0.15055,0 0.28338,-0.0148 0.13578,-0.0177 0.2627,-0.0502 0.12693,-0.0325 0.2509,-0.0797 0.12398,-0.0502 0.25386,-0.11512 v 0.69662 q -0.11807,0.062 -0.2391,0.10626 -0.11807,0.0413 -0.2509,0.0708 -0.13283,0.0295 -0.28632,0.0413 -0.15349,0.0148 -0.3365,0.0148 z" />
<path
id="path3599"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.04523945px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 173.24728,560.93733 q 0.13283,0 0.2509,-0.0295 0.12102,-0.0295 0.245,-0.0738 v 0.67006 q -0.12693,0.0649 -0.31584,0.10626 -0.18596,0.0443 -0.40735,0.0443 -0.21548,0 -0.40144,-0.0502 -0.18596,-0.0502 -0.32174,-0.17416 -0.13578,-0.12692 -0.21548,-0.3365 -0.0768,-0.21253 -0.0768,-0.53132 v -1.59101 h -0.43096 v -0.38078 l 0.4959,-0.30108 0.25976,-0.69662 h 0.57559 v 0.70252 h 0.80289 v 0.67596 h -0.80289 v 1.59101 q 0,0.19186 0.0945,0.28337 0.0945,0.0915 0.24795,0.0915 z" />
</g>
<path
id="path2385"
d="m 107.40526,571.15664 a 8.193828,8.297547 0 0 0 -7.500557,4.96881 4.5117915,4.9785288 0 0 0 -2.612156,-0.9238 4.5117915,4.9785288 0 0 0 -4.302499,3.4837 4.0450544,3.733896 0 0 0 -1.972516,-0.47579 4.0450544,3.733896 0 0 0 -4.045017,3.73388 4.0450544,3.733896 0 0 0 0.354658,1.51759 13.846532,6.8973364 0 0 0 -1.331082,2.38814 10.734952,7.1566348 0 0 0 -2.913062,-0.27555 10.734952,7.1566348 0 0 0 -10.734965,7.15661 10.734952,7.1566348 0 0 0 0.01674,0.31545 7.3640739,3.8894755 0 0 0 -4.995268,3.67782 7.3640739,3.8894755 0 0 0 4.436665,3.56712 5.3934057,3.7857559 0 0 0 5.209244,2.81157 5.3934057,3.7857559 0 0 0 2.992782,-0.63961 6.3268792,4.1487735 0 0 0 4.682442,1.36568 6.3268792,4.1487735 0 0 0 4.214264,-1.06107 10.631232,5.6527039 0 0 0 6.9355,1.37221 10.631232,5.6527039 0 0 0 6.984957,-1.40058 6.27502,3.5264578 0 0 0 5.6689,2.02286 6.27502,3.5264578 0 0 0 4.96148,-1.3744 5.2378276,3.6301768 0 0 0 1.36537,0.12984 5.2378276,3.6301768 0 0 0 5.23784,-3.63019 5.2378276,3.6301768 0 0 0 -0.008,-0.1492 20.27713,5.963862 0 0 0 1.84497,-0.49403 7.4677918,4.8229494 0 0 0 6.14899,2.09525 7.4677918,4.8229494 0 0 0 7.46783,-4.82291 7.4677918,4.8229494 0 0 0 -0.2636,-1.26582 4.9785288,4.3562124 0 0 0 1.19713,-2.83113 4.9785288,4.3562124 0 0 0 -2.1e-4,-0.006 5.9120028,3.3190189 0 0 0 3.83776,-3.10618 5.9120028,3.3190189 0 0 0 -4.25378,-3.18349 4.2006335,2.3336851 0 0 0 -4.19932,-2.31364 4.2006335,2.3336851 0 0 0 -1.21257,0.10144 8.297547,9.3347402 0 0 0 -7.55177,-5.49482 8.297547,9.3347402 0 0 0 -3.64492,0.95578 4.6155111,3.3190189 0 0 0 -4.11079,-2.09034 8.193828,8.297547 0 0 0 -7.90582,-6.12582 z"
style="opacity:1;fill:none;fill-opacity:0.99843014;stroke:#000000;stroke-width:1.12329447;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<path
id="path2430"
d="m 43.052891,555.37553 c -2.28998,38.92967 32.746716,41.44866 32.746716,41.44866"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#marker2434)" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker2826);marker-end:url(#marker2896)"
d="m 160.71758,555.37553 c 2.28998,38.92967 -32.74672,41.44866 -32.74672,41.44866"
id="path2822" />
<path
id="path815"
d="M 3.2072344,441.08073 H 212.05344"
style="fill:none;stroke:#ff0000;stroke-width:0.79897124;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.59794249, 1.59794249;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="text819"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.36316156px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13407904"
aria-label="Espace noyau">
<path
id="path3813"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 88.203298,447.56152 h -2.204972 v -3.82858 h 2.204972 v 0.66516 h -1.393165 v 0.84061 h 1.296272 v 0.66516 h -1.296272 v 0.98726 h 1.393165 z" />
<path
id="path3815"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 90.892735,446.6921 q 0,0.23045 -0.0838,0.40329 -0.0838,0.17284 -0.238304,0.28806 -0.154505,0.11522 -0.374479,0.17284 -0.219973,0.0576 -0.492321,0.0576 -0.14403,0 -0.267111,-0.0105 -0.12308,-0.008 -0.233067,-0.0288 -0.109987,-0.0209 -0.212117,-0.0524 -0.102131,-0.0314 -0.20688,-0.0786 v -0.65992 q 0.109987,0.055 0.230449,0.0995 0.12308,0.0445 0.243542,0.0786 0.120461,0.0314 0.233067,0.0498 0.115224,0.0183 0.212117,0.0183 0.107368,0 0.183311,-0.0183 0.07594,-0.021 0.12308,-0.055 0.04976,-0.0367 0.07071,-0.0838 0.02357,-0.0498 0.02357,-0.10475 0,-0.055 -0.01833,-0.0969 -0.01571,-0.0445 -0.07594,-0.0917 -0.06023,-0.0498 -0.178073,-0.10999 -0.115225,-0.0629 -0.311629,-0.15188 -0.191168,-0.0864 -0.332579,-0.17022 -0.138793,-0.0864 -0.230449,-0.19117 -0.08904,-0.10475 -0.133555,-0.2383 -0.04452,-0.13618 -0.04452,-0.32211 0,-0.20426 0.07856,-0.35614 0.07856,-0.15451 0.222592,-0.25664 0.14403,-0.10213 0.345672,-0.15189 0.204261,-0.0524 0.453041,-0.0524 0.261873,0 0.497559,0.0602 0.235686,0.0602 0.484465,0.18069 l -0.240923,0.56565 q -0.199024,-0.0943 -0.379716,-0.15451 -0.180693,-0.0602 -0.361385,-0.0602 -0.162362,0 -0.235686,0.0576 -0.07071,0.0576 -0.07071,0.15713 0,0.0524 0.01833,0.0943 0.01833,0.0393 0.07333,0.0838 0.05499,0.0419 0.154505,0.0943 0.09951,0.0498 0.259254,0.12308 0.18593,0.0812 0.335198,0.16236 0.149268,0.0786 0.256636,0.18069 0.107368,0.10213 0.16498,0.2383 0.05761,0.13618 0.05761,0.32996 z" />
<path
id="path3817"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 93.058426,447.6139 q -0.144031,0 -0.259255,-0.0314 -0.112605,-0.0314 -0.201642,-0.0838 -0.08904,-0.0524 -0.157124,-0.11784 -0.06809,-0.0681 -0.12308,-0.14141 h -0.0419 q 0.01047,0.0917 0.02095,0.17284 0.0079,0.0681 0.01309,0.14141 0.0079,0.0707 0.0079,0.10998 v 1.18629 h -0.798713 v -4.21616 h 0.649445 l 0.112605,0.37972 h 0.03666 q 0.05499,-0.089 0.125699,-0.1676 0.07071,-0.0786 0.162361,-0.13617 0.09427,-0.0602 0.212117,-0.0943 0.117843,-0.0367 0.261873,-0.0367 0.22783,0 0.41376,0.0969 0.18593,0.0969 0.319485,0.28806 0.133555,0.19117 0.20688,0.47399 0.07332,0.28283 0.07332,0.65469 0,0.37447 -0.07594,0.65992 -0.07594,0.28282 -0.214736,0.4766 -0.136174,0.19117 -0.327341,0.28807 -0.188549,0.0969 -0.416378,0.0969 z m -0.24878,-2.39614 q -0.133555,0 -0.22783,0.0498 -0.09166,0.0471 -0.149267,0.14404 -0.05761,0.0969 -0.0838,0.24616 -0.02619,0.14664 -0.03142,0.34305 v 0.0864 q 0,0.21211 0.02357,0.3771 0.02619,0.16498 0.0838,0.27758 0.05761,0.10999 0.151886,0.1676 0.09689,0.0576 0.238305,0.0576 0.238304,0 0.348291,-0.22521 0.112605,-0.22783 0.112605,-0.65992 0,-0.43209 -0.112605,-0.64683 -0.109987,-0.21735 -0.353529,-0.21735 z" />
<path
id="path3819"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 96.47587,447.56152 -0.154506,-0.39804 h -0.02357 q -0.08642,0.11784 -0.172836,0.20426 -0.08642,0.0838 -0.188549,0.13879 -0.102131,0.055 -0.230448,0.0812 -0.125699,0.0262 -0.293298,0.0262 -0.178074,0 -0.32996,-0.055 -0.151887,-0.0576 -0.264492,-0.17021 -0.109987,-0.11523 -0.172837,-0.28806 -0.06285,-0.17546 -0.06285,-0.41376 0,-0.46614 0.298535,-0.68611 0.298536,-0.22259 0.892988,-0.24616 l 0.466134,-0.0157 v -0.21998 q 0,-0.18069 -0.104749,-0.26711 -0.10475,-0.0864 -0.293298,-0.0864 -0.188549,0 -0.369241,0.055 -0.178074,0.055 -0.358767,0.14665 l -0.259254,-0.52899 q 0.219973,-0.12308 0.487084,-0.19378 0.267111,-0.0707 0.560408,-0.0707 0.547315,0 0.837994,0.25664 0.293298,0.25663 0.293298,0.78038 v 1.95095 z m -0.235686,-1.3565 -0.264492,0.0105 q -0.159743,0.005 -0.269729,0.0419 -0.109987,0.0367 -0.178074,0.0995 -0.06547,0.0602 -0.09689,0.14665 -0.02881,0.0838 -0.02881,0.18854 0,0.18332 0.08904,0.26188 0.08904,0.0759 0.233067,0.0759 0.109986,0 0.204261,-0.0367 0.09427,-0.0393 0.162361,-0.11261 0.07071,-0.0759 0.109987,-0.18331 0.03928,-0.10998 0.03928,-0.2514 z" />
<path
id="path3821"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 99.073651,447.6139 q -0.314248,0 -0.568265,-0.0864 -0.251398,-0.0864 -0.43209,-0.26711 -0.178074,-0.18331 -0.274967,-0.46613 -0.09427,-0.28545 -0.09427,-0.68087 0,-0.43733 0.09689,-0.73063 0.09951,-0.29592 0.277585,-0.47399 0.180693,-0.17808 0.432091,-0.25402 0.254017,-0.0759 0.563027,-0.0759 0.225211,0 0.447803,0.055 0.222592,0.055 0.418997,0.15451 l -0.230448,0.60754 q -0.172837,-0.0759 -0.332579,-0.12308 -0.159743,-0.0497 -0.303773,-0.0497 -0.290679,0 -0.421616,0.22259 -0.130936,0.21997 -0.130936,0.66254 0,0.43994 0.130936,0.64944 0.130937,0.2095 0.411141,0.2095 0.22783,0 0.41376,-0.0576 0.18593,-0.0602 0.379716,-0.15189 v 0.66516 q -0.09689,0.0471 -0.188549,0.0838 -0.09166,0.0367 -0.18593,0.0602 -0.09166,0.0236 -0.193786,0.034 -0.09951,0.0131 -0.214736,0.0131 z" />
<path
id="path3823"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 101.72119,445.14705 q -0.21212,0 -0.35353,0.14927 -0.13879,0.14927 -0.15974,0.46875 h 1.01868 q -0.003,-0.13355 -0.034,-0.24616 -0.0314,-0.1126 -0.0943,-0.19378 -0.0629,-0.0838 -0.15713,-0.13094 -0.0943,-0.0471 -0.21997,-0.0471 z m 0.10213,2.46685 q -0.31425,0 -0.57874,-0.0917 -0.26449,-0.0917 -0.45566,-0.27496 -0.19117,-0.18593 -0.29854,-0.46614 -0.10474,-0.28282 -0.10474,-0.66254 0,-0.38495 0.0969,-0.67301 0.0969,-0.28806 0.26973,-0.47923 0.17545,-0.19379 0.41899,-0.29068 0.24617,-0.0969 0.5447,-0.0969 0.29068,0 0.52375,0.089 0.23568,0.0864 0.39804,0.25663 0.16498,0.17022 0.2514,0.419 0.089,0.24616 0.089,0.56564 v 0.38758 h -1.78598 q 0.005,0.1676 0.0524,0.30377 0.0498,0.13355 0.13617,0.22783 0.089,0.0917 0.21212,0.14141 0.1257,0.0498 0.28544,0.0498 0.13356,0 0.2514,-0.0131 0.12046,-0.0157 0.23307,-0.0445 0.1126,-0.0288 0.22259,-0.0707 0.10999,-0.0445 0.22521,-0.10213 v 0.61802 q -0.10475,0.055 -0.21212,0.0943 -0.10475,0.0367 -0.22259,0.0629 -0.11784,0.0262 -0.25402,0.0367 -0.13617,0.0131 -0.29853,0.0131 z" />
<path
id="path3825"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 107.59238,447.56152 h -0.79871 v -1.71003 q 0,-0.31686 -0.0969,-0.47399 -0.0943,-0.15974 -0.30378,-0.15974 -0.15712,0 -0.26187,0.0629 -0.10475,0.0628 -0.1676,0.18593 -0.0602,0.12308 -0.0864,0.30377 -0.0262,0.18069 -0.0262,0.41376 v 1.37745 h -0.79872 v -2.92774 h 0.61017 l 0.10737,0.37448 h 0.0445 q 0.0628,-0.1126 0.15189,-0.19379 0.0917,-0.0812 0.19902,-0.13355 0.10737,-0.0524 0.22783,-0.0759 0.12047,-0.0262 0.24616,-0.0262 0.21474,0 0.3902,0.0628 0.17545,0.0602 0.30115,0.19117 0.1257,0.13093 0.19379,0.33519 0.0681,0.20165 0.0681,0.48447 z" />
<path
id="path3827"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 109.07982,446.09242 q 0,0.43732 0.12308,0.65992 0.12308,0.21997 0.40067,0.21997 0.27497,0 0.39805,-0.22259 0.12308,-0.2226 0.12308,-0.6573 0,-0.43733 -0.12308,-0.65207 -0.12308,-0.21735 -0.40329,-0.21735 -0.27496,0 -0.39805,0.21735 -0.12046,0.21474 -0.12046,0.65207 z m 1.8593,0 q 0,0.36662 -0.0943,0.64944 -0.0917,0.28282 -0.26711,0.47661 -0.17284,0.19379 -0.42424,0.29592 -0.24878,0.0995 -0.56041,0.0995 -0.29067,0 -0.53422,-0.0995 -0.24354,-0.10213 -0.42161,-0.29592 -0.17546,-0.19379 -0.27497,-0.47661 -0.0995,-0.28282 -0.0995,-0.64944 0,-0.36401 0.0916,-0.64683 0.0943,-0.28282 0.26712,-0.47399 0.17545,-0.19379 0.42423,-0.2933 0.24878,-0.0995 0.56303,-0.0995 0.29068,0 0.53422,0.0995 0.24354,0.0995 0.419,0.2933 0.17807,0.19117 0.27758,0.47399 0.0995,0.28282 0.0995,0.64683 z" />
<path
id="path3829"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 111.21147,444.63378 h 0.87466 l 0.47137,1.64718 q 0.0419,0.13618 0.0602,0.29068 0.0209,0.15451 0.0262,0.27759 h 0.0157 q 0.005,-0.0602 0.0131,-0.13356 0.0105,-0.0733 0.0236,-0.14926 0.0131,-0.076 0.0288,-0.14927 0.0183,-0.076 0.0367,-0.13618 l 0.4609,-1.64718 h 0.87989 l -1.15748,3.30222 q -0.16236,0.46352 -0.44257,0.68873 -0.2802,0.22521 -0.70182,0.22521 -0.13617,0 -0.23568,-0.0157 -0.0995,-0.0131 -0.17022,-0.0288 v -0.63373 q 0.055,0.0131 0.13879,0.0236 0.0838,0.0105 0.17546,0.0105 0.1257,0 0.21473,-0.034 0.089,-0.0341 0.15189,-0.0969 0.0655,-0.0602 0.10999,-0.14664 0.0471,-0.0864 0.0812,-0.19379 l 0.0498,-0.14665 z" />
<path
id="path3831"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 116.2211,447.56152 -0.1545,-0.39804 h -0.0236 q -0.0864,0.11784 -0.17284,0.20426 -0.0864,0.0838 -0.18854,0.13879 -0.10214,0.055 -0.23045,0.0812 -0.1257,0.0262 -0.2933,0.0262 -0.17807,0 -0.32996,-0.055 -0.15189,-0.0576 -0.26449,-0.17021 -0.10999,-0.11523 -0.17284,-0.28806 -0.0628,-0.17546 -0.0628,-0.41376 0,-0.46614 0.29854,-0.68611 0.29853,-0.22259 0.89298,-0.24616 l 0.46614,-0.0157 v -0.21998 q 0,-0.18069 -0.10475,-0.26711 -0.10475,-0.0864 -0.2933,-0.0864 -0.18855,0 -0.36924,0.055 -0.17807,0.055 -0.35877,0.14665 l -0.25925,-0.52899 q 0.21997,-0.12308 0.48708,-0.19378 0.26711,-0.0707 0.56041,-0.0707 0.54732,0 0.838,0.25664 0.29329,0.25663 0.29329,0.78038 v 1.95095 z m -0.23568,-1.3565 -0.26449,0.0105 q -0.15975,0.005 -0.26973,0.0419 -0.10999,0.0367 -0.17808,0.0995 -0.0655,0.0602 -0.0969,0.14665 -0.0288,0.0838 -0.0288,0.18854 0,0.18332 0.089,0.26188 0.089,0.0759 0.23307,0.0759 0.10998,0 0.20426,-0.0367 0.0943,-0.0393 0.16236,-0.11261 0.0707,-0.0759 0.10999,-0.18331 0.0393,-0.10998 0.0393,-0.2514 z" />
<path
id="path3833"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 119.51547,447.56152 -0.10737,-0.37448 h -0.0419 q -0.0655,0.11261 -0.15712,0.19379 -0.089,0.0786 -0.19641,0.13094 -0.10737,0.0524 -0.22783,0.0759 -0.12046,0.0262 -0.24616,0.0262 -0.21473,0 -0.39019,-0.0602 -0.17545,-0.0629 -0.30115,-0.19379 -0.1257,-0.13094 -0.19379,-0.33258 -0.0681,-0.20164 -0.0681,-0.48446 v -1.90906 h 0.79872 v 1.71003 q 0,0.31687 0.0943,0.47661 0.0969,0.15713 0.30639,0.15713 0.15713,0 0.26188,-0.0629 0.10474,-0.0628 0.16498,-0.18593 0.0628,-0.12308 0.089,-0.30378 0.0262,-0.18069 0.0262,-0.41376 v -1.37745 h 0.79871 v 2.92774 z" />
</g>
<g
id="text819-3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.36316156px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13407904"
aria-label="Espace utilisateur">
<path
id="path3836"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="M 82.426381,437.94498 H 80.22141 v -3.82859 h 2.204971 v 0.66516 h -1.393165 v 0.84061 h 1.296272 v 0.66516 h -1.296272 v 0.98726 h 1.393165 z" />
<path
id="path3838"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 85.115818,437.07556 q 0,0.23045 -0.0838,0.40328 -0.0838,0.17284 -0.238305,0.28806 -0.154505,0.11523 -0.374478,0.17284 -0.219974,0.0576 -0.492322,0.0576 -0.14403,0 -0.26711,-0.0105 -0.123081,-0.008 -0.233067,-0.0288 -0.109987,-0.021 -0.212118,-0.0524 -0.10213,-0.0314 -0.206879,-0.0786 v -0.65992 q 0.109986,0.055 0.230448,0.0995 0.12308,0.0445 0.243542,0.0786 0.120462,0.0314 0.233067,0.0498 0.115224,0.0183 0.212117,0.0183 0.107368,0 0.183312,-0.0183 0.07594,-0.0209 0.12308,-0.055 0.04976,-0.0367 0.07071,-0.0838 0.02357,-0.0498 0.02357,-0.10475 0,-0.055 -0.01833,-0.0969 -0.01571,-0.0445 -0.07594,-0.0917 -0.06023,-0.0497 -0.178074,-0.10998 -0.115224,-0.0629 -0.311629,-0.15189 -0.191167,-0.0864 -0.332579,-0.17022 -0.138792,-0.0864 -0.230448,-0.19117 -0.08904,-0.10474 -0.133555,-0.2383 -0.04452,-0.13617 -0.04452,-0.3221 0,-0.20426 0.07856,-0.35615 0.07856,-0.15451 0.222592,-0.25664 0.144031,-0.10213 0.345673,-0.15188 0.204261,-0.0524 0.45304,-0.0524 0.261873,0 0.497559,0.0602 0.235686,0.0602 0.484466,0.1807 l -0.240924,0.56564 q -0.199023,-0.0943 -0.379716,-0.1545 -0.180692,-0.0602 -0.361385,-0.0602 -0.162361,0 -0.235685,0.0576 -0.07071,0.0576 -0.07071,0.15712 0,0.0524 0.01833,0.0943 0.01833,0.0393 0.07332,0.0838 0.05499,0.0419 0.154505,0.0943 0.09951,0.0498 0.259255,0.12308 0.18593,0.0812 0.335197,0.16236 0.149268,0.0786 0.256636,0.18069 0.107368,0.10213 0.16498,0.23831 0.05761,0.13617 0.05761,0.32996 z" />
<path
id="path3840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 87.281509,437.99735 q -0.14403,0 -0.259254,-0.0314 -0.112606,-0.0314 -0.201643,-0.0838 -0.08904,-0.0524 -0.157123,-0.11785 -0.06809,-0.0681 -0.123081,-0.14141 h -0.0419 q 0.01047,0.0917 0.02095,0.17284 0.0079,0.0681 0.01309,0.14141 0.0079,0.0707 0.0079,0.10999 v 1.18628 h -0.798713 v -4.21615 h 0.649445 l 0.112606,0.37971 h 0.03666 q 0.05499,-0.089 0.125699,-0.1676 0.07071,-0.0786 0.162362,-0.13617 0.09427,-0.0602 0.212117,-0.0943 0.117843,-0.0367 0.261873,-0.0367 0.22783,0 0.413759,0.0969 0.18593,0.0969 0.319486,0.28807 0.133555,0.19116 0.206879,0.47399 0.07332,0.28282 0.07332,0.65468 0,0.37448 -0.07594,0.65992 -0.07594,0.28282 -0.214736,0.47661 -0.136174,0.19117 -0.327342,0.28806 -0.188548,0.0969 -0.416378,0.0969 z m -0.248779,-2.39614 q -0.133556,0 -0.22783,0.0498 -0.09166,0.0471 -0.149268,0.14403 -0.05761,0.0969 -0.0838,0.24616 -0.02619,0.14665 -0.03142,0.34305 v 0.0864 q 0,0.21212 0.02357,0.3771 0.02619,0.16498 0.0838,0.27758 0.05761,0.10999 0.151887,0.1676 0.09689,0.0576 0.238304,0.0576 0.238305,0 0.348291,-0.22521 0.112606,-0.22783 0.112606,-0.65992 0,-0.43209 -0.112606,-0.64682 -0.109986,-0.21736 -0.353528,-0.21736 z" />
<path
id="path3842"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 90.698953,437.94498 -0.154505,-0.39805 h -0.02357 q -0.08642,0.11784 -0.172836,0.20426 -0.08642,0.0838 -0.188549,0.13879 -0.10213,0.055 -0.230448,0.0812 -0.125699,0.0262 -0.293298,0.0262 -0.178074,0 -0.32996,-0.055 -0.151886,-0.0576 -0.264492,-0.17022 -0.109987,-0.11522 -0.172836,-0.28806 -0.06285,-0.17545 -0.06285,-0.41376 0,-0.46613 0.298536,-0.68611 0.298535,-0.22259 0.892987,-0.24616 l 0.466134,-0.0157 v -0.21997 q 0,-0.1807 -0.104749,-0.26711 -0.104749,-0.0864 -0.293298,-0.0864 -0.188549,0 -0.369241,0.055 -0.178074,0.055 -0.358766,0.14665 l -0.259255,-0.52898 q 0.219974,-0.12308 0.487084,-0.19379 0.267111,-0.0707 0.560409,-0.0707 0.547315,0 0.837994,0.25664 0.293298,0.25664 0.293298,0.78038 v 1.95096 z m -0.235686,-1.35651 -0.264492,0.0105 q -0.159742,0.005 -0.269729,0.0419 -0.109987,0.0367 -0.178074,0.0995 -0.06547,0.0602 -0.09689,0.14665 -0.02881,0.0838 -0.02881,0.18855 0,0.18331 0.08904,0.26187 0.08904,0.0759 0.233067,0.0759 0.109987,0 0.204261,-0.0367 0.09427,-0.0393 0.162362,-0.1126 0.07071,-0.076 0.109986,-0.18331 0.03928,-0.10999 0.03928,-0.2514 z" />
<path
id="path3844"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 93.296735,437.99735 q -0.314248,0 -0.568265,-0.0864 -0.251398,-0.0864 -0.432091,-0.26711 -0.178074,-0.18331 -0.274967,-0.46613 -0.09427,-0.28544 -0.09427,-0.68087 0,-0.43733 0.09689,-0.73063 0.09951,-0.29591 0.277586,-0.47399 0.180692,-0.17807 0.43209,-0.25401 0.254017,-0.0759 0.563028,-0.0759 0.22521,0 0.447803,0.055 0.222592,0.055 0.418997,0.1545 l -0.230449,0.60755 q -0.172836,-0.0759 -0.332579,-0.12308 -0.159742,-0.0498 -0.303772,-0.0498 -0.29068,0 -0.421616,0.22259 -0.130937,0.21998 -0.130937,0.66254 0,0.43995 0.130937,0.64945 0.130936,0.20949 0.411141,0.20949 0.227829,0 0.413759,-0.0576 0.18593,-0.0602 0.379716,-0.15188 v 0.66515 q -0.09689,0.0471 -0.188548,0.0838 -0.09166,0.0367 -0.18593,0.0602 -0.09166,0.0236 -0.193787,0.034 -0.09951,0.0131 -0.214735,0.0131 z" />
<path
id="path3846"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 95.944272,435.53051 q -0.212118,0 -0.353529,0.14926 -0.138793,0.14927 -0.159743,0.46876 h 1.018687 q -0.0026,-0.13356 -0.03404,-0.24616 -0.03142,-0.11261 -0.09427,-0.19379 -0.06285,-0.0838 -0.157124,-0.13094 -0.09427,-0.0471 -0.219973,-0.0471 z m 0.10213,2.46684 q -0.314248,0 -0.57874,-0.0916 -0.264491,-0.0917 -0.455659,-0.27497 -0.191167,-0.18593 -0.298535,-0.46614 -0.104749,-0.28282 -0.104749,-0.66253 0,-0.38496 0.09689,-0.67302 0.09689,-0.28806 0.269729,-0.47923 0.175455,-0.19378 0.418997,-0.29068 0.246161,-0.0969 0.544696,-0.0969 0.290679,0 0.523746,0.089 0.235686,0.0864 0.398047,0.25663 0.164981,0.17022 0.251399,0.419 0.08904,0.24616 0.08904,0.56565 v 0.38757 h -1.785975 q 0.0052,0.1676 0.05237,0.30377 0.04976,0.13356 0.136175,0.22783 0.08904,0.0917 0.212117,0.14141 0.125699,0.0498 0.285441,0.0498 0.133556,0 0.251399,-0.0131 0.120461,-0.0157 0.233067,-0.0445 0.112605,-0.0288 0.222592,-0.0707 0.109987,-0.0445 0.225211,-0.10213 v 0.61802 q -0.104749,0.055 -0.212117,0.0943 -0.10475,0.0367 -0.222593,0.0629 -0.117843,0.0262 -0.254017,0.0367 -0.136174,0.0131 -0.298535,0.0131 z" />
<path
id="path3848"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 101.18959,437.94498 -0.10737,-0.37448 h -0.0419 q -0.0655,0.1126 -0.15712,0.19378 -0.089,0.0786 -0.19641,0.13094 -0.10736,0.0524 -0.22783,0.0759 -0.12046,0.0262 -0.24616,0.0262 -0.214733,0 -0.390188,-0.0602 -0.175455,-0.0628 -0.301154,-0.19379 -0.125699,-0.13093 -0.193786,-0.33257 -0.06809,-0.20165 -0.06809,-0.48447 v -1.90905 h 0.798718 v 1.71003 q 0,0.31686 0.0943,0.47661 0.0969,0.15712 0.30639,0.15712 0.15713,0 0.26188,-0.0628 0.10475,-0.0629 0.16498,-0.18593 0.0629,-0.12308 0.089,-0.30377 0.0262,-0.1807 0.0262,-0.41376 v -1.37745 h 0.79871 v 2.92774 z" />
<path
id="path3850"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 103.82665,437.361 q 0.11785,0 0.2226,-0.0262 0.10736,-0.0262 0.21735,-0.0655 v 0.59446 q -0.11261,0.0576 -0.2802,0.0943 -0.16498,0.0393 -0.36139,0.0393 -0.19117,0 -0.35615,-0.0445 -0.16498,-0.0445 -0.28544,-0.1545 -0.12046,-0.11261 -0.19117,-0.29854 -0.0681,-0.18855 -0.0681,-0.47137 v -1.4115 h -0.38234 v -0.33781 l 0.43995,-0.26711 0.23045,-0.61802 h 0.51065 v 0.62326 h 0.71229 v 0.59968 h -0.71229 v 1.4115 q 0,0.17022 0.0838,0.2514 0.0838,0.0812 0.21997,0.0812 z" />
<path
id="path3852"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 104.82439,434.26042 q 0,-0.1126 0.034,-0.18593 0.0341,-0.0759 0.0917,-0.12046 0.0602,-0.0471 0.13879,-0.0655 0.0812,-0.0183 0.17022,-0.0183 0.089,0 0.1676,0.0183 0.0786,0.0183 0.13617,0.0655 0.0602,0.0445 0.0943,0.12046 0.0367,0.0733 0.0367,0.18593 0,0.10999 -0.0367,0.18593 -0.0341,0.0759 -0.0943,0.12308 -0.0576,0.0445 -0.13617,0.0655 -0.0786,0.0183 -0.1676,0.0183 -0.089,0 -0.17022,-0.0183 -0.0786,-0.021 -0.13879,-0.0655 -0.0576,-0.0471 -0.0917,-0.12308 -0.034,-0.0759 -0.034,-0.18593 z m 0.83276,3.68456 h -0.79872 v -2.92774 h 0.79872 z" />
<path
id="path3854"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 107.29123,437.94498 h -0.79871 v -4.07475 h 0.79871 z" />
<path
id="path3856"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 108.09257,434.26042 q 0,-0.1126 0.034,-0.18593 0.034,-0.0759 0.0917,-0.12046 0.0602,-0.0471 0.13879,-0.0655 0.0812,-0.0183 0.17022,-0.0183 0.089,0 0.16759,0.0183 0.0786,0.0183 0.13618,0.0655 0.0602,0.0445 0.0943,0.12046 0.0367,0.0733 0.0367,0.18593 0,0.10999 -0.0367,0.18593 -0.034,0.0759 -0.0943,0.12308 -0.0576,0.0445 -0.13618,0.0655 -0.0786,0.0183 -0.16759,0.0183 -0.089,0 -0.17022,-0.0183 -0.0786,-0.021 -0.13879,-0.0655 -0.0576,-0.0471 -0.0917,-0.12308 -0.034,-0.0759 -0.034,-0.18593 z m 0.83275,3.68456 h -0.79871 v -2.92774 h 0.79871 z" />
<path
id="path3858"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 111.71165,437.07556 q 0,0.23045 -0.0838,0.40328 -0.0838,0.17284 -0.2383,0.28806 -0.15451,0.11523 -0.37448,0.17284 -0.21997,0.0576 -0.49232,0.0576 -0.14403,0 -0.26711,-0.0105 -0.12308,-0.008 -0.23307,-0.0288 -0.10999,-0.021 -0.21212,-0.0524 -0.10213,-0.0314 -0.20688,-0.0786 v -0.65992 q 0.10999,0.055 0.23045,0.0995 0.12308,0.0445 0.24354,0.0786 0.12047,0.0314 0.23307,0.0498 0.11523,0.0183 0.21212,0.0183 0.10737,0 0.18331,-0.0183 0.0759,-0.0209 0.12308,-0.055 0.0498,-0.0367 0.0707,-0.0838 0.0236,-0.0498 0.0236,-0.10475 0,-0.055 -0.0183,-0.0969 -0.0157,-0.0445 -0.0759,-0.0917 -0.0602,-0.0497 -0.17807,-0.10998 -0.11523,-0.0629 -0.31163,-0.15189 -0.19117,-0.0864 -0.33258,-0.17022 -0.13879,-0.0864 -0.23045,-0.19117 -0.089,-0.10474 -0.13355,-0.2383 -0.0445,-0.13617 -0.0445,-0.3221 0,-0.20426 0.0786,-0.35615 0.0786,-0.15451 0.22259,-0.25664 0.14403,-0.10213 0.34567,-0.15188 0.20426,-0.0524 0.45304,-0.0524 0.26188,0 0.49756,0.0602 0.23569,0.0602 0.48447,0.1807 l -0.24092,0.56564 q -0.19903,-0.0943 -0.37972,-0.1545 -0.18069,-0.0602 -0.36139,-0.0602 -0.16236,0 -0.23568,0.0576 -0.0707,0.0576 -0.0707,0.15712 0,0.0524 0.0183,0.0943 0.0183,0.0393 0.0733,0.0838 0.055,0.0419 0.1545,0.0943 0.0995,0.0498 0.25926,0.12308 0.18593,0.0812 0.3352,0.16236 0.14926,0.0786 0.25663,0.18069 0.10737,0.10213 0.16498,0.23831 0.0576,0.13617 0.0576,0.32996 z" />
<path
id="path3860"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 114.03709,437.94498 -0.15451,-0.39805 h -0.0236 q -0.0864,0.11784 -0.17283,0.20426 -0.0864,0.0838 -0.18855,0.13879 -0.10213,0.055 -0.23045,0.0812 -0.1257,0.0262 -0.2933,0.0262 -0.17807,0 -0.32996,-0.055 -0.15188,-0.0576 -0.26449,-0.17022 -0.10999,-0.11522 -0.17284,-0.28806 -0.0629,-0.17545 -0.0629,-0.41376 0,-0.46613 0.29854,-0.68611 0.29853,-0.22259 0.89299,-0.24616 l 0.46613,-0.0157 v -0.21997 q 0,-0.1807 -0.10475,-0.26711 -0.10475,-0.0864 -0.2933,-0.0864 -0.18854,0 -0.36924,0.055 -0.17807,0.055 -0.35876,0.14665 l -0.25926,-0.52898 q 0.21998,-0.12308 0.48709,-0.19379 0.26711,-0.0707 0.5604,-0.0707 0.54732,0 0.838,0.25664 0.2933,0.25664 0.2933,0.78038 v 1.95096 z m -0.23569,-1.35651 -0.26449,0.0105 q -0.15974,0.005 -0.26973,0.0419 -0.10999,0.0367 -0.17807,0.0995 -0.0655,0.0602 -0.0969,0.14665 -0.0288,0.0838 -0.0288,0.18855 0,0.18331 0.089,0.26187 0.089,0.0759 0.23307,0.0759 0.10999,0 0.20426,-0.0367 0.0943,-0.0393 0.16236,-0.1126 0.0707,-0.076 0.10999,-0.18331 0.0393,-0.10999 0.0393,-0.2514 z" />
<path
id="path3862"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 116.60606,437.361 q 0.11785,0 0.22259,-0.0262 0.10737,-0.0262 0.21736,-0.0655 v 0.59446 q -0.11261,0.0576 -0.28021,0.0943 -0.16498,0.0393 -0.36138,0.0393 -0.19117,0 -0.35615,-0.0445 -0.16498,-0.0445 -0.28544,-0.1545 -0.12046,-0.11261 -0.19117,-0.29854 -0.0681,-0.18855 -0.0681,-0.47137 v -1.4115 h -0.38234 v -0.33781 l 0.43995,-0.26711 0.23045,-0.61802 h 0.51065 v 0.62326 h 0.71229 v 0.59968 h -0.71229 v 1.4115 q 0,0.17022 0.0838,0.2514 0.0838,0.0812 0.21997,0.0812 z" />
<path
id="path3864"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 118.82151,435.53051 q -0.21212,0 -0.35353,0.14926 -0.13879,0.14927 -0.15974,0.46876 h 1.01868 q -0.003,-0.13356 -0.034,-0.24616 -0.0314,-0.11261 -0.0943,-0.19379 -0.0628,-0.0838 -0.15713,-0.13094 -0.0943,-0.0471 -0.21997,-0.0471 z m 0.10213,2.46684 q -0.31425,0 -0.57874,-0.0916 -0.26449,-0.0917 -0.45566,-0.27497 -0.19117,-0.18593 -0.29853,-0.46614 -0.10475,-0.28282 -0.10475,-0.66253 0,-0.38496 0.0969,-0.67302 0.0969,-0.28806 0.26973,-0.47923 0.17545,-0.19378 0.419,-0.29068 0.24616,-0.0969 0.54469,-0.0969 0.29068,0 0.52375,0.089 0.23568,0.0864 0.39804,0.25663 0.16498,0.17022 0.2514,0.419 0.089,0.24616 0.089,0.56565 v 0.38757 h -1.78597 q 0.005,0.1676 0.0524,0.30377 0.0498,0.13356 0.13617,0.22783 0.089,0.0917 0.21212,0.14141 0.1257,0.0498 0.28544,0.0498 0.13356,0 0.2514,-0.0131 0.12046,-0.0157 0.23307,-0.0445 0.1126,-0.0288 0.22259,-0.0707 0.10999,-0.0445 0.22521,-0.10213 v 0.61802 q -0.10475,0.055 -0.21212,0.0943 -0.10475,0.0367 -0.22259,0.0629 -0.11784,0.0262 -0.25402,0.0367 -0.13617,0.0131 -0.29853,0.0131 z" />
<path
id="path3866"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 122.67366,437.94498 -0.10736,-0.37448 h -0.0419 q -0.0655,0.1126 -0.15713,0.19378 -0.089,0.0786 -0.1964,0.13094 -0.10737,0.0524 -0.22783,0.0759 -0.12046,0.0262 -0.24616,0.0262 -0.21474,0 -0.39019,-0.0602 -0.17546,-0.0628 -0.30116,-0.19379 -0.1257,-0.13093 -0.19378,-0.33257 -0.0681,-0.20165 -0.0681,-0.48447 v -1.90905 h 0.79871 v 1.71003 q 0,0.31686 0.0943,0.47661 0.0969,0.15712 0.30639,0.15712 0.15712,0 0.26187,-0.0628 0.10475,-0.0629 0.16498,-0.18593 0.0628,-0.12308 0.089,-0.30377 0.0262,-0.1807 0.0262,-0.41376 v -1.37745 h 0.79872 v 2.92774 z" />
<path
id="path3868"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.13407904"
d="m 125.64854,434.96224 q 0.0314,0 0.0681,0.003 0.0393,0 0.0733,0.005 0.0367,0.003 0.0655,0.008 0.0314,0.003 0.0471,0.008 v 0.74896 q -0.0209,-0.005 -0.0576,-0.0105 -0.0367,-0.005 -0.0786,-0.008 -0.0393,-0.005 -0.0786,-0.005 -0.0393,-0.003 -0.0655,-0.003 -0.1545,0 -0.28544,0.0393 -0.12832,0.0393 -0.22259,0.12832 -0.0917,0.0864 -0.14403,0.23045 -0.0498,0.14141 -0.0498,0.34829 v 1.49006 h -0.79871 v -2.92774 h 0.60493 l 0.11784,0.43994 h 0.0393 q 0.0628,-0.1126 0.13618,-0.20426 0.0733,-0.0917 0.16236,-0.1545 0.0917,-0.0655 0.20426,-0.0995 0.11522,-0.0367 0.26187,-0.0367 z" />
</g>
<rect
ry="1.3381894"
y="400.29175"
x="17.054296"
height="28.41802"
width="56.188347"
id="rect839"
style="opacity:0.86699997;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.79897124;stroke-miterlimit:4;stroke-dasharray:1.59794247, 1.59794247;stroke-dashoffset:0" />
<g
id="text819-3-7"
style="font-style:normal;font-weight:normal;font-size:2.49987245px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06249681"
aria-label="Processus
">
<path
id="path3871"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 18.511429,398.09352 h 0.07446 q 0.159904,0 0.240466,-0.0635 0.08178,-0.0635 0.08178,-0.20629 0,-0.13305 -0.07324,-0.19652 -0.07202,-0.0635 -0.227039,-0.0635 h -0.09643 z m 0.779989,-0.28319 q 0,0.11719 -0.0354,0.2246 -0.0354,0.10742 -0.117181,0.1892 -0.08056,0.0818 -0.213612,0.13061 -0.131829,0.0488 -0.327132,0.0488 h -0.08666 v 0.63473 H 18.13303 v -1.78458 h 0.49558 q 0.17211,0 0.296616,0.0391 0.125726,0.0378 0.206288,0.10986 0.08178,0.0708 0.120844,0.17455 0.03906,0.10254 0.03906,0.23314 z" />
<path
id="path3873"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 20.309433,397.64799 q 0.01465,0 0.03174,0.001 0.01831,0 0.03418,0.002 0.01709,0.001 0.03052,0.004 0.01465,10e-4 0.02197,0.004 v 0.3491 q -0.0098,-0.002 -0.02685,-0.005 -0.01709,-0.002 -0.03662,-0.004 -0.01831,-0.002 -0.03662,-0.002 -0.01831,-0.001 -0.03052,-0.001 -0.07202,0 -0.13305,0.0183 -0.05981,0.0183 -0.103754,0.0598 -0.04272,0.0403 -0.06714,0.10742 -0.02319,0.0659 -0.02319,0.16234 v 0.69455 h -0.372295 v -1.36468 h 0.281968 l 0.05493,0.20507 h 0.01831 q 0.0293,-0.0525 0.06347,-0.0952 0.03418,-0.0427 0.07568,-0.072 0.04272,-0.0305 0.09521,-0.0464 0.05371,-0.0171 0.122064,-0.0171 z" />
<path
id="path3875"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 20.991771,398.35352 q 0,0.20385 0.05737,0.3076 0.05737,0.10254 0.186758,0.10254 0.128167,0 0.185537,-0.10376 0.05737,-0.10375 0.05737,-0.30638 0,-0.20385 -0.05737,-0.30394 -0.05737,-0.10131 -0.187978,-0.10131 -0.128168,0 -0.185538,0.10131 -0.05615,0.10009 -0.05615,0.30394 z m 0.866655,0 q 0,0.17089 -0.04394,0.30272 -0.04272,0.13183 -0.124506,0.22216 -0.08056,0.0903 -0.197744,0.13793 -0.11596,0.0464 -0.261217,0.0464 -0.135491,0 -0.24901,-0.0464 -0.11352,-0.0476 -0.196524,-0.13793 -0.08178,-0.0903 -0.128167,-0.22216 -0.04638,-0.13183 -0.04638,-0.30272 0,-0.16967 0.04272,-0.3015 0.04394,-0.13183 0.124506,-0.22093 0.08178,-0.0903 0.197743,-0.13672 0.115961,-0.0464 0.262438,-0.0464 0.135491,0 0.249011,0.0464 0.113519,0.0464 0.195302,0.13672 0.083,0.0891 0.129388,0.22093 0.04639,0.13183 0.04639,0.3015 z" />
<path
id="path3877"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 22.748273,399.06271 q -0.146477,0 -0.264879,-0.0403 -0.117182,-0.0403 -0.201406,-0.1245 -0.083,-0.0854 -0.128167,-0.21728 -0.04394,-0.13305 -0.04394,-0.31736 0,-0.20385 0.04516,-0.34056 0.04638,-0.13794 0.129388,-0.22094 0.08422,-0.083 0.201405,-0.1184 0.118402,-0.0354 0.262438,-0.0354 0.104975,0 0.20873,0.0256 0.103754,0.0256 0.195302,0.072 l -0.107416,0.28319 q -0.08056,-0.0354 -0.155022,-0.0574 -0.07446,-0.0232 -0.141594,-0.0232 -0.135491,0 -0.196523,0.10375 -0.06103,0.10254 -0.06103,0.30882 0,0.20507 0.06103,0.30272 0.06103,0.0976 0.191641,0.0976 0.106195,0 0.192861,-0.0269 0.08666,-0.0281 0.176993,-0.0708 v 0.31005 q -0.04516,0.022 -0.08789,0.0391 -0.04272,0.0171 -0.08667,0.0281 -0.04272,0.011 -0.09033,0.0159 -0.04638,0.006 -0.100093,0.006 z" />
<path
id="path3879"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 23.982341,397.91287 q -0.09887,0 -0.164787,0.0696 -0.06469,0.0696 -0.07446,0.21849 h 0.47483 q -0.0012,-0.0623 -0.01587,-0.11474 -0.01465,-0.0525 -0.04394,-0.0903 -0.0293,-0.0391 -0.07324,-0.061 -0.04394,-0.022 -0.102534,-0.022 z m 0.0476,1.14984 q -0.146477,0 -0.269762,-0.0427 -0.123285,-0.0427 -0.212391,-0.12817 -0.08911,-0.0867 -0.139153,-0.21727 -0.04883,-0.13183 -0.04883,-0.30882 0,-0.17944 0.04516,-0.31371 0.04516,-0.13427 0.125726,-0.22338 0.08178,-0.0903 0.195302,-0.13549 0.114741,-0.0452 0.253894,-0.0452 0.135491,0 0.244128,0.0415 0.109857,0.0403 0.185537,0.11962 0.0769,0.0794 0.117182,0.19531 0.0415,0.11474 0.0415,0.26366 v 0.18065 h -0.832477 q 0.0024,0.0781 0.02441,0.14159 0.02319,0.0623 0.06347,0.1062 0.0415,0.0427 0.09887,0.0659 0.05859,0.0232 0.13305,0.0232 0.06225,0 0.117182,-0.006 0.05615,-0.007 0.108637,-0.0207 0.05249,-0.0134 0.103754,-0.033 0.05127,-0.0208 0.104975,-0.0476 v 0.28807 q -0.04883,0.0256 -0.09887,0.0439 -0.04883,0.0171 -0.103755,0.0293 -0.05493,0.0122 -0.118402,0.0171 -0.06347,0.006 -0.139153,0.006 z" />
<path
id="path3881"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 25.794992,398.63305 q 0,0.10741 -0.03906,0.18798 -0.03906,0.0806 -0.111078,0.13427 -0.07202,0.0537 -0.174552,0.0806 -0.102534,0.0268 -0.229481,0.0268 -0.06714,0 -0.124505,-0.005 -0.05737,-0.004 -0.108637,-0.0134 -0.05127,-0.01 -0.09887,-0.0244 -0.04761,-0.0147 -0.09643,-0.0366 v -0.3076 q 0.05127,0.0256 0.107417,0.0464 0.05737,0.0208 0.113519,0.0366 0.05615,0.0146 0.108637,0.0232 0.05371,0.009 0.09887,0.009 0.05005,0 0.08544,-0.009 0.0354,-0.01 0.05737,-0.0256 0.02319,-0.0171 0.03296,-0.0391 0.01099,-0.0232 0.01099,-0.0488 0,-0.0256 -0.0085,-0.0452 -0.0073,-0.0208 -0.0354,-0.0427 -0.02807,-0.0232 -0.083,-0.0513 -0.05371,-0.0293 -0.145256,-0.0708 -0.08911,-0.0403 -0.155022,-0.0794 -0.06469,-0.0403 -0.107416,-0.0891 -0.0415,-0.0488 -0.06225,-0.11108 -0.02075,-0.0635 -0.02075,-0.15014 0,-0.0952 0.03662,-0.16601 0.03662,-0.072 0.103755,-0.11962 0.06714,-0.0476 0.161124,-0.0708 0.09521,-0.0244 0.211171,-0.0244 0.122064,0 0.231922,0.0281 0.109858,0.0281 0.225819,0.0842 l -0.112299,0.26366 q -0.09277,-0.0439 -0.176993,-0.072 -0.08422,-0.0281 -0.168449,-0.0281 -0.07568,0 -0.109857,0.0269 -0.03296,0.0268 -0.03296,0.0732 0,0.0244 0.0085,0.0439 0.0085,0.0183 0.03418,0.0391 0.02563,0.0195 0.07202,0.0439 0.04638,0.0232 0.120843,0.0574 0.08667,0.0378 0.156242,0.0757 0.06958,0.0366 0.119623,0.0842 0.05005,0.0476 0.0769,0.11108 0.02685,0.0635 0.02685,0.1538 z" />
<path
id="path3883"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 26.996103,398.63305 q 0,0.10741 -0.03906,0.18798 -0.03906,0.0806 -0.111079,0.13427 -0.07202,0.0537 -0.174551,0.0806 -0.102534,0.0268 -0.229481,0.0268 -0.06714,0 -0.124505,-0.005 -0.05737,-0.004 -0.108637,-0.0134 -0.05127,-0.01 -0.09887,-0.0244 -0.04761,-0.0147 -0.09643,-0.0366 v -0.3076 q 0.05127,0.0256 0.107417,0.0464 0.05737,0.0208 0.113519,0.0366 0.05615,0.0146 0.108637,0.0232 0.05371,0.009 0.09887,0.009 0.05005,0 0.08544,-0.009 0.0354,-0.01 0.05737,-0.0256 0.02319,-0.0171 0.03296,-0.0391 0.01098,-0.0232 0.01098,-0.0488 0,-0.0256 -0.0085,-0.0452 -0.0073,-0.0208 -0.0354,-0.0427 -0.02808,-0.0232 -0.083,-0.0513 -0.05371,-0.0293 -0.145257,-0.0708 -0.08911,-0.0403 -0.155021,-0.0794 -0.06469,-0.0403 -0.107416,-0.0891 -0.0415,-0.0488 -0.06225,-0.11108 -0.02075,-0.0635 -0.02075,-0.15014 0,-0.0952 0.03662,-0.16601 0.03662,-0.072 0.103755,-0.11962 0.06713,-0.0476 0.161124,-0.0708 0.09521,-0.0244 0.211171,-0.0244 0.122064,0 0.231922,0.0281 0.109858,0.0281 0.225818,0.0842 l -0.112298,0.26366 q -0.09277,-0.0439 -0.176993,-0.072 -0.08423,-0.0281 -0.168449,-0.0281 -0.07568,0 -0.109857,0.0269 -0.03296,0.0268 -0.03296,0.0732 0,0.0244 0.0085,0.0439 0.0085,0.0183 0.03418,0.0391 0.02563,0.0195 0.07202,0.0439 0.04638,0.0232 0.120844,0.0574 0.08666,0.0378 0.156242,0.0757 0.06958,0.0366 0.119623,0.0842 0.05005,0.0476 0.0769,0.11108 0.02685,0.0635 0.02685,0.1538 z" />
<path
id="path3885"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 28.180125,399.0383 -0.05005,-0.17455 h -0.01953 q -0.03052,0.0525 -0.07324,0.0903 -0.0415,0.0366 -0.09155,0.061 -0.05005,0.0244 -0.106196,0.0354 -0.05615,0.0122 -0.11474,0.0122 -0.100093,0 -0.181875,-0.0281 -0.08178,-0.0293 -0.140374,-0.0903 -0.05859,-0.061 -0.09033,-0.15502 -0.03174,-0.094 -0.03174,-0.22582 v -0.88985 h 0.372295 v 0.79708 q 0,0.1477 0.04394,0.22216 0.04516,0.0732 0.142815,0.0732 0.07324,0 0.122064,-0.0293 0.04883,-0.0293 0.0769,-0.0867 0.0293,-0.0574 0.0415,-0.1416 0.01221,-0.0842 0.01221,-0.19286 v -0.64206 h 0.372295 v 1.36468 z" />
<path
id="path3887"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 29.764517,398.63305 q 0,0.10741 -0.03906,0.18798 -0.03906,0.0806 -0.111078,0.13427 -0.07202,0.0537 -0.174552,0.0806 -0.102534,0.0268 -0.22948,0.0268 -0.06714,0 -0.124506,-0.005 -0.05737,-0.004 -0.108637,-0.0134 -0.05127,-0.01 -0.09887,-0.0244 -0.04761,-0.0147 -0.09643,-0.0366 v -0.3076 q 0.05127,0.0256 0.107416,0.0464 0.05737,0.0208 0.11352,0.0366 0.05615,0.0146 0.108637,0.0232 0.05371,0.009 0.09887,0.009 0.05005,0 0.08544,-0.009 0.0354,-0.01 0.05737,-0.0256 0.02319,-0.0171 0.03296,-0.0391 0.01099,-0.0232 0.01099,-0.0488 0,-0.0256 -0.0085,-0.0452 -0.0073,-0.0208 -0.0354,-0.0427 -0.02808,-0.0232 -0.083,-0.0513 -0.05371,-0.0293 -0.145256,-0.0708 -0.08911,-0.0403 -0.155021,-0.0794 -0.06469,-0.0403 -0.107417,-0.0891 -0.0415,-0.0488 -0.06225,-0.11108 -0.02075,-0.0635 -0.02075,-0.15014 0,-0.0952 0.03662,-0.16601 0.03662,-0.072 0.103754,-0.11962 0.06714,-0.0476 0.161125,-0.0708 0.09521,-0.0244 0.211171,-0.0244 0.122064,0 0.231921,0.0281 0.109858,0.0281 0.225819,0.0842 l -0.112299,0.26366 q -0.09277,-0.0439 -0.176993,-0.072 -0.08422,-0.0281 -0.168448,-0.0281 -0.07568,0 -0.109858,0.0269 -0.03296,0.0268 -0.03296,0.0732 0,0.0244 0.0085,0.0439 0.0085,0.0183 0.03418,0.0391 0.02563,0.0195 0.07202,0.0439 0.04638,0.0232 0.120843,0.0574 0.08667,0.0378 0.156242,0.0757 0.06958,0.0366 0.119623,0.0842 0.05005,0.0476 0.0769,0.11108 0.02685,0.0635 0.02685,0.1538 z" />
</g>
<path
id="rect863"
d="m 29.378861,451.62178 a 7.9779398,2.5193012 0 0 0 -7.962272,2.42016 h -0.01572 v 0.0992 21.63446 h 0.0086 a 7.97794,2.5193012 0 0 0 -0.0086,0.0538 7.97794,2.5193012 0 0 0 0.01461,0.0912 7.97794,2.5193012 0 0 0 -0.01461,0.091 7.97794,2.5193012 0 0 0 7.97799,2.51934 7.97794,2.5193012 0 0 0 7.977989,-2.51934 7.97794,2.5193012 0 0 0 -0.01018,-0.091 7.97794,2.5193012 0 0 0 0.01018,-0.0912 7.97794,2.5193012 0 0 0 -0.0062,-0.0538 v -21.59527 a 7.9779398,2.5193012 0 0 0 0.0062,-0.0392 7.9779398,2.5193012 0 0 0 -0.0062,-0.0549 v -0.0443 h -0.0051 a 7.9779398,2.5193012 0 0 0 -7.966698,-2.42016 z"
style="opacity:1;fill:#38c8e2;fill-opacity:0.99843014;stroke:none;stroke-width:0.71264803;stroke-miterlimit:4;stroke-dasharray:1.4252962, 1.4252962;stroke-dashoffset:0" />
<ellipse
ry="2.5193012"
rx="7.9779401"
cy="454.14102"
cx="29.378838"
id="path861"
style="opacity:0.15400002;fill:#000000;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0" />
<g
id="text873"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="write()">
<path
id="path3529"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 23.939332,422.82706 -0.19039,-0.86561 q -0.0089,-0.0376 -0.02435,-0.10627 -0.01328,-0.0708 -0.03099,-0.15718 -0.01771,-0.0885 -0.03764,-0.18596 -0.01771,-0.0996 -0.03764,-0.19703 -0.04428,-0.22803 -0.09741,-0.49147 h -0.01328 q -0.05092,0.26344 -0.09298,0.49368 -0.01771,0.0974 -0.03763,0.19703 -0.01771,0.0996 -0.03542,0.18818 -0.01771,0.0863 -0.03321,0.15718 -0.01328,0.0708 -0.02214,0.11069 l -0.199245,0.85676 H 22.36087 l -0.666363,-2.47507 h 0.670791 l 0.250163,1.09585 q 0.01993,0.0863 0.03985,0.2081 0.02214,0.11955 0.03985,0.24352 0.01993,0.12176 0.03542,0.23245 0.0155,0.10848 0.02435,0.17268 h 0.01328 q 0.0022,-0.0421 0.0089,-0.10848 0.0089,-0.0686 0.01992,-0.14611 0.01107,-0.0775 0.02214,-0.15718 0.01328,-0.0819 0.02435,-0.15275 0.01328,-0.0709 0.02214,-0.12398 0.01107,-0.0553 0.01771,-0.0775 l 0.270087,-1.18662 h 0.743848 l 0.259019,1.18662 q 0.01107,0.0487 0.02878,0.15054 0.01771,0.10183 0.03542,0.21917 0.01992,0.11512 0.03321,0.22581 0.01328,0.10848 0.0155,0.17046 h 0.01328 q 0.0066,-0.0553 0.02214,-0.16382 0.01771,-0.10848 0.03764,-0.23245 0.01992,-0.12619 0.04206,-0.25017 0.02435,-0.12397 0.04428,-0.21031 l 0.259018,-1.09585 h 0.661936 l -0.675219,2.47507 z" />
<path
id="path3531"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 26.996635,420.3055 q 0.02657,0 0.05756,0.002 0.03321,0 0.06199,0.004 0.03099,0.002 0.05535,0.007 0.02657,0.002 0.03985,0.007 v 0.63315 q -0.01771,-0.004 -0.0487,-0.009 -0.03099,-0.004 -0.06641,-0.007 -0.03321,-0.004 -0.06642,-0.004 -0.03321,-0.002 -0.05534,-0.002 -0.130616,0 -0.241308,0.0332 -0.108478,0.0332 -0.188176,0.10848 -0.07748,0.0731 -0.121761,0.19482 -0.04206,0.11954 -0.04206,0.29444 v 1.25967 h -0.675218 v -2.47507 h 0.511395 l 0.09962,0.37193 h 0.03321 q 0.05313,-0.0952 0.115119,-0.17268 0.06199,-0.0775 0.137258,-0.13062 0.07748,-0.0553 0.172679,-0.0841 0.09741,-0.031 0.221383,-0.031 z" />
<path
id="path3533"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 27.643074,419.71219 q 0,-0.0952 0.02878,-0.15718 0.02878,-0.0642 0.07748,-0.10183 0.05092,-0.0399 0.117333,-0.0553 0.06863,-0.0155 0.143899,-0.0155 0.07527,0 0.141686,0.0155 0.06641,0.0155 0.115119,0.0553 0.05092,0.0376 0.0797,0.10183 0.03099,0.062 0.03099,0.15718 0,0.093 -0.03099,0.15719 -0.02878,0.0642 -0.0797,0.10405 -0.0487,0.0376 -0.115119,0.0553 -0.06642,0.0155 -0.141686,0.0155 -0.07527,0 -0.143899,-0.0155 -0.06641,-0.0177 -0.117333,-0.0553 -0.0487,-0.0399 -0.07748,-0.10405 -0.02878,-0.0642 -0.02878,-0.15719 z m 0.703999,3.11487 h -0.675219 v -2.47507 h 0.675219 z" />
<path
id="path3535"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 30.058366,422.33337 q 0.09962,0 0.188175,-0.0221 0.09077,-0.0221 0.183749,-0.0553 v 0.50254 q -0.0952,0.0487 -0.236881,0.0797 -0.139471,0.0332 -0.305508,0.0332 -0.16161,0 -0.301082,-0.0376 -0.139471,-0.0376 -0.241307,-0.13062 -0.101837,-0.0952 -0.16161,-0.25237 -0.05756,-0.1594 -0.05756,-0.39849 v -1.19326 h -0.32322 v -0.28558 l 0.371924,-0.22582 0.194818,-0.52246 h 0.431697 v 0.52689 h 0.602163 v 0.50697 h -0.602163 v 1.19326 q 0,0.14389 0.07084,0.21252 0.07084,0.0686 0.185962,0.0686 z" />
<path
id="path3537"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 31.931268,420.7859 q -0.17932,0 -0.298867,0.12619 -0.117333,0.12619 -0.135044,0.39628 h 0.861181 q -0.0022,-0.11291 -0.02878,-0.2081 -0.02657,-0.0952 -0.0797,-0.16383 -0.05313,-0.0708 -0.13283,-0.11069 -0.0797,-0.0399 -0.185962,-0.0399 z m 0.08634,2.08543 q -0.26566,0 -0.489257,-0.0775 -0.223597,-0.0775 -0.385207,-0.23245 -0.16161,-0.15719 -0.252377,-0.39407 -0.08855,-0.23909 -0.08855,-0.56009 0,-0.32544 0.08191,-0.56896 0.08191,-0.24352 0.228025,-0.40513 0.148327,-0.16382 0.354213,-0.24574 0.208101,-0.0819 0.460478,-0.0819 0.245735,0 0.442766,0.0753 0.199245,0.0731 0.336503,0.21696 0.139471,0.1439 0.212528,0.35421 0.07527,0.2081 0.07527,0.47819 v 0.32765 h -1.509834 q 0.0044,0.14168 0.04428,0.2568 0.04206,0.11291 0.115119,0.1926 0.07527,0.0775 0.17932,0.11955 0.106264,0.0421 0.241308,0.0421 0.112906,0 0.212528,-0.0111 0.101836,-0.0133 0.197031,-0.0376 0.09519,-0.0243 0.188176,-0.0598 0.09298,-0.0376 0.19039,-0.0863 v 0.52246 q -0.08855,0.0465 -0.179321,0.0797 -0.08855,0.031 -0.188176,0.0531 -0.09962,0.0221 -0.214741,0.031 -0.11512,0.0111 -0.252377,0.0111 z" />
<path
id="path3539"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 33.396825,421.5851 q 0,-0.27673 0.03985,-0.54461 0.03985,-0.27008 0.121761,-0.52246 0.08191,-0.25459 0.205887,-0.48704 0.126188,-0.23467 0.298867,-0.44056 h 0.553458 q -0.31215,0.42727 -0.471546,0.93867 -0.159396,0.51139 -0.159396,1.05157 0,0.26345 0.03985,0.52468 0.03985,0.26123 0.119547,0.51139 0.0797,0.25017 0.197031,0.48483 0.117333,0.23467 0.270087,0.44277 h -0.54903 q -0.172679,-0.19925 -0.298867,-0.42727 -0.123975,-0.22803 -0.205887,-0.47598 -0.08191,-0.25016 -0.121761,-0.51582 -0.03985,-0.26566 -0.03985,-0.54017 z" />
<path
id="path3541"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 36.110984,421.5851 q 0,0.27451 -0.03985,0.54017 -0.03985,0.26566 -0.12176,0.51582 -0.08191,0.24795 -0.208101,0.47598 -0.123974,0.22802 -0.296653,0.42727 h -0.54903 q 0.152755,-0.2081 0.270088,-0.44277 0.117333,-0.23466 0.197031,-0.48483 0.0797,-0.25016 0.119547,-0.51139 0.03985,-0.26123 0.03985,-0.52468 0,-0.54018 -0.159396,-1.05157 -0.159396,-0.5114 -0.471546,-0.93867 h 0.553458 q 0.172679,0.20589 0.296653,0.44056 0.126189,0.23245 0.208101,0.48704 0.08191,0.25238 0.12176,0.52246 0.03985,0.26788 0.03985,0.54461 z" />
</g>
<g
id="text877"
style="font-style:normal;font-weight:normal;font-size:4.53392935px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="read()">
<path
id="path3544"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 52.809928,420.3055 q 0.02657,0 0.05756,0.002 0.03321,0 0.06199,0.004 0.03099,0.002 0.05535,0.007 0.02657,0.002 0.03985,0.007 v 0.63315 q -0.01771,-0.004 -0.0487,-0.009 -0.03099,-0.004 -0.06641,-0.007 -0.03321,-0.004 -0.06641,-0.004 -0.03321,-0.002 -0.05535,-0.002 -0.130616,0 -0.241308,0.0332 -0.108478,0.0332 -0.188176,0.10848 -0.07748,0.0731 -0.12176,0.19482 -0.04206,0.11954 -0.04206,0.29444 v 1.25967 h -0.675219 v -2.47507 h 0.511395 l 0.09962,0.37193 h 0.03321 q 0.05313,-0.0952 0.115119,-0.17268 0.06199,-0.0775 0.137258,-0.13062 0.07748,-0.0553 0.172679,-0.0841 0.09741,-0.031 0.221383,-0.031 z" />
<path
id="path3546"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 54.485799,420.7859 q -0.17932,0 -0.298867,0.12619 -0.117333,0.12619 -0.135044,0.39628 h 0.861181 q -0.0022,-0.11291 -0.02878,-0.2081 -0.02657,-0.0952 -0.0797,-0.16383 -0.05313,-0.0708 -0.13283,-0.11069 -0.0797,-0.0399 -0.185962,-0.0399 z m 0.08634,2.08543 q -0.26566,0 -0.489257,-0.0775 -0.223597,-0.0775 -0.385207,-0.23245 -0.16161,-0.15719 -0.252377,-0.39407 -0.08855,-0.23909 -0.08855,-0.56009 0,-0.32544 0.08191,-0.56896 0.08191,-0.24352 0.228024,-0.40513 0.148327,-0.16382 0.354214,-0.24574 0.2081,-0.0819 0.460477,-0.0819 0.245735,0 0.442766,0.0753 0.199245,0.0731 0.336503,0.21696 0.139471,0.1439 0.212528,0.35421 0.07527,0.2081 0.07527,0.47819 v 0.32765 h -1.509834 q 0.0044,0.14168 0.04428,0.2568 0.04206,0.11291 0.115119,0.1926 0.07527,0.0775 0.179321,0.11955 0.106264,0.0421 0.241307,0.0421 0.112906,0 0.212528,-0.0111 0.101837,-0.0133 0.197031,-0.0376 0.09519,-0.0243 0.188176,-0.0598 0.09298,-0.0376 0.19039,-0.0863 v 0.52246 q -0.08855,0.0465 -0.179321,0.0797 -0.08855,0.031 -0.188175,0.0531 -0.09962,0.0221 -0.214742,0.031 -0.115119,0.0111 -0.252377,0.0111 z" />
<path
id="path3548"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 57.560813,422.82706 -0.130616,-0.33651 h -0.01992 q -0.07306,0.0996 -0.146113,0.17268 -0.07306,0.0709 -0.159396,0.11734 -0.08634,0.0465 -0.194818,0.0686 -0.106264,0.0221 -0.247949,0.0221 -0.15054,0 -0.278943,-0.0465 -0.128402,-0.0487 -0.223597,-0.1439 -0.09298,-0.0974 -0.146113,-0.24352 -0.05313,-0.14832 -0.05313,-0.34978 0,-0.39407 0.252377,-0.58003 0.252377,-0.18817 0.754917,-0.2081 l 0.394062,-0.0133 v -0.18596 q 0,-0.15276 -0.08855,-0.22581 -0.08855,-0.0731 -0.247949,-0.0731 -0.159396,0 -0.312151,0.0465 -0.15054,0.0465 -0.303295,0.12398 l -0.219169,-0.4472 q 0.185962,-0.10405 0.411773,-0.16382 0.225811,-0.0598 0.47376,-0.0598 0.462691,0 0.708426,0.21696 0.24795,0.21695 0.24795,0.65972 v 1.64931 z m -0.199245,-1.14677 -0.223597,0.009 q -0.135044,0.004 -0.228025,0.0354 -0.09298,0.031 -0.15054,0.0841 -0.05535,0.0509 -0.08191,0.12398 -0.02435,0.0708 -0.02435,0.15939 0,0.15497 0.07527,0.22139 0.07527,0.0642 0.197031,0.0642 0.09298,0 0.172679,-0.031 0.0797,-0.0332 0.137258,-0.0952 0.05977,-0.0642 0.09298,-0.15497 0.03321,-0.093 0.03321,-0.21253 z" />
<path
id="path3550"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 59.455854,422.87133 q -0.19039,0 -0.347572,-0.0819 -0.157182,-0.0819 -0.270088,-0.24131 -0.112905,-0.16161 -0.177106,-0.4007 -0.06199,-0.23909 -0.06199,-0.55346 0,-0.31879 0.06199,-0.55788 0.0642,-0.24131 0.17932,-0.40292 0.117333,-0.16382 0.278943,-0.24574 0.16161,-0.0819 0.356427,-0.0819 0.119547,0 0.21917,0.0288 0.09962,0.0266 0.17932,0.0775 0.0797,0.0487 0.141685,0.11511 0.0642,0.0642 0.112906,0.14169 h 0.02214 q -0.01328,-0.0863 -0.02435,-0.17489 -0.01107,-0.0753 -0.01992,-0.1594 -0.0066,-0.0863 -0.0066,-0.15939 v -0.79256 h 0.675219 v 3.44473 h -0.515823 l -0.130616,-0.32101 h -0.02878 q -0.04649,0.0753 -0.106264,0.1439 -0.05977,0.0664 -0.139471,0.11512 -0.07748,0.0487 -0.177107,0.0775 -0.09741,0.0288 -0.221383,0.0288 z m 0.245735,-0.53796 q 0.119547,0 0.203673,-0.0399 0.08413,-0.0421 0.135044,-0.12397 0.05313,-0.0841 0.07748,-0.2081 0.02657,-0.12398 0.02878,-0.29001 v -0.0731 q 0,-0.17932 -0.02214,-0.31879 -0.02214,-0.13947 -0.07306,-0.23245 -0.05092,-0.0952 -0.137258,-0.1439 -0.08634,-0.0487 -0.216955,-0.0487 -0.212528,0 -0.312151,0.19261 -0.09962,0.19039 -0.09962,0.55567 0,0.36528 0.09962,0.54903 0.101836,0.18153 0.316578,0.18153 z" />
<path
id="path3552"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 61.308832,421.5851 q 0,-0.27673 0.03985,-0.54461 0.03985,-0.27008 0.12176,-0.52246 0.08191,-0.25459 0.205887,-0.48704 0.126188,-0.23467 0.298867,-0.44056 h 0.553458 q -0.31215,0.42727 -0.471546,0.93867 -0.159396,0.51139 -0.159396,1.05157 0,0.26345 0.03985,0.52468 0.03985,0.26123 0.119547,0.51139 0.0797,0.25017 0.197031,0.48483 0.117333,0.23467 0.270088,0.44277 h -0.549031 q -0.172679,-0.19925 -0.298867,-0.42727 -0.123975,-0.22803 -0.205887,-0.47598 -0.08191,-0.25016 -0.12176,-0.51582 -0.03985,-0.26566 -0.03985,-0.54017 z" />
<path
id="path3554"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 64.022991,421.5851 q 0,0.27451 -0.03985,0.54017 -0.03985,0.26566 -0.121761,0.51582 -0.08191,0.24795 -0.2081,0.47598 -0.123975,0.22802 -0.296654,0.42727 h -0.54903 q 0.152754,-0.2081 0.270087,-0.44277 0.117333,-0.23466 0.197031,-0.48483 0.0797,-0.25016 0.119547,-0.51139 0.03985,-0.26123 0.03985,-0.52468 0,-0.54018 -0.159396,-1.05157 -0.159396,-0.5114 -0.471546,-0.93867 h 0.553458 q 0.172679,0.20589 0.296654,0.44056 0.126188,0.23245 0.2081,0.48704 0.08191,0.25238 0.121761,0.52246 0.03985,0.26788 0.03985,0.54461 z" />
</g>
<path
id="path887"
d="m 29.310708,424.71888 v 24.15929"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1273)"
d="M 59.136975,450.17352 V 426.01423"
id="path1269" />
<ellipse
style="opacity:0.35200004;fill:#f6f6f6;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0"
id="ellipse1795"
cx="29.378836"
cy="476.1214"
rx="7.9779401"
ry="2.5193012" />
<path
style="opacity:1;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.61292613;stroke-miterlimit:4;stroke-dasharray:1.22585233, 1.22585233;stroke-dashoffset:0"
d="m 22.552832,463.45356 v 11.43809 h 0.0074 c -0.003,0.0155 -0.0055,0.0309 -0.0074,0.0464 0.0027,0.0261 0.0068,0.0523 0.01247,0.0784 -0.0056,0.026 -0.0098,0.0521 -0.01247,0.0782 -1.88e-4,1.1967 3.071842,2.16686 6.861481,2.16687 3.789691,10e-6 6.8618,-0.97015 6.861613,-2.16687 -0.0014,-0.0261 -0.0043,-0.0522 -0.0087,-0.0782 0.0044,-0.0261 0.0073,-0.0522 0.0087,-0.0784 -0.0012,-0.0155 -0.0029,-0.0309 -0.0052,-0.0464 v -11.43809 z"
id="path1600" />
<ellipse
style="opacity:1;fill:#2b42e0;fill-opacity:0.99686028;stroke:none;stroke-width:0.54689825;stroke-miterlimit:4;stroke-dasharray:1.09379646, 1.09379646;stroke-dashoffset:0"
id="ellipse1602"
cx="29.414373"
cy="463.53864"
rx="6.8615742"
ry="2.1667714" />
<path
id="rect1604"
d="m 34.522702,456.06339 a 7.9779397,2.5193012 0 0 1 -3.835688,0.5621 v 21.86846 a 7.97794,2.5193012 0 0 0 3.835688,-0.55678 z"
style="opacity:0.23699999;fill:#ffffff;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<path
style="opacity:1;fill:#38c8e2;fill-opacity:0.99843014;stroke:none;stroke-width:0.71264803;stroke-miterlimit:4;stroke-dasharray:1.4252962, 1.4252962;stroke-dashoffset:0"
d="m 58.849414,451.62178 a 7.9779397,2.5193012 0 0 0 -7.962278,2.42016 h -0.01572 v 0.0992 21.63446 h 0.0087 a 7.9779402,2.5193012 0 0 0 -0.0087,0.0538 7.9779402,2.5193012 0 0 0 0.01461,0.0912 7.9779402,2.5193012 0 0 0 -0.01461,0.091 7.9779402,2.5193012 0 0 0 7.977995,2.51934 7.9779402,2.5193012 0 0 0 7.977992,-2.51934 7.9779402,2.5193012 0 0 0 -0.0102,-0.091 7.9779402,2.5193012 0 0 0 0.0102,-0.0912 7.9779402,2.5193012 0 0 0 -0.0062,-0.0538 v -21.59527 a 7.9779397,2.5193012 0 0 0 0.0062,-0.0392 7.9779397,2.5193012 0 0 0 -0.0062,-0.0549 v -0.0443 h -0.0051 a 7.9779397,2.5193012 0 0 0 -7.966682,-2.42015 z"
id="path1615" />
<path
id="path1619"
d="m 52.023381,455.74583 v 11.4381 h 0.0074 c -0.003,0.0155 -0.0054,0.0309 -0.0074,0.0464 0.0026,0.0261 0.0068,0.0523 0.01247,0.0784 -0.0057,0.026 -0.0098,0.0521 -0.01247,0.0782 -1.89e-4,1.1967 3.071845,2.16686 6.861483,2.16688 3.789694,0 6.861805,-0.97016 6.861616,-2.16688 -0.0013,-0.0261 -0.0043,-0.0522 -0.0087,-0.0782 0.0044,-0.0261 0.0073,-0.0522 0.0087,-0.0784 -0.0013,-0.0155 -0.003,-0.0309 -0.0051,-0.0464 v -11.4381 z"
style="opacity:1;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.61292613;stroke-miterlimit:4;stroke-dasharray:1.22585233, 1.22585233;stroke-dashoffset:0" />
<ellipse
ry="1.7374003"
rx="6.8615742"
cy="455.85968"
cx="58.884907"
id="ellipse1621"
style="opacity:1;fill:#2b42e0;fill-opacity:0.99686028;stroke:none;stroke-width:0.48972231;stroke-miterlimit:4;stroke-dasharray:0.97944464, 0.97944464;stroke-dashoffset:0" />
<path
style="opacity:0.23699999;fill:#ffffff;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 63.993255,456.06339 a 7.9779397,2.5193012 0 0 1 -3.835688,0.56209 v 21.86847 a 7.9779402,2.5193012 0 0 0 3.835688,-0.55678 z"
id="path1623" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1635)"
d="m 29.310708,479.12607 v 12.37107"
id="path1631" />
<ellipse
ry="2.5193012"
rx="7.9779401"
cy="476.1214"
cx="58.849365"
id="ellipse1793"
style="opacity:0.15400002;fill:#f6f6f6;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0" />
<path
id="path1803"
d="M 59.136975,492.79249 V 480.42141"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)" />
<ellipse
style="opacity:0.15400002;fill:#000000;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0"
id="ellipse1617"
cx="58.849365"
cy="454.14102"
rx="7.9779401"
ry="2.5193012" />
<rect
style="opacity:0.86699997;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.79897124;stroke-miterlimit:4;stroke-dasharray:1.59794247, 1.59794247;stroke-dashoffset:0"
id="rect2311"
width="56.188347"
height="28.41802"
x="134.93646"
y="400.29175"
ry="1.3381894" />
<g
id="text2317"
style="font-style:normal;font-weight:normal;font-size:2.49987245px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06249681"
aria-label="Processus
">
<path
id="path3890"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 136.39358,398.09352 h 0.0745 q 0.15991,0 0.24047,-0.0635 0.0818,-0.0635 0.0818,-0.20629 0,-0.13305 -0.0732,-0.19652 -0.072,-0.0635 -0.22703,-0.0635 h -0.0964 z m 0.77999,-0.28319 q 0,0.11719 -0.0354,0.2246 -0.0354,0.10742 -0.11719,0.1892 -0.0806,0.0818 -0.21361,0.13061 -0.13183,0.0488 -0.32713,0.0488 h -0.0867 v 0.63473 h -0.37839 v -1.78458 h 0.49558 q 0.17211,0 0.29661,0.0391 0.12573,0.0378 0.20629,0.10986 0.0818,0.0708 0.12084,0.17455 0.0391,0.10254 0.0391,0.23314 z" />
<path
id="path3892"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 138.19159,397.64799 q 0.0147,0 0.0317,0.001 0.0183,0 0.0342,0.002 0.0171,0.001 0.0305,0.004 0.0147,10e-4 0.022,0.004 v 0.3491 q -0.01,-0.002 -0.0268,-0.005 -0.0171,-0.002 -0.0366,-0.004 -0.0183,-0.002 -0.0366,-0.002 -0.0183,-0.001 -0.0305,-0.001 -0.072,0 -0.13305,0.0183 -0.0598,0.0183 -0.10375,0.0598 -0.0427,0.0403 -0.0671,0.10742 -0.0232,0.0659 -0.0232,0.16234 v 0.69455 h -0.37229 v -1.36468 h 0.28196 l 0.0549,0.20507 h 0.0183 q 0.0293,-0.0525 0.0635,-0.0952 0.0342,-0.0427 0.0757,-0.072 0.0427,-0.0305 0.0952,-0.0464 0.0537,-0.0171 0.12207,-0.0171 z" />
<path
id="path3894"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 138.87393,398.35352 q 0,0.20385 0.0574,0.3076 0.0574,0.10254 0.18676,0.10254 0.12816,0 0.18553,-0.10376 0.0574,-0.10375 0.0574,-0.30638 0,-0.20385 -0.0574,-0.30394 -0.0574,-0.10131 -0.18798,-0.10131 -0.12816,0 -0.18553,0.10131 -0.0562,0.10009 -0.0562,0.30394 z m 0.86665,0 q 0,0.17089 -0.0439,0.30272 -0.0427,0.13183 -0.12451,0.22216 -0.0806,0.0903 -0.19774,0.13793 -0.11596,0.0464 -0.26122,0.0464 -0.13549,0 -0.24901,-0.0464 -0.11352,-0.0476 -0.19652,-0.13793 -0.0818,-0.0903 -0.12817,-0.22216 -0.0464,-0.13183 -0.0464,-0.30272 0,-0.16967 0.0427,-0.3015 0.0439,-0.13183 0.1245,-0.22093 0.0818,-0.0903 0.19775,-0.13672 0.11596,-0.0464 0.26244,-0.0464 0.13549,0 0.24901,0.0464 0.11352,0.0464 0.1953,0.13672 0.083,0.0891 0.12939,0.22093 0.0464,0.13183 0.0464,0.3015 z" />
<path
id="path3896"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 140.63043,399.06271 q -0.14648,0 -0.26488,-0.0403 -0.11718,-0.0403 -0.20141,-0.1245 -0.083,-0.0854 -0.12816,-0.21728 -0.0439,-0.13305 -0.0439,-0.31736 0,-0.20385 0.0452,-0.34056 0.0464,-0.13794 0.12939,-0.22094 0.0842,-0.083 0.2014,-0.1184 0.1184,-0.0354 0.26244,-0.0354 0.10497,0 0.20873,0.0256 0.10375,0.0256 0.1953,0.072 l -0.10741,0.28319 q -0.0806,-0.0354 -0.15503,-0.0574 -0.0745,-0.0232 -0.14159,-0.0232 -0.13549,0 -0.19652,0.10375 -0.061,0.10254 -0.061,0.30882 0,0.20507 0.061,0.30272 0.061,0.0976 0.19164,0.0976 0.10619,0 0.19286,-0.0269 0.0867,-0.0281 0.17699,-0.0708 v 0.31005 q -0.0452,0.022 -0.0879,0.0391 -0.0427,0.0171 -0.0867,0.0281 -0.0427,0.011 -0.0903,0.0159 -0.0464,0.006 -0.10009,0.006 z" />
<path
id="path3898"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 141.8645,397.91287 q -0.0989,0 -0.16479,0.0696 -0.0647,0.0696 -0.0745,0.21849 h 0.47483 q -0.001,-0.0623 -0.0159,-0.11474 -0.0147,-0.0525 -0.0439,-0.0903 -0.0293,-0.0391 -0.0732,-0.061 -0.0439,-0.022 -0.10253,-0.022 z m 0.0476,1.14984 q -0.14647,0 -0.26976,-0.0427 -0.12328,-0.0427 -0.21239,-0.12817 -0.0891,-0.0867 -0.13915,-0.21727 -0.0488,-0.13183 -0.0488,-0.30882 0,-0.17944 0.0452,-0.31371 0.0452,-0.13427 0.12573,-0.22338 0.0818,-0.0903 0.1953,-0.13549 0.11474,-0.0452 0.2539,-0.0452 0.13549,0 0.24412,0.0415 0.10986,0.0403 0.18554,0.11962 0.0769,0.0794 0.11718,0.19531 0.0415,0.11474 0.0415,0.26366 v 0.18065 H 141.618 q 0.002,0.0781 0.0244,0.14159 0.0232,0.0623 0.0635,0.1062 0.0415,0.0427 0.0989,0.0659 0.0586,0.0232 0.13305,0.0232 0.0623,0 0.11718,-0.006 0.0562,-0.007 0.10863,-0.0207 0.0525,-0.0134 0.10376,-0.033 0.0513,-0.0208 0.10497,-0.0476 v 0.28807 q -0.0488,0.0256 -0.0989,0.0439 -0.0488,0.0171 -0.10375,0.0293 -0.0549,0.0122 -0.1184,0.0171 -0.0635,0.006 -0.13916,0.006 z" />
<path
id="path3900"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 143.67715,398.63305 q 0,0.10741 -0.0391,0.18798 -0.0391,0.0806 -0.11108,0.13427 -0.072,0.0537 -0.17455,0.0806 -0.10254,0.0268 -0.22948,0.0268 -0.0671,0 -0.12451,-0.005 -0.0574,-0.004 -0.10863,-0.0134 -0.0513,-0.01 -0.0989,-0.0244 -0.0476,-0.0147 -0.0964,-0.0366 v -0.3076 q 0.0513,0.0256 0.10742,0.0464 0.0574,0.0208 0.11352,0.0366 0.0562,0.0146 0.10864,0.0232 0.0537,0.009 0.0989,0.009 0.05,0 0.0854,-0.009 0.0354,-0.01 0.0574,-0.0256 0.0232,-0.0171 0.033,-0.0391 0.011,-0.0232 0.011,-0.0488 0,-0.0256 -0.009,-0.0452 -0.007,-0.0208 -0.0354,-0.0427 -0.0281,-0.0232 -0.083,-0.0513 -0.0537,-0.0293 -0.14526,-0.0708 -0.0891,-0.0403 -0.15502,-0.0794 -0.0647,-0.0403 -0.10741,-0.0891 -0.0415,-0.0488 -0.0623,-0.11108 -0.0207,-0.0635 -0.0207,-0.15014 0,-0.0952 0.0366,-0.16601 0.0366,-0.072 0.10376,-0.11962 0.0671,-0.0476 0.16112,-0.0708 0.0952,-0.0244 0.21117,-0.0244 0.12206,0 0.23192,0.0281 0.10986,0.0281 0.22582,0.0842 l -0.1123,0.26366 q -0.0928,-0.0439 -0.17699,-0.072 -0.0842,-0.0281 -0.16845,-0.0281 -0.0757,0 -0.10986,0.0269 -0.0329,0.0268 -0.0329,0.0732 0,0.0244 0.009,0.0439 0.009,0.0183 0.0342,0.0391 0.0256,0.0195 0.072,0.0439 0.0464,0.0232 0.12084,0.0574 0.0867,0.0378 0.15624,0.0757 0.0696,0.0366 0.11962,0.0842 0.05,0.0476 0.0769,0.11108 0.0269,0.0635 0.0269,0.1538 z" />
<path
id="path3902"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 144.87826,398.63305 q 0,0.10741 -0.0391,0.18798 -0.0391,0.0806 -0.11108,0.13427 -0.072,0.0537 -0.17455,0.0806 -0.10253,0.0268 -0.22948,0.0268 -0.0671,0 -0.12451,-0.005 -0.0574,-0.004 -0.10863,-0.0134 -0.0513,-0.01 -0.0989,-0.0244 -0.0476,-0.0147 -0.0964,-0.0366 v -0.3076 q 0.0513,0.0256 0.10742,0.0464 0.0574,0.0208 0.11352,0.0366 0.0562,0.0146 0.10864,0.0232 0.0537,0.009 0.0989,0.009 0.05,0 0.0854,-0.009 0.0354,-0.01 0.0574,-0.0256 0.0232,-0.0171 0.033,-0.0391 0.011,-0.0232 0.011,-0.0488 0,-0.0256 -0.009,-0.0452 -0.007,-0.0208 -0.0354,-0.0427 -0.0281,-0.0232 -0.083,-0.0513 -0.0537,-0.0293 -0.14526,-0.0708 -0.0891,-0.0403 -0.15502,-0.0794 -0.0647,-0.0403 -0.10741,-0.0891 -0.0415,-0.0488 -0.0623,-0.11108 -0.0207,-0.0635 -0.0207,-0.15014 0,-0.0952 0.0366,-0.16601 0.0366,-0.072 0.10376,-0.11962 0.0671,-0.0476 0.16112,-0.0708 0.0952,-0.0244 0.21117,-0.0244 0.12207,0 0.23192,0.0281 0.10986,0.0281 0.22582,0.0842 l -0.1123,0.26366 q -0.0928,-0.0439 -0.17699,-0.072 -0.0842,-0.0281 -0.16845,-0.0281 -0.0757,0 -0.10986,0.0269 -0.0329,0.0268 -0.0329,0.0732 0,0.0244 0.009,0.0439 0.009,0.0183 0.0342,0.0391 0.0256,0.0195 0.072,0.0439 0.0464,0.0232 0.12084,0.0574 0.0867,0.0378 0.15624,0.0757 0.0696,0.0366 0.11963,0.0842 0.05,0.0476 0.0769,0.11108 0.0269,0.0635 0.0269,0.1538 z" />
<path
id="path3904"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 146.06228,399.0383 -0.05,-0.17455 h -0.0195 q -0.0305,0.0525 -0.0732,0.0903 -0.0415,0.0366 -0.0915,0.061 -0.05,0.0244 -0.1062,0.0354 -0.0562,0.0122 -0.11474,0.0122 -0.10009,0 -0.18187,-0.0281 -0.0818,-0.0293 -0.14038,-0.0903 -0.0586,-0.061 -0.0903,-0.15502 -0.0317,-0.094 -0.0317,-0.22582 v -0.88985 h 0.37229 v 0.79708 q 0,0.1477 0.0439,0.22216 0.0452,0.0732 0.14281,0.0732 0.0732,0 0.12207,-0.0293 0.0488,-0.0293 0.0769,-0.0867 0.0293,-0.0574 0.0415,-0.1416 0.0122,-0.0842 0.0122,-0.19286 v -0.64206 h 0.37229 v 1.36468 z" />
<path
id="path3906"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';stroke-width:0.06249681"
d="m 147.64667,398.63305 q 0,0.10741 -0.0391,0.18798 -0.0391,0.0806 -0.11108,0.13427 -0.072,0.0537 -0.17455,0.0806 -0.10253,0.0268 -0.22948,0.0268 -0.0671,0 -0.1245,-0.005 -0.0574,-0.004 -0.10864,-0.0134 -0.0513,-0.01 -0.0989,-0.0244 -0.0476,-0.0147 -0.0964,-0.0366 v -0.3076 q 0.0513,0.0256 0.10741,0.0464 0.0574,0.0208 0.11352,0.0366 0.0562,0.0146 0.10864,0.0232 0.0537,0.009 0.0989,0.009 0.05,0 0.0855,-0.009 0.0354,-0.01 0.0574,-0.0256 0.0232,-0.0171 0.0329,-0.0391 0.011,-0.0232 0.011,-0.0488 0,-0.0256 -0.009,-0.0452 -0.007,-0.0208 -0.0354,-0.0427 -0.0281,-0.0232 -0.083,-0.0513 -0.0537,-0.0293 -0.14525,-0.0708 -0.0891,-0.0403 -0.15502,-0.0794 -0.0647,-0.0403 -0.10742,-0.0891 -0.0415,-0.0488 -0.0623,-0.11108 -0.0207,-0.0635 -0.0207,-0.15014 0,-0.0952 0.0366,-0.16601 0.0366,-0.072 0.10375,-0.11962 0.0671,-0.0476 0.16112,-0.0708 0.0952,-0.0244 0.21118,-0.0244 0.12206,0 0.23192,0.0281 0.10985,0.0281 0.22582,0.0842 l -0.1123,0.26366 q -0.0928,-0.0439 -0.177,-0.072 -0.0842,-0.0281 -0.16844,-0.0281 -0.0757,0 -0.10986,0.0269 -0.033,0.0268 -0.033,0.0732 0,0.0244 0.009,0.0439 0.009,0.0183 0.0342,0.0391 0.0256,0.0195 0.072,0.0439 0.0464,0.0232 0.12084,0.0574 0.0867,0.0378 0.15625,0.0757 0.0696,0.0366 0.11962,0.0842 0.05,0.0476 0.0769,0.11108 0.0268,0.0635 0.0268,0.1538 z" />
</g>
<path
style="opacity:1;fill:#38c8e2;fill-opacity:0.99843014;stroke:none;stroke-width:0.71264803;stroke-miterlimit:4;stroke-dasharray:1.4252962, 1.4252962;stroke-dashoffset:0"
d="m 147.26107,451.62178 a 7.9779397,2.5193012 0 0 0 -7.96227,2.42016 h -0.0157 v 0.0992 21.63446 h 0.009 a 7.9779402,2.5193012 0 0 0 -0.009,0.0538 7.9779402,2.5193012 0 0 0 0.0146,0.0912 7.9779402,2.5193012 0 0 0 -0.0146,0.091 7.9779402,2.5193012 0 0 0 7.97798,2.51934 7.9779402,2.5193012 0 0 0 7.97799,-2.51934 7.9779402,2.5193012 0 0 0 -0.0102,-0.091 7.9779402,2.5193012 0 0 0 0.0102,-0.0912 7.9779402,2.5193012 0 0 0 -0.006,-0.0538 v -21.59527 a 7.9779397,2.5193012 0 0 0 0.006,-0.0392 7.9779397,2.5193012 0 0 0 -0.006,-0.0549 v -0.0443 h -0.005 a 7.9779397,2.5193012 0 0 0 -7.96668,-2.42015 z"
id="path2319" />
<ellipse
style="opacity:0.15400002;fill:#000000;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0"
id="ellipse2321"
cx="147.26097"
cy="454.14102"
rx="7.9779401"
ry="2.5193012" />
<g
id="text2325"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53392935px;line-height:1.25;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="write()">
<path
id="path3570"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 141.82149,422.82706 -0.19039,-0.86561 q -0.009,-0.0376 -0.0244,-0.10627 -0.0133,-0.0708 -0.031,-0.15718 -0.0177,-0.0885 -0.0376,-0.18596 -0.0177,-0.0996 -0.0376,-0.19703 -0.0443,-0.22803 -0.0974,-0.49147 h -0.0133 q -0.0509,0.26344 -0.093,0.49368 -0.0177,0.0974 -0.0376,0.19703 -0.0177,0.0996 -0.0354,0.18818 -0.0177,0.0863 -0.0332,0.15718 -0.0133,0.0708 -0.0221,0.11069 l -0.19925,0.85676 h -0.72614 l -0.66636,-2.47507 h 0.67079 l 0.25016,1.09585 q 0.0199,0.0863 0.0399,0.2081 0.0221,0.11955 0.0399,0.24352 0.0199,0.12176 0.0354,0.23245 0.0155,0.10848 0.0244,0.17268 h 0.0133 q 0.002,-0.0421 0.009,-0.10848 0.009,-0.0686 0.0199,-0.14611 0.0111,-0.0775 0.0221,-0.15718 0.0133,-0.0819 0.0243,-0.15275 0.0133,-0.0709 0.0221,-0.12398 0.0111,-0.0553 0.0177,-0.0775 l 0.27009,-1.18662 h 0.74384 l 0.25902,1.18662 q 0.0111,0.0487 0.0288,0.15054 0.0177,0.10183 0.0354,0.21917 0.0199,0.11512 0.0332,0.22581 0.0133,0.10848 0.0155,0.17046 h 0.0133 q 0.007,-0.0553 0.0221,-0.16382 0.0177,-0.10848 0.0376,-0.23245 0.0199,-0.12619 0.0421,-0.25017 0.0243,-0.12397 0.0443,-0.21031 l 0.25902,-1.09585 h 0.66194 l -0.67522,2.47507 z" />
<path
id="path3572"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 144.87879,420.3055 q 0.0266,0 0.0576,0.002 0.0332,0 0.062,0.004 0.031,0.002 0.0553,0.007 0.0266,0.002 0.0398,0.007 v 0.63315 q -0.0177,-0.004 -0.0487,-0.009 -0.031,-0.004 -0.0664,-0.007 -0.0332,-0.004 -0.0664,-0.004 -0.0332,-0.002 -0.0554,-0.002 -0.13062,0 -0.24131,0.0332 -0.10847,0.0332 -0.18817,0.10848 -0.0775,0.0731 -0.12176,0.19482 -0.0421,0.11954 -0.0421,0.29444 v 1.25967 h -0.67522 v -2.47507 h 0.5114 l 0.0996,0.37193 h 0.0332 q 0.0531,-0.0952 0.11512,-0.17268 0.062,-0.0775 0.13726,-0.13062 0.0775,-0.0553 0.17268,-0.0841 0.0974,-0.031 0.22138,-0.031 z" />
<path
id="path3574"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 145.52523,419.71219 q 0,-0.0952 0.0288,-0.15718 0.0288,-0.0642 0.0775,-0.10183 0.0509,-0.0399 0.11734,-0.0553 0.0686,-0.0155 0.14389,-0.0155 0.0753,0 0.14169,0.0155 0.0664,0.0155 0.11512,0.0553 0.0509,0.0376 0.0797,0.10183 0.031,0.062 0.031,0.15718 0,0.093 -0.031,0.15719 -0.0288,0.0642 -0.0797,0.10405 -0.0487,0.0376 -0.11512,0.0553 -0.0664,0.0155 -0.14169,0.0155 -0.0753,0 -0.14389,-0.0155 -0.0664,-0.0177 -0.11734,-0.0553 -0.0487,-0.0399 -0.0775,-0.10405 -0.0288,-0.0642 -0.0288,-0.15719 z m 0.704,3.11487 h -0.67522 v -2.47507 h 0.67522 z" />
<path
id="path3576"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 147.94052,422.33337 q 0.0996,0 0.18818,-0.0221 0.0908,-0.0221 0.18374,-0.0553 v 0.50254 q -0.0952,0.0487 -0.23688,0.0797 -0.13947,0.0332 -0.30551,0.0332 -0.1616,0 -0.30108,-0.0376 -0.13947,-0.0376 -0.2413,-0.13062 -0.10184,-0.0952 -0.16161,-0.25237 -0.0576,-0.1594 -0.0576,-0.39849 v -1.19326 h -0.32322 v -0.28558 l 0.37192,-0.22582 0.19482,-0.52246 h 0.4317 v 0.52689 h 0.60216 v 0.50697 h -0.60216 v 1.19326 q 0,0.14389 0.0708,0.21252 0.0708,0.0686 0.18596,0.0686 z" />
<path
id="path3578"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 149.81342,420.7859 q -0.17932,0 -0.29886,0.12619 -0.11734,0.12619 -0.13505,0.39628 h 0.86118 q -0.002,-0.11291 -0.0288,-0.2081 -0.0266,-0.0952 -0.0797,-0.16383 -0.0531,-0.0708 -0.13283,-0.11069 -0.0797,-0.0399 -0.18596,-0.0399 z m 0.0863,2.08543 q -0.26566,0 -0.48925,-0.0775 -0.2236,-0.0775 -0.38521,-0.23245 -0.16161,-0.15719 -0.25238,-0.39407 -0.0885,-0.23909 -0.0885,-0.56009 0,-0.32544 0.0819,-0.56896 0.0819,-0.24352 0.22802,-0.40513 0.14833,-0.16382 0.35422,-0.24574 0.2081,-0.0819 0.46048,-0.0819 0.24573,0 0.44276,0.0753 0.19925,0.0731 0.3365,0.21696 0.13948,0.1439 0.21253,0.35421 0.0753,0.2081 0.0753,0.47819 v 0.32765 h -1.50983 q 0.004,0.14168 0.0443,0.2568 0.0421,0.11291 0.11511,0.1926 0.0753,0.0775 0.17932,0.11955 0.10627,0.0421 0.24131,0.0421 0.11291,0 0.21253,-0.0111 0.10184,-0.0133 0.19703,-0.0376 0.0952,-0.0243 0.18818,-0.0598 0.093,-0.0376 0.19039,-0.0863 v 0.52246 q -0.0886,0.0465 -0.17932,0.0797 -0.0886,0.031 -0.18818,0.0531 -0.0996,0.0221 -0.21474,0.031 -0.11512,0.0111 -0.25238,0.0111 z" />
<path
id="path3580"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 151.27898,421.5851 q 0,-0.27673 0.0399,-0.54461 0.0399,-0.27008 0.12176,-0.52246 0.0819,-0.25459 0.20589,-0.48704 0.12618,-0.23467 0.29886,-0.44056 h 0.55346 q -0.31215,0.42727 -0.47154,0.93867 -0.1594,0.51139 -0.1594,1.05157 0,0.26345 0.0399,0.52468 0.0399,0.26123 0.11955,0.51139 0.0797,0.25017 0.19703,0.48483 0.11733,0.23467 0.27008,0.44277 h -0.54903 q -0.17268,-0.19925 -0.29886,-0.42727 -0.12398,-0.22803 -0.20589,-0.47598 -0.0819,-0.25016 -0.12176,-0.51582 -0.0399,-0.26566 -0.0399,-0.54017 z" />
<path
id="path3582"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 153.99314,421.5851 q 0,0.27451 -0.0399,0.54017 -0.0399,0.26566 -0.12176,0.51582 -0.0819,0.24795 -0.2081,0.47598 -0.12398,0.22802 -0.29665,0.42727 h -0.54904 q 0.15276,-0.2081 0.27009,-0.44277 0.11734,-0.23466 0.19703,-0.48483 0.0797,-0.25016 0.11955,-0.51139 0.0399,-0.26123 0.0399,-0.52468 0,-0.54018 -0.1594,-1.05157 -0.15939,-0.5114 -0.47154,-0.93867 h 0.55346 q 0.17267,0.20589 0.29665,0.44056 0.12619,0.23245 0.2081,0.48704 0.0819,0.25238 0.12176,0.52246 0.0399,0.26788 0.0399,0.54461 z" />
</g>
<g
id="text2329"
style="font-style:normal;font-weight:normal;font-size:4.53392935px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11334824"
aria-label="read()">
<path
id="path3557"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 170.69201,420.3055 q 0.0266,0 0.0576,0.002 0.0332,0 0.062,0.004 0.031,0.002 0.0553,0.007 0.0266,0.002 0.0399,0.007 v 0.63315 q -0.0177,-0.004 -0.0487,-0.009 -0.031,-0.004 -0.0664,-0.007 -0.0332,-0.004 -0.0664,-0.004 -0.0332,-0.002 -0.0554,-0.002 -0.13061,0 -0.2413,0.0332 -0.10848,0.0332 -0.18818,0.10848 -0.0775,0.0731 -0.12176,0.19482 -0.0421,0.11954 -0.0421,0.29444 v 1.25967 h -0.67522 v -2.47507 h 0.51139 l 0.0996,0.37193 h 0.0332 q 0.0531,-0.0952 0.11512,-0.17268 0.062,-0.0775 0.13726,-0.13062 0.0775,-0.0553 0.17268,-0.0841 0.0974,-0.031 0.22138,-0.031 z" />
<path
id="path3559"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 172.36788,420.7859 q -0.17932,0 -0.29886,0.12619 -0.11734,0.12619 -0.13505,0.39628 h 0.86118 q -0.002,-0.11291 -0.0288,-0.2081 -0.0266,-0.0952 -0.0797,-0.16383 -0.0531,-0.0708 -0.13283,-0.11069 -0.0797,-0.0399 -0.18597,-0.0399 z m 0.0863,2.08543 q -0.26566,0 -0.48925,-0.0775 -0.2236,-0.0775 -0.38521,-0.23245 -0.16161,-0.15719 -0.25238,-0.39407 -0.0885,-0.23909 -0.0885,-0.56009 0,-0.32544 0.0819,-0.56896 0.0819,-0.24352 0.22803,-0.40513 0.14832,-0.16382 0.35421,-0.24574 0.2081,-0.0819 0.46048,-0.0819 0.24573,0 0.44276,0.0753 0.19925,0.0731 0.3365,0.21696 0.13948,0.1439 0.21253,0.35421 0.0753,0.2081 0.0753,0.47819 v 0.32765 h -1.50983 q 0.004,0.14168 0.0443,0.2568 0.0421,0.11291 0.11512,0.1926 0.0753,0.0775 0.17932,0.11955 0.10626,0.0421 0.2413,0.0421 0.11291,0 0.21253,-0.0111 0.10184,-0.0133 0.19703,-0.0376 0.0952,-0.0243 0.18818,-0.0598 0.093,-0.0376 0.19039,-0.0863 v 0.52246 q -0.0886,0.0465 -0.17932,0.0797 -0.0886,0.031 -0.18818,0.0531 -0.0996,0.0221 -0.21474,0.031 -0.11512,0.0111 -0.25238,0.0111 z" />
<path
id="path3561"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 175.4429,422.82706 -0.13062,-0.33651 h -0.0199 q -0.0731,0.0996 -0.14612,0.17268 -0.073,0.0709 -0.15939,0.11734 -0.0863,0.0465 -0.19482,0.0686 -0.10626,0.0221 -0.24795,0.0221 -0.15054,0 -0.27894,-0.0465 -0.1284,-0.0487 -0.2236,-0.1439 -0.093,-0.0974 -0.14611,-0.24352 -0.0531,-0.14832 -0.0531,-0.34978 0,-0.39407 0.25237,-0.58003 0.25238,-0.18817 0.75492,-0.2081 l 0.39406,-0.0133 v -0.18596 q 0,-0.15276 -0.0885,-0.22581 -0.0885,-0.0731 -0.24795,-0.0731 -0.1594,0 -0.31215,0.0465 -0.15054,0.0465 -0.3033,0.12398 l -0.21917,-0.4472 q 0.18597,-0.10405 0.41178,-0.16382 0.22581,-0.0598 0.47376,-0.0598 0.46269,0 0.70842,0.21696 0.24795,0.21695 0.24795,0.65972 v 1.64931 z m -0.19925,-1.14677 -0.22359,0.009 q -0.13505,0.004 -0.22803,0.0354 -0.093,0.031 -0.15054,0.0841 -0.0554,0.0509 -0.0819,0.12398 -0.0243,0.0708 -0.0243,0.15939 0,0.15497 0.0753,0.22139 0.0753,0.0642 0.19703,0.0642 0.093,0 0.17268,-0.031 0.0797,-0.0332 0.13725,-0.0952 0.0598,-0.0642 0.093,-0.15497 0.0332,-0.093 0.0332,-0.21253 z" />
<path
id="path3563"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 177.33794,422.87133 q -0.19039,0 -0.34757,-0.0819 -0.15719,-0.0819 -0.27009,-0.24131 -0.11291,-0.16161 -0.17711,-0.4007 -0.062,-0.23909 -0.062,-0.55346 0,-0.31879 0.062,-0.55788 0.0642,-0.24131 0.17932,-0.40292 0.11734,-0.16382 0.27895,-0.24574 0.1616,-0.0819 0.35642,-0.0819 0.11955,0 0.21917,0.0288 0.0996,0.0266 0.17932,0.0775 0.0797,0.0487 0.14169,0.11511 0.0642,0.0642 0.1129,0.14169 h 0.0221 q -0.0133,-0.0863 -0.0243,-0.17489 -0.0111,-0.0753 -0.0199,-0.1594 -0.007,-0.0863 -0.007,-0.15939 v -0.79256 h 0.67522 v 3.44473 h -0.51582 l -0.13062,-0.32101 h -0.0288 q -0.0465,0.0753 -0.10626,0.1439 -0.0598,0.0664 -0.13947,0.11512 -0.0775,0.0487 -0.17711,0.0775 -0.0974,0.0288 -0.22138,0.0288 z m 0.24573,-0.53796 q 0.11955,0 0.20368,-0.0399 0.0841,-0.0421 0.13504,-0.12397 0.0531,-0.0841 0.0775,-0.2081 0.0266,-0.12398 0.0288,-0.29001 v -0.0731 q 0,-0.17932 -0.0221,-0.31879 -0.0221,-0.13947 -0.0731,-0.23245 -0.0509,-0.0952 -0.13726,-0.1439 -0.0863,-0.0487 -0.21695,-0.0487 -0.21253,0 -0.31215,0.19261 -0.0996,0.19039 -0.0996,0.55567 0,0.36528 0.0996,0.54903 0.10183,0.18153 0.31657,0.18153 z" />
<path
id="path3565"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 179.19092,421.5851 q 0,-0.27673 0.0398,-0.54461 0.0399,-0.27008 0.12177,-0.52246 0.0819,-0.25459 0.20588,-0.48704 0.12619,-0.23467 0.29887,-0.44056 h 0.55346 q -0.31215,0.42727 -0.47155,0.93867 -0.15939,0.51139 -0.15939,1.05157 0,0.26345 0.0398,0.52468 0.0399,0.26123 0.11955,0.51139 0.0797,0.25017 0.19703,0.48483 0.11734,0.23467 0.27009,0.44277 h -0.54903 q -0.17268,-0.19925 -0.29887,-0.42727 -0.12397,-0.22803 -0.20588,-0.47598 -0.0819,-0.25016 -0.12177,-0.51582 -0.0398,-0.26566 -0.0398,-0.54017 z" />
<path
id="path3567"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ffffff;stroke-width:0.11334824"
d="m 181.90507,421.5851 q 0,0.27451 -0.0398,0.54017 -0.0399,0.26566 -0.12177,0.51582 -0.0819,0.24795 -0.2081,0.47598 -0.12397,0.22802 -0.29665,0.42727 h -0.54903 q 0.15275,-0.2081 0.27009,-0.44277 0.11733,-0.23466 0.19703,-0.48483 0.0797,-0.25016 0.11955,-0.51139 0.0399,-0.26123 0.0399,-0.52468 0,-0.54018 -0.1594,-1.05157 -0.1594,-0.5114 -0.47155,-0.93867 h 0.55346 q 0.17268,0.20589 0.29665,0.44056 0.12619,0.23245 0.2081,0.48704 0.0819,0.25238 0.12177,0.52246 0.0398,0.26788 0.0398,0.54461 z" />
</g>
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 147.19292,424.71888 v 24.15929"
id="path2331" />
<path
id="path2333"
d="M 177.01918,450.17352 V 426.01423"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1273)" />
<ellipse
ry="2.5193012"
rx="7.9779401"
cy="476.1214"
cx="147.26097"
id="ellipse2335"
style="opacity:0.35200004;fill:#f6f6f6;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0" />
<path
id="path2337"
d="m 140.43504,463.45356 v 11.43809 h 0.007 c -0.003,0.0155 -0.005,0.0309 -0.007,0.0464 0.003,0.0261 0.007,0.0523 0.0125,0.0784 -0.006,0.026 -0.01,0.0521 -0.0125,0.0782 -1.9e-4,1.1967 3.07184,2.16686 6.86148,2.16687 3.78969,10e-6 6.8618,-0.97015 6.86161,-2.16687 -0.001,-0.0261 -0.004,-0.0522 -0.009,-0.0782 0.004,-0.0261 0.007,-0.0522 0.009,-0.0784 -0.001,-0.0155 -0.003,-0.0309 -0.005,-0.0464 v -11.43809 z"
style="opacity:1;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.61292613;stroke-miterlimit:4;stroke-dasharray:1.22585233, 1.22585233;stroke-dashoffset:0" />
<ellipse
ry="2.1667714"
rx="6.8615742"
cy="463.53864"
cx="147.29651"
id="ellipse2339"
style="opacity:1;fill:#2b42e0;fill-opacity:0.99686028;stroke:none;stroke-width:0.54689825;stroke-miterlimit:4;stroke-dasharray:1.09379646, 1.09379646;stroke-dashoffset:0" />
<path
style="opacity:0.23699999;fill:#ffffff;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 152.40491,456.06339 a 7.9779397,2.5193012 0 0 1 -3.83569,0.56209 v 21.86847 a 7.9779402,2.5193012 0 0 0 3.83569,-0.55678 z"
id="path2341" />
<path
id="path2343"
d="m 176.73162,451.62178 a 7.9779397,2.5193012 0 0 0 -7.96228,2.42016 h -0.0157 v 0.0992 21.63446 h 0.009 a 7.9779402,2.5193012 0 0 0 -0.009,0.0538 7.9779402,2.5193012 0 0 0 0.0146,0.0912 7.9779402,2.5193012 0 0 0 -0.0146,0.091 7.9779402,2.5193012 0 0 0 7.978,2.51934 7.9779402,2.5193012 0 0 0 7.97799,-2.51934 7.9779402,2.5193012 0 0 0 -0.0102,-0.091 7.9779402,2.5193012 0 0 0 0.0102,-0.0912 7.9779402,2.5193012 0 0 0 -0.006,-0.0538 v -21.59527 a 7.9779397,2.5193012 0 0 0 0.006,-0.0392 7.9779397,2.5193012 0 0 0 -0.006,-0.0549 v -0.0443 h -0.005 a 7.9779397,2.5193012 0 0 0 -7.96668,-2.42015 z"
style="opacity:1;fill:#38c8e2;fill-opacity:0.99843014;stroke:none;stroke-width:0.71264803;stroke-miterlimit:4;stroke-dasharray:1.4252962, 1.4252962;stroke-dashoffset:0" />
<path
style="opacity:1;fill:#465ae4;fill-opacity:1;stroke:none;stroke-width:0.61292613;stroke-miterlimit:4;stroke-dasharray:1.22585233, 1.22585233;stroke-dashoffset:0"
d="m 169.90559,455.74583 v 11.4381 h 0.007 c -0.003,0.0155 -0.005,0.0309 -0.007,0.0464 0.003,0.0261 0.007,0.0523 0.0125,0.0784 -0.006,0.026 -0.01,0.0521 -0.0125,0.0782 -1.9e-4,1.1967 3.07184,2.16686 6.86148,2.16688 3.78969,0 6.86181,-0.97016 6.86162,-2.16688 -0.001,-0.0261 -0.004,-0.0522 -0.009,-0.0782 0.004,-0.0261 0.007,-0.0522 0.009,-0.0784 -0.001,-0.0155 -0.003,-0.0309 -0.005,-0.0464 v -11.4381 z"
id="path2345" />
<ellipse
style="opacity:1;fill:#2b42e0;fill-opacity:0.99686028;stroke:none;stroke-width:0.48972231;stroke-miterlimit:4;stroke-dasharray:0.97944464, 0.97944464;stroke-dashoffset:0"
id="ellipse2347"
cx="176.76697"
cy="455.85968"
rx="6.8615742"
ry="1.7374003" />
<path
id="path2349"
d="m 181.87546,456.06339 a 7.9779397,2.5193012 0 0 1 -3.83569,0.56209 v 21.86847 a 7.9779402,2.5193012 0 0 0 3.83569,-0.55678 z"
style="opacity:0.23699999;fill:#ffffff;fill-opacity:0.99843014;stroke:none;stroke-width:0.85680562;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
<path
id="path2351"
d="m 147.19292,479.12607 v 12.37107"
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1635)" />
<ellipse
style="opacity:0.15400002;fill:#f6f6f6;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0"
id="ellipse2353"
cx="176.73143"
cy="476.1214"
rx="7.9779401"
ry="2.5193012" />
<path
style="fill:none;stroke:#ff0000;stroke-width:0.85680562;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1807)"
d="M 177.01918,492.79249 V 480.42141"
id="path2355" />
<ellipse
ry="2.5193012"
rx="7.9779401"
cy="454.14102"
cx="176.73143"
id="ellipse2359"
style="opacity:0.15400002;fill:#000000;fill-opacity:0.99843014;stroke:none;stroke-width:0.63587755;stroke-miterlimit:4;stroke-dasharray:1.27175511, 1.27175511;stroke-dashoffset:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 125 KiB

View file

@ -0,0 +1,318 @@
---
title: "Programmation réseau avec l'API C"
date: 2018-09-26
modify: 2018-10-03
tags: ["programmation", "C"]
categories: ["Réseau", "Cours"]
---
# API C pour un paquet UDP (exemple du DNS)
1. `socket()` : Appel système qui retourne un identifiant unique (entier non
signé) représentant une socket ouverte par le noyau, dans le style d'un
descripteur de fichier.
2. `bind(53)` : Le processus annonce qu'il se positionne sur le port 53 en
écoute (serveur DNS)
3. `rcvfrom()` : récupère les données (datagrammes) depuis le noyau, c'est un
appel bloquant.
4. `sento()` : le processus fournit au noyau les données pour le transfert (
l'écriture). C'est l'équivalent de `write()` utilisé poour les fichiers.
5. `close()` : ferme la connexion.
Ces étapes décrites ci-dessus sont valables pour la partie serveur, la partie
client est plus simple : `socket()` -> `sendto()` -> `rcvfrom()` -> `close()`
# API pour un transfert TCP (avec connexion)
# côté serveur
1. `socket()`
2. `bind(80)`
3. `listen()` : annonce l'ouverture du port et l'écoute
4. `accept()` : attend des connexion avec un client (état disponible)
5. `read()` : appel système lit les données provenant du réseau, en HTTP ce
serait la demande de la page `index.html` par exemple.
6. `write()` : renvoi les données vers le réseau qui seront ensuite envoyées
par le noyau vers le client.
## côté client
1. `connect()` : appel cloquant pour initier la connexion.
2. `write()` : envoyer les donnés vers le client (la requete HTML par exemple)
3. `read()` : lit les données (bloquant). Dès que les données sont prête, elles
sont envoyées à l'application. Si rien n'est lut, l'appel se terminera alors
seulement au moment du `close()`
# Socket
Pour démarrer une socket, plusieurs information son importante et changerons la
manière de procéder :
- la famille d'adresse : IPv4, IPv6
- le type de socket : échange simple de datagrammes (UDP) ou par une
connexion (TCP)
- le protocole : TCP, UDP, ICMP ...
- l'adresse locale (IP et port)
- l'adresse distante (IP et port)
# API C
Il faut bien avoir à l'esprit qu'en réseau, les données sont toujours au forman
big-endian. Pour avoir plus d'explications voir la page Wikipedia sur
[l'endianess](https://fr.wikipedia.org/wiki/Endianness).
Il faut donc penser à utiliser des fonctions de conversion :
```c
/* Conversion vers/depuis ordre réseau */
uint16_t htons(uint16_t hostshort); #host to network short
uint16_t ntohs(uint16_t netshort); #network to host short
uint32_t htonl(uint32_t hostlong); #host to network long
uint32_t ntohl(uint32_t netlong); #network to host long
/* Conversion ascii/binaire */
int inet_aton(const char *ascii, struct in_addr *binaire);
char *inet_ntoa(struct in_addr binaire);
/* De même, mais portables v4/v6 */
int inet_pton(sa_family_t af, const char *ascii, void *binaire);
const char *inet_ntop(sa_family_t af, const void *binaire, char *ascii, socklen_t size);
```
## Structure pour IPv4
```c
struct in_addr {
/* ... */
__be32 s_addr;
}
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET6 */
struct in6_addr sin_addr;
__be16 sin_port;
}
```
## Structure pour ipv6
```c
struct in6_addr {
/* ... */
u8 s6_addr[16];
}
struct sockaddr_in {
sa_family_t sin6_family; /* AF_INET6 */
struct in6_addr sin6_addr;
__be16 sin6_port;
}
```
## API UDP
```c
/* Créer une socket */
int socket(int domain, int type, int protocol);
/* e.g. fd = socket(AF_INET, SOCK_DGRAM, 0); */
int bind(
int sockfd, # numéro de descripeur de socket
const struck sockaddr *addr # sock_addr peut être de type 4 ou 6 (cast)
socklen_t addrlen # taille de a structure sock_addr
)
/* Choisir ladresse distante (IP et port), optionnel, pour utiliser
send/write/recv/read plutôt que sendto/recvfrom */
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
/* Envoyer un datagramme UDP à un service dune machine donnée */
ssize_t sendto(
int sockfd,
const void *buf,
size_t len,
int flags,
const struct sockaddr *dest_addr,
socklen_t addrlen
);
/* Recevoir un datagramme UDP depuis nimporte quelle machine */
ssize_t recvfrom(
int sockfd,
void *buf, #tampon de données (ici à recevoir)
size_t len,
int flags,
struct sockaddr *src_addr,
socklen_t *addrlen
);
/* Fermer la socket */
int close(int fd);
```
## API C TCP
```c
* voir man 7 tcp pour plus dexplications */
/* Créer une socket */
int socket(int domain, int type, int protocol);
/* e.g. fd = socket(AF_INET, SOCK_STREAM, 0); */
/*** Partie client ***/
/* Se connecter à un service dune machine donnée */
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
/*** Partie serveur ***/
/* Attacher à un port local donné */
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
/* Passer en mode serveur */
int listen(int sockfd, int backlog);
/* Accepter une nouvelle connexion */
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
/* Fermer la socket */
int close(int fd);
/* Récupérer ladresse locale */
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
/* Récupérer ladresse distante */
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
```
# `write()`, `read()`, Tampons noyau
![les buffers noyau](./images/kernel_buffers.svg)
Pour chacune des connexions établies le noyau Linux créer des tampons : un pour
la lecture et un pour l'écriture. Pour la l'écriture, lorsqu'un processus
invoque un `write()`, les données sont d'abord écrites dans un tampon. S'il est
plein (sa taille est définie à l'avance), le noyau bloque l'appel `write()` et
lorsque de la place se libère, il le débloque.
De l'autre côté, les données sont reçues dans le tampon `read()` et lorsqu'elles
sont transférées au processus, un segment *ACK* est envoyé à l'expéditeur. le
destinataire averti l'expéditeur de la place disponible dans son tampon `read()`
par le biais du champ `window size` (octet 16 à 18 d'un sergent TCP) dans un
segment *ACK*. Si le tampon contient, par exemple 2ko mais que le `read()` en
demande 10ko, les 2Ko sont automatiquement transférés au processus.
Les tampons peuvent fausser complètement les outils de mesure de performance
réseau, en effet lors d'un appel `write()` les données sont transmise dans le
tampon très rapidement faussant alors la mesure du débit.
## visualiser les buffers.
Il est possible de visualiser les données en attentes dans les buffets avec la
commande `netstat` :
```shell
[root@eph-archbook ephase]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 eph-archbook:47954 mail.gandi.net:imaps ESTABLISHED
tcp 0 0 eph-archbook:52264 imap.u-bordeaux.fr:imap ESTABLISHED
tcp 32 0 ?192.168.1.91:34456 vpn-0-24.aquilene:https CLOSE_WAIT
tcp 32 0 192.168.1.91:33424 vpn-0-24.aquilene:https CLOSE_WAIT
...
```
L'étal des tampons est indiqué par les champs `Recv-Q` et `Send-Q`.
## option de socket TCP
Les entêtes complète d'un datagramme TCP pèse au moins 54 octets (entêtes
Ethernet et IP comprises). Afin d'optimiser l'envoi de données, il est souvent
préférable de concaténer plusieurs appels `write()` ou d'utiliser `printf()` et
les mécanisme de tampons de la libc. Il est aussi possible de demander à TCP
d'attendre l'arrivée d'autres données avant d'envoyer un segment avec bien
évidemment la gestion d'un *timeout* pour ne pas attendre trop longtemps
(algorithme de [Nagle][l_nagle]). Ce n'est cependant pas adapté à tous les
protocoles : si ce système fonctionne bien pour HTTP, ce n'est pas le cas de SSH
ou la latence induite par ce mécanisme pose problèmes.
```C
#include <sys/socket.h>
int setsockopt (int sockfd, int level, int optname, const void *optval, socklen_t optlen);
int getsockopt (int sockfd, int level, int optname, void *optval, socklen_t optlen);
```
- `int level` : niveau de la pile ou appliquer l'option, `SOL_TCP` signifiera
la partie TCP.
- `int optname` : l'option à activer, par exemple `TCP_NODELAY` afin de
désactiver l'algorithme de Nagle. Il est possible aussi de mettre un
bouchon au tampon `write()` avec `TCP_CORK`. Il faudra alors le désactiver
pout permettre au noyau d'envoyer les segments depuis les données du
*buffer*
[l_nagle]:https://fr.wikipedia.org/wiki/Algorithme_de_Nagle
### l'option `SO_REUSEADDR` de `SOL_SOCKET`
Par défaut, le système empêchera la connexion à une socket si un service y
était quelques minutes auparavant. Dans le cadre du test d'un programme ou pour
du debug, il est parfois nécessaire de désactiver ce comportement, et c'est
possible avec :
```C
setsockopt ( fd, SOL_SOCKET, SO_REUSEADDR, "1");
```
# La Qos (Qualité de Service)
En réseau il est possible d'obtenir :
- une bonne latence
- un bon débit
- de la fiabilité
Il ne sera pas possible d'obtenir les trois. Il existe plusieurs solutions pour
prioriser les flux. Par exemple les petits paquets : leurs tailles indique
sûrement que l'on recherche une meilleure latence plutôt qu'un gros débit.
Il est aussi possible de faire du DPI *Deep Packet Inspection* que ne serait pas
très approprié du point de vue de l'éthique et de la loi (neutralité du net...)<
En TCP il existe le champs ToS *Type of service" Mais celui-ci est inutilisé du
fait de son implémentation différentes chez les fabricants de matériels et
logiciels.
Les équipements sur Internet ont tous un système de buffer, ce qui n'est pas
sans poser problèmes pour la *QoS* : s'il est facile de maitriser son routeur,
éventuellement le DSLAM si son fournisseur d'accès à Internet le permet, il est
est tout autres pour les équipements par lesquels transitent nos paquets.(voir
le [Bufferbloat][l_buffetbloat])
[l_bufferbloat]:https://en.wikipedia.org/wiki/Bufferbloat
# API réseau et threads
Il est tout à fait possible d'utiliser les *threads* et les *processus* pour
créer des buffers différents et ainsi paralléliser l'envoi / réception de
données et ainsi éviter de bloquer l'ensemble de son application avec un
`write()` ou un `read()`. Il est aussi possible d'utiliser l'API `SELECT` et
ainsi éviter de complexifier son code avec des threads / processus.
```C
void FD_ZERO(fd_set *set);
void FD_CLR(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
int FD_ISSET(int fd, fd_set *set);
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
/* Attend des données lisibles sur fd1 ou fd2, traite en conséquence */
int attend(int fd1, int fd2) {
fd_set set;
int max;
FD_ZERO(&set);
FD_SET(fd1, &set);
FD_SET(fd2, &set);
max = MAX(fd1, fd2);
if (select(max+1, &set, NULL, NULL, NULL) == -1)
return -1;
if (FD_ISSET(fd1, &set))
traite(fd1);
if (FD_ISSET(fd2, &set))
traite(fd2);
return 0;
}
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
```

1
themes/mainroad Submodule

@ -0,0 +1 @@
Subproject commit 279cd6cbf36560db8b03bd54804e25ff8e3c26a1

@ -0,0 +1 @@
Subproject commit 062b4a11a7e4df3eaeb09877c49ef22c9300c4a4