# TP Réseau

## Question 1

__Réaliser un échange de données via TCP et UDP__

Choix arbitraire du port : 5678

### avec TCP

Sur la machine puits
```sh
tsock -p 5678
```

Sur la machine source
```sh
tsock -s getip102-03 5678
```

*Observation* : 

    * désequencement: pas de déséquencement car sur un même réseau local + TCP qui garantit l'ordre
    * pertes: TCP garantit les pertes

### avec UDP

Sur la machine puits
```sh
tsock -p -u 5678
```

Sur la machine source
```sh
tsock -s -u getip102-03 5678 
```

*Observation* : 

    * désequencement: pas de déséquencement
    * pertes: pas de pertes sur des petits messages

#### Proposition d'experience pour montrer la non-fiabilité

```sh
tsock -p -u -t 10 5678 
```


```sh
tsock -s -u -n 20 getip102-03 5678 
```

> On peut aussi enlever l'affichage et augmenter le nombre de messages 

*Observation* :

    * pertes quand le buffer du puit est plein

## Question 2

__Même chose en changeant l'ordre du puit et de la source__

### avec TCP

Sur la machine source
```sh
tsock -s getip102-03 5678
```

Sur la machine puits
```sh
tsock -p 5678
```

*Observation* : 

    * La connexion échoue -> pas de données échangées

### avec UDP

Sur la machine source
```sh
tsock -s -u getip102-03 5678 
```

Sur la machine puits
```sh
tsock -p -u 5678
```

*Observation* : 

    * Des données sont reçues quand la source envoi beaucoup de données, sinon on n'observe aucune donnée

## Question 3

__Capturer l'échange avec `tcpdump`__

Ici, on suppose que l'on va sur la machine hôte insa-20155

```sh
ssh tcpdump@insa-20155
```

Lancer tcpdump en tant que root

```sh
sudo tcpdump port 5678
```

### Observations

    * Mettre en évidence que UDP est sans connexion
    * Mettre en évidence que TCP est avec connexion
    * Trouver les différentes phases de la connexion de TCP

#### Faire une expérience pour montrer que les frontières des trames ne sont pas conservées

remplacer 30 par un grand nombre.

```sh
tsock -s -l 30 getip102-03 5678 
```

## Question 4

__Reprendre la Question 1 et capturer les trammes Ethernet avec `tcpdump`__

```sh
sudo tcpdump -xx port 5678
```

### Analyse des résultats

    * trouver les adresses Ethernet et IP de la source et du puit
    * Information sur le type de trame transmise (UDP ou TCP)
    * trouver le numéro de port utilisé par le puit
    * trouver le numéro de port utilisé par la source (D'où vient-il ?)
    
## Question 5

### Qu'est que le mode broadcast

### Trouver l'adresse broadcast physique du réseau 

```sh
sudo tcpdump -xx broadcast
```
    
