Jump to content

Ldfa

Admin
  • Posts

    26025
  • Joined

  • Last visited

  • Days Won

    589

Ldfa last won the day on January 14

Ldfa had the most liked content!

About Ldfa

  • Birthday 08/05/1960

Previous Fields

  • Configuration
    Windows 10 - Maxthon 5 et 6 dernières versions

Contact Methods

  • Website URL
    http://www.maxthon-fr.com
  • ICQ
    0

Profile Information

  • Genre
    Homme
  • Localisation
    Ardèche
  • Intérêts
    Informatique et communication.

Recent Profile Visitors

1151795 profile views

Ldfa's Achievements

  1. J'ai un problème avec le téléchargement des fichiers, la boite de dialogue est très longue à apparaitre, avez-vous le même problème ?
  2. Principales modifications : + Ajout d'une barre de progression dans la fenêtre pop-up vidéo. + Ajout d'un bouton de volume et d'une barre de contrôle dans la fenêtre pop-up vidéo. + Prise en charge du thème sombre du système. + Optimisation de la vitesse de démarrage du navigateur. + Ajustement de l'option par défaut "Désactiver la lecture automatique" à décocher. - Correction du problème de lecture de certains sites Web dans certains cas. - Correction du problème de synchronisation des données du navigateur dans certains cas. - Correction du problème d'affichage des bons résultats de recherche sur la page d'historique. - Correction du problème d'affichage incorrect de l'icône de la barre des tâches du navigateur. - Correction du problème d'enregistrement du domaine gratuit. - Correction du problème de plantage lors de la fermeture des onglets récemment visités.
  3. Maxthon 6.1.3.1300 Bêta pour Windows est sorti aujourd'hui, il apporte son lot de nouvelles fonctionnalités / améliorations et de corrections de bugs. Attention : ceci est une version Bêta, donc à ne pas utiliser en lieu et place de la version stable, mais uniquement à des fins de tests. Téléchargement : 64-bit Version installable : https://dl.maxthon.com/mx6/maxthon_6.1.3.1300_beta_x64.exe Version portable : https://dl.maxthon.com/mx6/maxthon_portable_6.1.3.1200_beta_x64.zip 32-bit Version installable : https://dl.maxthon.com/mx6/maxthon_6.1.3.1300_beta_x86.exe Version portable : https://dl.maxthon.com/mx6/maxthon_portable_6.1.3.1300_beta_x86.zip Les changements sont ici en anglais et là en français. Vous pouvez également vous abonner au groupe Telegram NBdomain & MX6 pour faire remonter vos demandes d'améliorations et bugs rencontrés. Source : https://forum.maxthon.com/index.php?/topic/26385-mx6-pc-beta-release-6131300/
  4. durée de lecture : 4 minAujourd'hui, vous apprendrez la manipulation des chaînes de caractères et des nombres en PHP. Ce cours accéléré PHP est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter :Follow @EricLeCodeur Chaîne de caractères en PHP Voyons maintenant un peu plus en détail comment créer et manipuler des chaînes de caractères (strings) avec PHP. Une string peut être créée avec des guillemets simples ou doubles $name = 'Mike'; // or $name = "Mike"; Enter fullscreen modeExit fullscreen mode La déclaration avec guillemets doubles permet de faire de l'interpolation. // Affiche le contenu de la variable echo "Hello $name"; // Hello Mike // Même principe mais avec les {} echo "Hello {$name}"; // Hello Mike Enter fullscreen modeExit fullscreen mode Il est également possible de joindre deux string avec l'opérateur "." (point) $name = 'Mike'; echo 'Hello ' . $name; // Hello Mike Enter fullscreen modeExit fullscreen mode Il est possible de lire ou de modifier un caractère en particulier à l'aide des crochets [] $message = "Hello World"; // Affichage echo $message[0]; // H // Ou modification $message[1] = 'a'; // Hallo World Enter fullscreen modeExit fullscreen mode Ici, le premier caractère est à la position 0, le second à la position 1, etc. Il est possible d'accéder à l'énoncé à partir de la fin. $message = "Hello World"; echo $message[-1]; // e Enter fullscreen modeExit fullscreen mode La position -1 représente le dernier caractère, -2 l'avant-dernier, et ainsi de suite. Heredoc Cette syntaxe permet de saisir une chaîne sur plusieurs lignes $html = <<<HTML <h1>This is a title</h1> <p>This is a paragraphe</p> HTML; Enter fullscreen modeExit fullscreen mode La variable $html inclura tout le texte entre les deux mots clés HTML. Y compris les espaces et les fins de ligne. Manipulation des string PHP a plusieurs fonctions qui vous permettent de transformer le contenu de la string. En voici quelques-unes : Conversion majuscule et minuscule $name = 'Mike Taylor'; echo strtolower($name); // mike taylor echo strtoupper($name); // MIKE TAYLOR Enter fullscreen modeExit fullscreen mode Supprimer les espaces blancs avant et après une string $message = ' Hello World '; echo trim($messsage); // Hello World Enter fullscreen modeExit fullscreen mode Remplacer une partie d'une string par une autre $message = 'I love dog'; echo str_replace('dog', 'cat', $message); // I love cat Enter fullscreen modeExit fullscreen mode Récupérer le nombre de caractères d'une chaîne $name = ''; echo strlen($name); // 0 $name = 'Mike Taylor'; echo strlen($name); // 11 Enter fullscreen modeExit fullscreen mode Vérifier si la string contient certains caractères $message = 'I love dogs and cats'; echo str_contains($message, 'dogs'); // true Enter fullscreen modeExit fullscreen mode Si la string contient 'dogs' la fonction retournera vrai sinon elle retournera faux L'utilisation de ce type de fonction sera plus évidente lorsque nous étudierons l'instruction conditionnelle (si) PHP a plusieurs fonctions pour gérer les string. Avant de créer votre propre fonction, faites une petite recherche dans la documentation car il y a de fortes chances que cette fonction existe déjà. Nombre en PHP Les nombres sont utilisés pour effectuer des opérations mathématiques telles que l'addition, la soustraction, la multiplication et la division. $value = 10; echo $value + 5; // 15 echo $value - 2; // 8 echo $value * 2; // 20 echo $value / 2; // 5 Enter fullscreen modeExit fullscreen mode Priorité des opérateurs https://www.php.net/manual/en/language.operators.precedence.php Lorsque nous effectuons plusieurs opérations, PHP prendra en compte la priorité des opérateurs. C'est-à-dire l'ordre dans lequel les valeurs doivent être analysées. Voici un exemple: echo 1 + 5 * 3 // 16 Enter fullscreen modeExit fullscreen mode Ici la réponse sera 16 et non 18. car la multiplication "*" a une priorité plus élevée par rapport à l'addition "+". Les parenthèses peuvent être utilisées pour forcer la priorité, si nécessaire. echo (1 + 5) * 3 // 18 Enter fullscreen modeExit fullscreen mode Incrémentation Il est possible de faire une incrémentation de trois façons : // Incrémentation, version longue $value = 10; $value = $value + 1; echo $value; // 11 Enter fullscreen modeExit fullscreen mode // Incrémentation, version courte $value = 10; $value += 1; echo $value; // 11 Enter fullscreen modeExit fullscreen mode // Incrémentation, version encore plus courte $value = 10; $value++; echo $value; // 11 Enter fullscreen modeExit fullscreen mode Il est également possible de décrémenter $value -= 1; // ou $value--; Enter fullscreen modeExit fullscreen mode Arrondir Il est possible d'arrondir au nombre entier le plus proche $value = 10.52; echo round($value); // 11 Enter fullscreen modeExit fullscreen mode Il est également possible de spécifier le nombre de chiffres à conserver après le point. $value = 10.5278; echo round($value, 2); // 10.53 Enter fullscreen modeExit fullscreen mode Nombre aléatoire La fonction rand permet de créer un entier aléatoire dont la valeur sera comprise entre les valeurs des deux paramètres. echo rand(10, 100); // 89 Enter fullscreen modeExit fullscreen mode Lisibilité des chiffres Vous pouvez utiliser le caractère _ comme séparateur. Cela aide à rendre le numéro plus facile à lire. $value = 1_000_000_000 // 1000000000 Enter fullscreen modeExit fullscreen mode Conclusion C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur Afficher l’article complet
  5. durée de lecture : 7 minBienvenue dans ce cours accéléré de PHP moderne. Pourquoi moderne ? PHP existe depuis 1994 et a considérablement évolué depuis lors. Maintenant, à la version 8.1, PHP est un langage complet et parfaitement adapté au développement Web moderne. Dans ce cours accéléré, nous couvrirons tous les aspects importants à connaître sur PHP en 2022. Une fois le cours terminé, vous serez en mesure de créer vos premières applications PHP et vous aurez également des connaissances suffisantes en PHP pour continuer votre formation avec un framework PHP comme Laravel et/ou Symfony. Le cours accéléré est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter : Suivez @EricLeCodeur< /a> Qu'est-ce que PHP ? Pourquoi PHP ? PHP est un langage de programmation côté serveur et orienté objet. Il est utilisé pour développer des applications Web. PHP est le langage de programmation de serveur web le plus utilisé dans le monde. Un peu moins de 80% des sites Web ont du code PHP. C'est énorme ! PHP ne va pas disparaître de sitôt. PHP a beaucoup évolué ces dernières années. L'ajout de concepts orientés objet et de plusieurs autres concepts modernes a radicalement changé la façon dont les applications Web PHP sont codées. PHP est maintenant utilisé par des millions de sites Web. Y compris Facebook, Wordpress, Wikipedia, Tumblr, Slack et bien d'autres. La communauté PHP est très grande, très dynamique et inclusive. PHP peut également s'appuyer sur des frameworks de haute qualité comme Symfony et Laravel (et plusieurs autres). Ces frameworks vous permettent de développer des applications Web de manière rapide et fiable. Bref, avec PHP vous pouvez réaliser de petits, grands et très grands projets. PHP peut gérer quelques clics par jour ou des millions de clics par jour. Installation PHP L'installation de PHP peut parfois être difficile, ne vous laissez pas décourager par cette tâche. Si vous souhaitez commencer la formation tout de suite et faire l'installation plus tard, il est possible d'utiliser le site https://replit.com/languages/php7 afin d'exécuter du code PHP depuis votre navigateur. Installez PHP sur votre ordinateur Vous aurez besoin de PHP version 8.1 Pour vérifier quelle version est installée sur votre machine, vous pouvez exécutez cette commande depuis le terminal : $ php -v Enter fullscreen modeExit fullscreen mode Si PHP est manquant ou si la version installée est inférieure à PHP 8.1, vous aurez besoin d'une nouvelle installation : Voici le lien pour l'installation de PHP : MacOS (homebrew) : https://www.php.net/manual/en/install.macosx.packages.php Windows (XAMPP) : https://www.apachefriends.org/index.html Pour plus de détails, consultez la documentation officielle de PHP : https://www.php.net/manual/fr/install.php Pour ce tutoriel, nous allons créer un dossier pour placer tous nos fichiers pour les exemples à venir. $ mkdir demo-php $ cd demo-php Enter fullscreen modeExit fullscreen mode A partir de ce dossier, nous allons créer un fichier nommé index.php $ code index.php Enter fullscreen modeExit fullscreen mode Cette commande ouvrira vscode et créera un fichier index.php. Notez que pour ce cours accéléré, nous utiliserons Visual Studio Code mais ce n'est pas une condition préalable. Vous êtes libre d'utiliser votre éditeur préféré. Sur la première ligne du fichier index.php taper : <?php Enter fullscreen modeExit fullscreen mode Cette balise indiquera au serveur PHP que toutes les lignes suivantes sont du code PHP que le serveur doit exécuter. Nous pouvons donc maintenant commencer à écrire du code PHP et pour commencer, rien de mieux que le classique Hello World ! <?php echo 'Hello World'; Enter fullscreen modeExit fullscreen mode La fonction echo permet d'afficher du texte et même du HTML dans la page courante du navigateur. Pour tester ce code, vous pouvez exécuter le serveur Web PHP qui est inclus avec PHP $ php -S localhost:5000 Enter fullscreen modeExit fullscreen mode L'option -S démarre le serveur Web sur localhost:5000 Si vous ouvrez un navigateur et allez à l'adresse http://localhost:5000, le serveur PHP rendra le fichier par défaut, index.php donc vous verrez : Hello World Enter fullscreen modeExit fullscreen mode HTML et PHP A noter que dans un fichier PHP il est possible de mélanger du code HTML avec du code PHP <h1> <?php echo 'Hello World'; ?> </h1> Enter fullscreen modeExit fullscreen mode Ce code est parfaitement valide. La balise ?> indique la fin du code PHP. Il serait également possible d'avoir plusieurs sections de code PHP <h1> <?php echo 'Hello World'; ?> </h1> <h2> <?php echo 'Sub title'; ?> </h2> Enter fullscreen modeExit fullscreen mode Bien que PHP puisse être mélangé avec HTML, il est considéré comme une bonne pratique de séparer le code PHP et le code HTML chacun dans son propre fichier. Nous reviendrons sur ce concept plus tard. Variables Les variables servent à stocker différentes valeurs que vous souhaitez traiter dans votre code. Une fois la variable stockée dans la mémoire du programme, elle peut être utilisée ultérieurement. Par exemple, supposons que vous souhaitiez stocker le nom d'utilisateur, vous pouvez utiliser une variable et lui donner le nom : $name et définir son contenu égal à 'Mike Taylor' $name = 'Mike Taylor'; Enter fullscreen modeExit fullscreen mode Notez qu'en PHP : Le nom d'une variable commence par un signe $ Une chaîne de caractères est entourée de guillemets. Nous n'avons pas à préciser le type de variable (ex : chaîne). PHP est un langage interprété. Il reconnaît automatiquement le type de données en fonction de la valeur qui y est stockée. Par contre, il est possible de préciser le type de la variable lors de sa déclaration. Nous verrons ce concept un peu plus tard. Voici les 4 types de variables (de bases) en PHP et la syntaxe pour les créer // string (caractères texte) $fullName = 'Mike Taylor'; // integer (hombre entier) $count = 20; // float (nombre décimal) $bookPrice = 15.80; // booleans $isActive = true; $isAdminUser = false; Enter fullscreen modeExit fullscreen mode PHP a également des types de variables plus avancés comme des tableaux et des classes. Nous couvrirons tout cela en détail plus tard. Enfin, PHP a également des types spéciaux, comme "null" qui signifie aucune valeur. À ce stade, vous devriez être en mesure de comprendre que ces deux variables n'ont pas le même contenu. $value = '100'; $value2 = 100; Enter fullscreen modeExit fullscreen mode $value est une variable de type string qui contient le texte ‘100’ comme contenu. Cette variable n'est pas un nombre qui peut être utilisé dans une opération mathématique. $value2 est une variable de type integer qui a le nombre 100 comme contenu. Cette variable est un nombre et peut donc être utilisée pour des opérations mathématiques. Afin de simplifier le tutoriel, à partir de ce point, les types de variables seront appelés par leur nom anglais. Par exemple je n'utiliserai pas le terme "chaîne de caractères" mais plutôt "string" Constante Les constantes sont des variables dont la valeur ne peut en aucun cas être modifiée. Il existe deux façons de les créer. const MAX_USERS = 50; define('MAX_USERS', 50); Enter fullscreen modeExit fullscreen mode Une constante ne commence pas par un signe $ et par convention, les constantes sont définies en lettres majuscules. Après la création, si vous essayez de lui attribuer une autre valeur, PHP vous renverra une erreur. Typecasting PHP détermine automatiquement le type de la variable à l'exécution. Affichage En PHP il existe plusieurs façons d'afficher le contenu d'une variable, en voici quelques-unes : echo $nom; (Affiche la valeur) var_dump($isAdmin); (Affiche le type de la variable ainsi que la valeur) print_r($items); (Affiche la valeur lisiblement) Déterminer le type d'une variable Il est possible d'obtenir le type d'une variable avec la fonction gettype() echo gettype($name); // string echo gettype(20); // integer echo gettype(9.95); // double echo gettype(true); // boolean Enter fullscreen modeExit fullscreen mode On peut aussi vérifier si la variable est d'un certain type avec les fonctions is_init(), is_float(), is_string() et is_bool() echo is_int($name); // false echo is_float(12.5); // true echo is_string($name); // true echo is_bool(10); // false Enter fullscreen modeExit fullscreen mode Forcer l'utilisation d'un type Il est possible de forcer PHP à utiliser un type particulier et si besoin de forcer la conversion. Pour ce faire, vous devez ajouter le type entre parenthèses avant la variable ou la fonction. $ age = (int)readline('Votre âge :'); echo 'Votre âge est'. (string)$age; Enter fullscreen modeExit fullscreen mode Ici, le cast (int) forcera un entier comme valeur de retour de la fonction readline(). Le cast (string)$age convertira l'entier en chaîne avant de l'afficher. Commentaires Laisser un commentaire dans le code. C'est-à-dire une ligne qui ne sera pas exécutée, vous pouvez utiliser l'une des deux techniques suivantes : // This is a single line comment / * This is a comment on several lines * / Enter fullscreen modeExit fullscreen mode Convention de nommage Voici quelques conventions que nous utiliserons pour créer notre code : $firstName = 'Mike' // nom de variable camelCase function updateProduct() // nom de fonction camelCase class ProductItem // nom de classe StudlyCaps const ACCESS_KEY = '123abc'; // Majuscule avec souligné comme séparateur Enter fullscreen modeExit fullscreen mode Pour plus de détails sur les conventions de nommage, vous pouvez consulter le site Web de PRS : https://www.php-fig.org/psr/ Conclusion C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur Afficher l’article complet
  6. Principales modifications : + Prise en charge du mode sombre pour la page d'extension et la page de gestion des signets. + Ajout d'options vidéo et audio. + Mise à jour de l'interface d'installation. + Optimisation de la fenêtre pop-up vidéo en plein écran, de l'épinglage et de la mise en page. + Optimisation du mode rétro. + Ajustement de la nouvelle fenêtre pop-up pour qu'elle s'ouvre comme une nouvelle page. + Ajustement des paramètres d'ouverture de l'onglet en mode rétro. + Mise à jour de la Vbox. - Correction du problème d'affichage de l'interface de connexion du téléphone. - Correction du problème d'ouverture répétée du panneau de connexion dans certains cas. - Correction du problème d'enregistrement de QuickNote sur la page d'historique. - Correction du problème de chargement de la page de démarrage après un changement de compte. - Correction du problème de plantage lors de l'utilisation de la capture d'écran.
  7. Maxthon 6.1.3.1200 Bêta pour Windows est sorti aujourd'hui, il apporte son lot de nouvelles fonctionnalités / améliorations et de corrections de bugs. Attention : ceci est une version Bêta, donc à ne pas utiliser en lieu et place de la version stable, mais uniquement à des fins de tests. Téléchargement : 64-bit Version installable : https://dl.maxthon.com/mx6/maxthon_6.1.3.1200_beta_x64.exe Version portable : https://dl.maxthon.com/mx6/maxthon_portable_6.1.3.1200_beta_x64.zip 32-bit Version installable : https://dl.maxthon.com/mx6/maxthon_6.1.3.1200_beta_x86.exe Version portable : https://dl.maxthon.com/mx6/maxthon_portable_6.1.3.1200_beta_x86.zip Les changements sont ici en anglais et là en français. Vous pouvez également vous abonner au groupe Telegram NBdomain & MX6 pour faire remonter vos demandes d'améliorations et bugs rencontrés. Source : https://forum.maxthon.com/index.php?/topic/26364-mx6-pc-beta-6131200-android-6024400-release/
  8. durée de lecture : 13 minI. PrésentationDans ce tutoriel, nous allons découvrir les protocoles UDP et TCP, deux protocoles indispensables lorsque l'on s'intéresse au fonctionnement des réseaux informatiques. Les protocoles TCP et UDP sont présents au sein de la couche "Transport" (ou couche n°4) du modèle OSI, ce qui va permettre de déterminer comment les données seront échangées entre deux hôtes. L'objectif de cet article est de vous proposer une introduction à ces deux protocoles afin de comprendre l'essentiel, tout en illustrant mes propos avec des analyses de trames réseau obtenues à partir du logiciel Wireshark. Note : si vous souhaitez effectuer des analyses de trame pour tester de votre côté, vous devez installer Wireshark sur votre machine. Voici le lien vers le site officiel : Télécharger Wireshark. II. Le protocole TCP TCP signifie Transmission Control Protocol, et il s'agit d'un protocole orienté connexion. Le protocole TCP est très utilisé lorsque l'on utilise des protocoles IP, c'est pour cela que l'on parle aussi de TCP/IP. Avec le protocole TCP, avant que des données soient échangées entre les deux hôtes, l'hôte source va créer une session de connexion avec l'hôte distant afin de le prévenir qu'il va recevoir des données. Pour cela, un premier échange aura lieu entre les deux hôtes (voir détails ci-dessous). Une fois que la connexion est établie, l'échange de données peut commencer. Pendant cet échange de données, les paquets (correspondants aux données) sont envoyés dans l'ordre, et le protocole TCP va s'assurer que tous les paquets sont bien transmis, et si ce n'est pas le cas, il est capable de renvoyer les paquets manquants. C'est l'un des avantages du protocole TCP. Cette connexion sera maintenue jusqu'à ce qu'elle soit fermée, ce qui signifie qu'elle sera active à minima jusqu'à la fin de l'échange de données entre les deux hôtes. Elle peut être maintenue afin d'être prête dès que les deux hôtes auront besoin de communiquer ensemble. En complément du contrôle des flux et de la gestion des erreurs, le protocole TCP est capable de contrôler la congestion du réseau sur lequel les paquets sont échangés. Un algorithme de contrôle de congestion est utilisé et en cas de surcharge du réseau, le flux TCP sera adapté en conséquence. Il faut retenir que TCP va permettre d'établir une connexion fiable entre les deux hôtes pour s'assurer que les données sont correctement reçues par l'hôte distant. A. Les protocoles qui utilisent TCP TCP est le protocole de transport le plus utilisé sur Internet et chaque protocole applicatif a besoin d'utiliser un protocole de transport, dont TCP et UDP font partie. Il est difficile d'établir une liste exhaustive des protocoles qui s'appuient sur TCP pour le transport. Néanmoins, voici la liste de quelques protocoles populaires qui s'appuient sur TCP : Les protocoles HTTP et HTTPS, notamment pour charger le contenu des sites Internet Le protocole SMTP pour envoyer des e-mails Le protocole NFS pour transférer des données (sur certaines versions uniquement) Le protocole SMB pour transférer des données Les protocoles SSH et Telnet pour la gestion à distance d'un équipement Le protocole RDP pour l'administration d'un hôte via le Bureau à distance Le protocole LDAP pour interroger un annuaire comme l'Active Directory Vous l'avez compris, TCP est un protocole que l'on utilise tous les jours au travers d'applications diverses et variées. Vous verrez également qu'UDP joue un rôle important au quotidien. B. Fonctionnement d'une connexion TCP Pour établir une connexion TCP, trois étapes sont nécessaires alors on parle d'un processus "three-way handshake". Ces trois étapes correspondent à trois paquets TCP : SYN, SYN-ACK et ACK. Ces termes correspondent à des flags (des marqueurs) que l'on peut retrouver au sein des paquets TCP. L'initialisation d'une connexion TCP entre deux hôtes se schématise de cette façon : Le paquet TCP SYN correspond à une demande d'initialisation de connexion envoyée par un client à un serveur, tout en sachant que SYN signifie "Synchronized". Ensuite, le serveur répond avec un paquet TCP SYN-ACK pour initier la connexion dans l'autre sens (SYN) et indiquer au client qu'il a bien reçu la demande de connexion (ACK pour Acknowledge). Enfin, le client répond au serveur avec un paquet TCP ACK pour accuser réception de la demande de connexion (Acknowledge). La connexion TCP est établie en mode full-duplex, c'est-à-dire dans les deux sens. Note : des numéros de séquence sont associés aux différents échanges TCP afin de pouvoir suivre les connexions. En cas de perte de paquets, c'est grâce à ce suivi des numéros de séquence, incrémenté au fur et à mesure de l'échange, que TCP est capable de réémettre les paquets manquants. Chaque échange contient deux numéros : un numéro de séquence et un numéro d'acquittement (ack). Pour fermer une connexion TCP, il y a deux méthodes : la méthode propre (ou normale, disons) qui consiste à envoyer un paquet TCP FIN à l'hôte distant pour lui demander de fermer la connexion aussi de son côté. En attendant sa réponse, on reste à l'écoute, notamment le temps qu'il indique que la connexion peut être fermée et les ressources libérées. Le serveur va envoyer un paquet TCP ACK puis ensuite TCP FIN (lorsque la connexion sera prête à être fermée côté serveur), et enfin le client répondra par TCP ACK : la connexion sera fermée des deux côtés. Lorsque la connexion TCP ne peut pas être terminée proprement (par exemple : une coupure réseau entre les deux hôtes, un bug pendant la session, etc.), il existe une autre solution qui consiste à forcer la fermeture de la connexion TCP via un paquet TCP RST. On peut dire que l'on essaie d'avertir l'hôte distant que l'on ne répondra plus à ses requêtes pour cette connexion et qu'elle va être fermée. C. TCP : capture de trafic HTTP Pour voir dans la pratique comment se déroul une session TCP, on peut utiliser un logiciel de capture de paquets réseau, tel que Wireshark. Pour générer une connexion TCP, nous allons nous connecter sur un site Internet via le protocole HTTP (ou HTTPS). Au lancement du logiciel, il est nécessaire de cliquer sur le menu "Capture" puis "Options" afin de sélectionner l'interface réseau, ici "Ethernet0", mais aussi pour définir un filtre. Pour que notre capture ne soit pas polluée et que l'on récupère uniquement ce qui concerne la connexion au site Internet, on va ajouter un filtre sur l'adresse IP du serveur qui héberge le site Internet (en l'occurrence une machine virtuelle sur mon réseau local dans cet exemple). Ce filtre sur l'adresse IP "192.168.100.120", aussi en source et destination sera : ip src 192.168.100.120 or ip dst 192.168.100.120 Le filtre "ip src" permet de définir un filtre sur l'adresse IP source, tandis que le filtre "ip dst" permet de filtrer sur l'adresse IP de destination. Le fait d'indiquer "or" permet d'inclure une condition "ou" afin de capture les échanges entre notre machine locale et le serveur Web distant. Une fois que c'est fait, cliquez sur "Démarrer" pour débuter la capture. Wireshark : filtre sur une adresse IP source et destinationDans le même temps, on accède au site Internet situé à l'adresse "192.168.100.120" à partir d'un navigateur. Au sein de Wireshark, on peut voir une dizaine de paquets apparaître. Il est temps d'arrêter la capture afin de l'analyser en cliquant sur le bouton "stop" en haut à gauche. Wireshark : communication en HTTP entre un client et un serveur webLa colonne "Protocol" donne des indications sur le protocole repéré au sein de chaque paquet capturé. On remarque la présence de deux protocoles HTTP et TCP. Wireshark : paquets TCP et HTTP lors de la connexion à un site Internet via HTTPOn remarque également que les premiers paquets sont uniquement en TCP : cet échange de quelques paquets TCP correspond à l'initialisation de la connexion afin de permettre le transfert de données dans les deux sens. On peut voir le paquet n°1 (le numéro de paquet est indiqué sur la première colonne) où notre hôte local (192.168.100.101) envoie une requête TCP "SYN" à destination du serveur Web (192.168.100.120). Ensuite, le paquet n°2 correspond à la réponse du serveur Web à notre hôte local afin d'initier la connexion, d'où le TCP "SYN, ACK" pour lui dire qu'il a bien reçu sa demande. Enfin, le paquet n°3 correspond à une nouvelle réponse TCP "ACK" de l'hôte local vers le serveur Web : la connexion est établie. Wireshark : plusieurs connexions TCP initiéesNote : il ne faut pas confondre les numéros de paquets Wireshark avec les numéros de séquences et d'acquittement évoqués précédemment. Les numéros de paquets dans Wireshark n'ont pas de réelles significations, si ce n'est permettre de classer les paquets chronologiquement. En regardant la capture d'écran ci-dessus, on peut avoir l'impression que la connexion TCP est initialisée plusieurs fois. Disons que c'est bien le cas dans le sens où plusieurs connexions TCP sont montées en parallèle afin de transférer plusieurs fichiers en même temps : ce qui est fort utile sur les pages où il y a de nombreux éléments, à savoir des images, des feuilles de style CSS, etc. Au sein de Wireshark, chaque connexion TCP est associée à un numéro de stream que l'on peut afficher en regardant le champ "Stream index". Wireshark : le champ "Stream index" d'une connexion TCPUne fois la connexion TCP établie, les données sont transférées. Chaque paquet HTTP est suivi d'un paquet TCP "ACK" : l'hôte local demande la ressource au serveur Web (paquet n°7), et ce dernier lui répond "OK, j'ai bien reçu ta demande" (paquet n°8) et il commence à lui retourner les données (paquet n°9). Ensuite, l'hôte local confirme au serveur Web qu'il a bien reçu les données via une réponse TCP "ACK" (paquet n°10). En complément, au sein de chaque paquet HTTP, on peut voir qu'il y a un en-tête TCP, ce qui prouve que le protocole HTTP utilise bien le protocole TCP pour le transport des données. Présence d'un en-tête TCP dans les paquets HTTPPassons maintenant à la découverte du protocole UDP. III. Le protocole UDP UDP signifie User Datagram Protocol, et il s'agit d'un protocole de communication sans connexion. Le protocole UDP est une alternative au protocole TCP. Lorsque le protocole UDP est utilisé pour transporter les données, il va envoyer les données d'un hôte source vers un hôte de destination, sans chercher à savoir si l'hôte de destination a bien reçu l'ensemble des données. Autrement dit, il n'y a pas de vérification des erreurs : si l'on envoie un fichier via UDP, on ne sait pas si l'hôte distant a reçu entièrement ce fichier ou s'il l'a reçu partiellement. Note : lorsque l'on parle du protocole UDP, on évoque le principe du "fire and forget" c'est-à-dire "tire et oublie" puisqu'avec UDP on envoie les paquets puis on ne s'en occupe plus, comme si on avait oublié qu'un paquet avait été envoyé. Puisque l'on ne vérifie pas que l'hôte distant a bien reçu les données, on économise des ressources, mais aussi du temps, donc le protocole UDP est plus rapide que le protocole TCP. L'en-tête d'un segment UDP contient très peu de champs : le port source, le port de destination, la longueur totale du segment, la somme de contrôle (pour vérifier l'intégrité du segment envoyé par le réseau) et les données. A. Les protocoles qui utilisent UDP Voici quelques exemples de protocoles qui utilisent UDP comme protocole de transport, tout en sachant que cette liste n'est pas exhaustive. Le protocole DNS pour la résolution des noms (même si TCP peut être utilisé dans de rares cas) Le protocole SNMP pour la supervision des équipements Le protocole NTP pour la mise à jour de la date et l'heure via le réseau Le protocole TFTP pour le transfert de fichiers simplifié Au quotidien, on utilise le protocole DNS pour naviguer sur Internet afin de résoudre les noms des sites que l'on souhaite visiter. Cette résolution de noms s'effectue via le protocole de transport UDP. Lorsque l'on regarde un flux vidéo en streaming, ce flux est transporté via le protocole UDP, car cela permet d'alléger la charge côté serveur et que c'est adapté à cet usage. Pour lire un flux diffusé par un serveur, le protocole UDP est idéal. Généralement, les protocoles qui utilisent UDP le font, car si un paquet est perdu ce n'est pas critique pour le reste de la transmission. Par exemple, s'il y a une perte d'une image lors de la lecture d'un flux en streaming, cela n'est pas grave et passera inaperçu. B. UDP : capture de trafic DNS Sur le même principe que pour le protocole TCP, nous allons réaliser une capture de paquets avec Wireshark. Cette fois-ci, le protocole DNS sera étudié afin de visualiser l'usage du protocole de transport UDP. Au sein de Wireshark, cliquez sur "Capture" puis "Options". On va créer un filtre pour capturer uniquement les paquets à destination du serveur DNS configuré sur ma machine locale et correspondant à l'adresse IP "192.168.100.11". À la place du filtre "ip dst", on peut utiliser "dst host" pour spécifier un hôte cible y compris en indiquant un nom DNS directement plutôt qu'une adresse IP. Ce qui donne le filtre suivant : dst host 192.168.100.11 Mais, on aurait pu utiliser : ip dst 192.169.100.11 Afin de capturer l'échange complet, avec les réponses du serveur DNS, il faudrait ajouter une condition sur l'adresse IP source. Pour s'intéresser uniquement à l'UDP et remarquer sa présence, ce n'est pas indispensable. ip src 192.168.100.11 or ip dst 192.168.100.11 Il ne reste plus qu'à cliquer sur "Démarrer". Wireshark : filtre sur une adresse IP destinationPendant ce temps, à l'aide d'une console on va générer une requête DNS via l'outil "nslookup" sur un nom de domaine. Pour ma part, je vais tout simplement requêter sur le nom de mon domaine Active Directory. nslookup it-connect.local En arrière-plan, on remarque la présence des paquets DNS dans Wireshark. Wireshark : communication DNS entre un client et un serveurSi l'on regarde le paquet n°8, on voit que mon hôte local a interrogé le serveur DNS pour obtenir une réponse pour le domaine "it-connect.local". Le paquet suivant ne correspond pas à la réponse du serveur DNS, car je n'ai pas inclus les réponses dans mon filtre Wireshark. En regardant l'en-tête du paquet correspondant à ma requête DNS, on remarque la présence d'un en-tête UDP puisque c'est indiqué "User Datagram Protocol". On remarque également que cet en-tête contient beaucoup moins de champs différents : il n'y a pas de suivi sur le transfert des données ni de connexion, donc c'est plus léger. Wireshark : présence d'un en-tête UDP dans les paquets DNSIV. TCP vs UDP En reprenant les caractéristiques principales, voici ce que l'on obtient si l'on compare les protocoles TCP et UDP : TCP UDP Fiabilité Elevée Faible Vitesse Faible Elevée Détection des erreurs Oui Non Correction des erreurs Oui Non Contrôle de la congestion Oui Non Accusé de réception (ACK) Oui Uniquement la somme de contrôle Si l'on veut faire une comparaison avec la vie réelle, on peut prendre l'exemple d'un courrier que l'on expédie par voie postale. Si l'on envoie ce courrier en prenant l'option "lettre recommandée avec accusé de réception", on sera capable de savoir si le destinataire a bien reçu ou non le courrier puisque l'on va recevoir une preuve dans sa boite aux lettres quelques jours plus tard. Cet accusé de réception nous assure que le courrier est arrivé à destination. On peut considérer en quelque sorte que cela correspond au fonctionnement du protocole TCP. Par contre, si l'on envoie ce courrier simplement en tant que "lettre verte" ou "lettre prioritaire", nous n'avons aucun moyen de savoir si le destinataire a bien reçu le courrier via ce mode d'expédition. Cette fois-ci, on se rapproche du fonctionnement du protocole UDP. On peut imaginer qu'un jour nous allons recevoir une réponse à notre courrier, car souvent un courrier implique une réponse, tout comme le serveur DNS répond aux requêtes DNS qui lui sont envoyées, mais cela est lié au fonctionnement du protocole de couche supérieure (DNS) plutôt qu'au protocole d'UDP, ce dernier étant là uniquement pour transporter la requête. Désormais, vous connaissez les grands principes des protocoles TCP et UDP. Si la sécurité informatique vous intéresse, je vous recommande de lire cet article sur les scans de port en exploitant le protocole TCP. Pour finir, sachez que ce ne sont pas les seuls protocoles de transport disponibles et il y a un protocole assez récent qui est de plus en plus à la mode : le protocole QUIC. Probablement le sujet d'un prochain article. Afficher l’article complet
  9. En faisant une petite recherche dans Google, tu aurais vu que peech2eecha.com est un PUP (potentially unwanted program) ou Programme potentiellement indésirable en français. Celà signifie que tu as installé sans t'en rendre compte ce programme sur ton ordinateur et qu'il essaye d'ouvrir des fenêtres publicitaires par exemple. Tu trouveras toutes les explications en français sur le site malkal.com concerant les PUP et comment s'en débarraser.
  10. Un grand à @Ernest44 qui est le 1er donateur de l'année 2022 et qui j'espère sera suivi par beaucoup d'autres.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.