Protocole TCP-IP |
I) Introduction
Tout le monde a déja entendu le mot "TCP/IP" sur internet. Par contre, peu de gens en connaissent vraiment le fonctionnement. et pourtant, la majorité des transferts réseaux utilise ce protocole. De plus, il est évident qu'avant de se lancer dans la recherche de failles sur des systèmes, il est indispensable de connaitre au moins un minimum du fonctionnement du réseau.
TCP/IP regroupe
différent protocoles, permettant aux ordinateurs de partager leurs ressources
à travers un réseau. Il a été dévellopé
par des chercheurs dans le cadre de ARPAnet. TCP signifie "Transfer Control
Protocol", et IP, "Internet Protocol".
II) What is TCP/IP ?
TCP/IP est un ensemble de protocoles. Chaque protocole a une fonction différente. Par exemple, le SMTP (Send Mail Transfer Protocol) est un protocole servant à l'envoie de email. Le FTP (File Transfer Protocol), sert lui à envoyer des fichiers, comme par exemple des pages Web...
Au début, le net était encore peu connu. On rencontrait donc des gros ordinateurs, qui était totalement "autosuffisant". Maintenant, avec le dévellopement du réseau, on a vu s'ajouter des stations de travail spécifiques, pouvant excuter des taches spécialisées.
De ce fait, les users qui ont besoin de service qui n'étaient pas disponibles sur leur machine, peuvent désormais faire appel au autres systemes du réseau. C'est de là qu'est né le modele "client/serveur", que tout le monde utilise aujourd'hui...
Un serveur est
un systemes qui fournit des services au autres utilisateurs du réseau,
et un client est un système qui utilise ces service. L'exemple le plus
connu est sans aucun doute IRC. En effet, grace à votre client mIRC,
vous vous connectez sur le Serveur de Undernet, puis vous nous rejoignez sur
#Tipiak :)
Voici les différents
serveurs que l'on trouve le plus souvent :
** Systeme
de fichiers repartis ou Network File System (NFS)
** Impression à distance : pas la peine de vous expliquer ça ...
** Execution à distance : permet de faire executer un programme sur une
autre machine.
** Serveurs de noms : Par exemple les Yellow Page (YP) de Sun.
** Serveurs de terminaux : les exemples les plus connus sont Telnet et Rlogin
III)
Fonctionnement
TCP/IP est un ensemble
de protocole (voir plus haut...) organisé en couches. En général,
les applications TCP/IP utilisent quatres couches:
** Le port d'application
(ftp, smtp, telnet, dns, rlogin, ...)
** Le type de protocole (TCP, UDP ...)
** Une IP qui fournit les service nécessaire pour envoyer les datagrammes.
** Le protocol nécessaire (Ethernet, Point Par Point, ...)
Etant donné que TCP/IP est uun ensemble de réseaux connectés entre eux par des passerelles (gateways), l'utilisateur doit avoir la possibilitée d'accès aux ressources d'un de ces réseaux, si il veut consulter un site par exemple.
De ce fait, il envoie des datas à un serveur, pour l'informer de quelquechose (message, ...). Ces datas passent alors par différent réseaux avant d'arriver à destination. Seulement le routage doit rester invisible, pour des raisons de sécurité. C'est pourquoi le destinataire ne connait que l'adresse de l'expéditeur. Elle est de la forme : "195.6.8.121".
Cette adresse est en fait un nobre de 32 bits, écrit sous forme de quatres nombres décimaux, chacun représentant 8 bits. La plupart du temps, la structure de cette adresse vous donne des indications pour atteindre le systeme.
Le transfert de
l'information se fait par l'envoi de plusieurs datagrammes, un datagramme étant
un ensemble de donné envoyé comme un seul message. Par exemple,
si vous voulez envoyez un fichier de 15000 octets, celui-ci sera découpé
en plusieurs datas de 500 octets, puis réassemblé à la
fin. Il est donc possible que la data 7 arrive avant le data 5, ou que des datas
se perdent en route...
IV)
Les différentes couches
Comme on vient
de le voir, les datagrammes doivent être transformées avant, et
après leur envoi. Pour cela, on à recours à deux protocoles:
** TCP (Transfer
Control Protocol) : il sert à découper, assembler et classer les
datas.
** IP (Internet Protocol) : il sert au routage des datagrammes.
A) Le niveau TCP
Voici le schema d'un datagramme TCP :
Port
Source
|
Port
Destination
|
|
Numéro
d'ordre
|
||
Numéro
d'acquitement
|
||
Position
des données
|
U|A|P|S|F
Reservé R|C|S|Y|I Fenetre G|K|H|N|N |
|
Checksum
|
Données
Urgentes
|
|
DONNEES
|
** <Numéro d'acquitement> : le destinataire renvoie un numéro pour confirmer l'arrivée des datagrammes.
** <Fenetre> : utilisé pour controler la taille des données envoyées à chaque instant.
** <Checksum> : c'est un nombre calculé en ajoutant tous les octets du data, le résultat est mis dans l'en-tête. TCP fait aussi le meme calcul. Si les 2 nombres sont différents, c'est qu'il y a eu ne erreur dans le transport et le data est rejeté.
** <Donnéees
Urgentes> : désigne les octets qui doivent être envoyés
en premiers.
B) Le niveau IP
Comme on l'a vu,
TCP envoi les datas à IP, en donnant un aresse de destination. IP doit
alors trouver une "route" pour acheminer ces datas à leur destination.
Il rajoute sa propre en-tête pour permettre aux passerelles (routeurs)
de guider les datas.
Une en-tête
IP est composée d'une adresse source, et d'une adresse de destination;
mais aussi d'un numéro de protocole (pour identifier si c'est TCP, UDP...
qu'il faut utiliser.), ainsi que d'un checksum, différent de celui de
TCP.
Voici le schéma
d'un paquet IP :
Version
|
IHL
|
Type
de service
|
Longueure
totale
|
Identification
|
Indics
|
FragOff
|
|
Durée
de vie
|
Protocole
|
Checksum
en-tête
|
|
ADRESSE
SOURCE
|
|||
ADRESSE
DESTINATION
|
|||
En-tête
TCP, suivie de vos données ....
|
** <Version> : version du protocol TCP/IP.
** <Type de Service> : Type of Service (TOS) : 17- Minimise le délai. / 08- Minimise le débit. / 04- Minimise le cout monétaire.
** <Identification> : identificateur ;)
** <FragOff> : Offset de fragmentation (si il y en a un!)
** <durée De vie> : Time To Live (TTL) : durée que le packet est authorisé à traverser avant qu'il ne tombe en "timeout"...
** <Adresse Source> : C'est cette adresse qu'il faut spooffer ...
** <Adresse
Destination> : adresse IP de destination.
C) Le
niveau Ethernet
La plupart des
réseaux utilisent Ethernet. L'adresse Ethernet est codée sur 48
bits, pour un avoir un très grand choix. Lorsque vous envoyez un packet,
toutes les machines le voit passer, il faut donc une en-tête Ethernet
pour s'assurer que c'est la bonne machine qui la récupérée.
Voici un schéma
d'un packet Ethernet :
Adresse
ethernet de destination (les 32 premiers bits)
|
|
Dest
(16 derniers bits)
|
Source
(16 premiers bits
|
Type
de protocol
|
|
En-tête
IP, puis en-tête TCP, puis vos données
|
|
CHECKSUM
ETHERNET
|
** <Type de protocol> : determine le protocole à utiliser.
** <Checksum
Ethernet> : checksum pour verifier si tous les datas sont là.
V) Liste
de ports fréquemmment utilisés
#
de Port
|
Protocol
|
Fonction
|
---|---|---|
0
7 15 20 21 23 25 79 80 110 139 143 513 515 752 753 |
ICMP
TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP ??? UDP UDP |
delivre
message d'erreur echo netstat FTP-data File Transfer Protocol (FTP) Telnet Send Mail Transfer Protocol (SMTP) finger HyperText Transfer Protocol (HTTP) POP3 (envoi d'e-mails) Service de session netbios IMAP (service d'e-mails) who printer password server userreg server |
VI) Pour plus d'infos ...
** Pour plus d'infos
sur TCP/IP, lisez le RFC 1011.
** Pour plus d'infos sur TCP, lisez le RFC 793.
** Pour plus d'infos sur IP, lisez le RFC 791.
** Pour plus d'infos Ethernet, lisez le RFC 826.
VII) Conclusion
Comme conclusion,
je vous propose ce petit schéma, qui récapitule de façon
(tres) général, tout ce que l'on vient de voir. J'espere que vous
avez compris les bases ...
adresse
de l'éxpéditeur
|
|||
adresse
du destinataire
|
|||
|
|
paquet TCP | |
|
paquet IP |