# Etude d'un protocole fiable : TCP

Patrice Laurencot

## 2 - La connexion-TCP

### Connexion-TCP et identification de connexion-TCP

> Une connexion-TCP est un canal bi-directionnel (2 tuyaux) construit entre 2 entités d'application (c'est à dire processus).

> Chaque connexion-TCP est entièrement identifiée par les adresses des TCP-SAP de ses deux extrémités.
> L'adresse d'un TCP-SAP est composée de :

- > l'adresse-IP du système qui le contient

- > "tcp" implicite

- > un numéro de port, qui peut être bien connu ou enregistré (liste), ou bien privé.

Exercice 1
  Afficher la liste des connexions-TCP actuellement établies (ESTABLISHED ou Établie dans colonne "state") sur le système, par la commande :
  `netstat -an | grep ^tcp |grep ESTABLISHED | more`
  ou
  `netstat -a | grep ^tcp |grep ESTABLISHED | more`
  Combien y en a-t-il ?
Exercice 2
  Recherchez maintenant les connections en attente "LISTEN" ou "En attente" :

-   Pour quelle application est construite chaque connexion ? (chercher n°port dans la liste)

### Etablissement de connexion-TCP

> L'établissement de connexion est réalisé par l'échange de 3 PDU-TCP entre les entités-TCP :

> La 1ère est caractérisée par le flag `SYN`, la 2ème par les flags `SYN` et `ACK`, et la 3ème par le seul flag `ACK`.

> La 1ère PDU-TCP envoyée par chaque entité-TCP (flag `SYN)` contient dans son champ `seq` le numéro après duquel elle numérotera les PDU-TCP-données qu'elle émettra.
> La 2ème PDU-TCP envoyée par chaque entité-TCP (flag `ACK`) contient dans son champ `ack` le numéro que devra contenir la prochaine PDU-TCP-données qu'elle recevra.

Exercice 3
  Le fichier `tcp-trace.html` contient la trace partiellement commentée des PDU échangées entre 2 systèmes lors d'une session FTP.
  Examiner les échanges 6, 7 et 8 de la phase d'établissement de connexion-TCP entre les TCP-SAP `193.54.51.67/1058` et `193.54.51.1/21`.
  Rechercher les autres tentatives d'établissement de connexion TCP.

### Terminaison de connexion-TCP

> La terminaison normale de connexion se fait par l'échange de 2 PDU-TCP dans chaque sens; la 1ère PDU de chacune de ces 2 paires est caractérisée par le flag `FIN`.
> Une terminaison brutale est possible, en envoyant une seule PDU avec le flag `RST`.

Exercice 4
  Examiner dans `tcp-trace.html` la terminaison normale de la connexion-TCP d'identificateur `193.54.51.67/1058`- `193.54.51.1/21`, dans les PDU n° 248 à 251.
Exercice 5
  Chercher dans `tcp-trace.html` d'autres terminaisons de connexion normales ou de connexion brutales.

Suite...