Maison > développement back-end > Golang > Fondamentaux du réseau

Fondamentaux du réseau

Mary-Kate Olsen
Libérer: 2024-10-06 06:07:31
original
569 Les gens l'ont consulté

Network fundamentals

Dans le monde de la conception de systèmes, les réseaux sont le ciment qui lie les différents composants entre eux. Que vous construisiez une application Web, un système distribué ou même un simple service backend, comprendre le fonctionnement des réseaux est essentiel pour garantir une communication, une sécurité et des performances fluides. Dans ce chapitre, nous aborderons certains aspects fondamentaux de la mise en réseau qui sont cruciaux pour créer des systèmes évolutifs et fiables.


1. Bases des réseaux informatiques

Commençons par la fondation. Un réseau informatique est un ensemble d'appareils interconnectés (ordinateurs, serveurs, routeurs, etc.) qui communiquent entre eux. C'est comme le système postal pour les données : il permet à différents appareils d'envoyer et de recevoir des informations sous forme de paquets. Lorsqu'un utilisateur interagit avec un service en ligne (par exemple, votre application de livraison de nourriture), ces paquets sont constamment envoyés entre son appareil et les serveurs qui alimentent l'application.

Types de réseaux :
  1. Réseau local (LAN) : Il s'agit d'un réseau qui connecte des appareils dans une zone limitée comme un bâtiment ou un campus. Par exemple, un réseau de bureau où les ordinateurs et les imprimantes communiquent via une connexion filaire ou sans fil. La principale caractéristique d’un réseau local est qu’il est rapide et généralement confiné à un petit espace.

Exemple : Dans un bureau typique, les ordinateurs des employés sont connectés à des imprimantes, des serveurs de fichiers et parfois même des téléphones via un réseau local. Cette configuration permet un partage rapide des ressources.

  1. Réseau étendu (WAN) : cela couvre une zone plus large et connecte plusieurs réseaux locaux. Considérez Internet comme le plus grand exemple de WAN. C’est ainsi que différentes parties du monde peuvent communiquer entre elles.

Exemple : Imaginez une grande entreprise avec des bureaux à New York, Londres et Tokyo. Les bureaux disposent de réseaux locaux en interne, mais pour communiquer entre eux, ils utilisent un WAN, tirant probablement parti d'Internet ou de connexions privées.

Couches réseau et modèle OSI :

Pour comprendre le fonctionnement des réseaux, nous utilisons le Modèle OSI, qui divise le réseau en sept couches :

  1. Couche physique : il s'agit de l'aspect matériel : câbles, commutateurs et transmission sans fil.
  2. Data Link Layer : gère la communication entre les appareils sur le même réseau local.
  3. Couche réseau : détermine la manière dont les paquets de données sont envoyés d'un appareil à un autre (par exemple, le routage).
  4. Couche de transport : assure une transmission fiable des données, gère le contrôle des flux et gère les erreurs (c'est là que TCP opère).
  5. Couche de session : gère la connexion entre deux appareils, garantissant que les sessions restent ouvertes en cas de besoin.
  6. Couche de présentation : traduit les formats de données afin que les systèmes se comprennent.
  7. Couche d'application : où fonctionnent les applications telles que les navigateurs et les clients de messagerie. C'est là que les données avec lesquelles vous interagissez entrent en jeu.

La plupart du temps, dans la conception de systèmes, nous nous concentrons sur les couches 3 à 7, en particulier lorsqu'il s'agit des protocoles de communication, de la sécurité et du flux de données.


2. HTTP/HTTPS, TCP/IP, DNS et équilibreurs de charge

HTTP/HTTPS :

HTTP (Hypertext Transfer Protocol) et HTTPS (HTTP Secure) sont les principaux protocoles utilisés pour la communication sur le Web. Ils définissent la manière dont les messages sont formatés et transmis entre les clients (comme les navigateurs) et les serveurs.

  • HTTP est le protocole derrière les requêtes que vous adressez aux sites Web. Par exemple, lorsque vous chargez une page Web, votre navigateur envoie une requête HTTP au serveur hébergeant cette page Web, et le serveur renvoie une réponse HTTP avec le contenu de la page.

Exemple : Vous tapez "www.fooddelivery.com" dans votre navigateur, et il envoie une requête HTTP pour récupérer la page d'accueil.

  • HTTPS est la version sécurisée de HTTP. Il crypte les données transmises, garantissant que les informations sensibles telles que les mots de passe et les numéros de carte de crédit ne sont pas interceptées par des attaquants.

Exemple : Lorsqu'un utilisateur passe une commande sur votre application de livraison de nourriture, HTTPS garantit que ses informations de paiement sont cryptées et sécurisées lorsqu'il voyage de son appareil vers vos serveurs.

TCP/IP :

TCP (Transmission Control Protocol) et IP (Internet Protocol) sont deux des protocoles fondamentaux qui alimentent Internet.

  • TCP garantit une communication fiable entre les appareils. Il décompose les messages en paquets et garantit qu'ils sont livrés correctement et dans le bon ordre. Si des paquets sont perdus en cours de route, TCP les retransmet. Cela le rend idéal pour les applications où l'intégrité des données est cruciale, comme les transferts de fichiers ou la navigation sur le Web.

Exemple : Si votre application de livraison de nourriture envoie les informations du client au serveur, TCP garantit que l'intégralité du message est livrée sans manquer aucune partie.

  • IP est responsable de l'adressage et du routage des paquets vers la bonne destination. Considérez les adresses IP comme les adresses sur les enveloppes ; ils indiquent au réseau où envoyer les données.

Exemple : Lorsque vous effectuez une demande depuis votre téléphone, celui-ci utilise votre adresse IP pour acheminer les données vers le serveur. Le serveur possède sa propre adresse IP, permettant aux paquets de vous revenir correctement.

TCP/IP forment ensemble l’épine dorsale de la communication Internet. C'est comme un service postal fiable : TCP garantit que le contenu du colis est intact et IP garantit qu'il arrive au bon endroit.

DNS (Système de noms de domaine) :
Le

DNS est comme l'annuaire téléphonique d'Internet. Au lieu de mémoriser les adresses IP (qui sont comme des numéros de téléphone pour les serveurs), nous utilisons des noms de domaine comme « www.example.com ». DNS résout ces noms en adresses IP afin que votre appareil sache où envoyer la demande.

  • Exemple : Lorsqu'un utilisateur tape « www.fooddelivery.com » dans son navigateur, son appareil interroge un serveur DNS pour trouver l'adresse IP associée à ce domaine, puis adresse une requête à ce serveur.
Équilibreurs de charge :

Un équilibreur de charge est crucial lors d'une mise à l'échelle horizontale. Il s'agit d'un outil qui répartit le trafic entrant sur plusieurs serveurs pour garantir qu'aucun serveur n'est submergé. Cela rend votre système plus évolutif et plus tolérant aux pannes.

  • Exemple : Imaginez que c'est l'heure du déjeuner et que tout le monde essaie de passer des commandes sur votre application de livraison de nourriture. Vous disposez de 10 serveurs prêts à traiter les requêtes, mais au lieu que tout le trafic soit dirigé vers un seul serveur, l'équilibreur de charge répartit les requêtes de manière égale. Cela garantit qu'aucun serveur n'est surchargé, évitant ainsi les temps d'arrêt et garantissant des temps de réponse rapides aux utilisateurs.

3. Réseaux de diffusion de contenu (CDN)

Les

CDN sont un excellent moyen de réduire la latence et d'améliorer les performances pour les utilisateurs répartis sur différents emplacements. Un CDN est un réseau distribué de serveurs répartis dans le monde entier qui stockent les versions mises en cache de votre contenu. Lorsqu'un utilisateur demande quelque chose à votre site Web, le CDN diffuse ce contenu depuis le serveur le plus proche de lui plutôt que depuis votre serveur principal, réduisant ainsi le temps de chargement.

Exemple : Disons que votre application de livraison de nourriture a des clients en Inde et aux États-Unis, mais que vos serveurs principaux sont situés en Europe. Sans CDN, les utilisateurs en Inde pourraient connaître des temps de chargement lents car leurs demandes doivent voyager jusqu'en Europe. Mais avec un CDN, un serveur en Inde peut diffuser des images en cache, des détails sur les restaurants et du contenu statique, ce qui rend l'application plus rapide.

Avantages des CDN :
  • Latence réduite : étant donné que les données sont servies à partir d'un serveur plus proche de l'utilisateur, elles connaissent des temps de chargement plus rapides.
  • Distribution de la charge : un CDN aide à réduire la charge sur vos serveurs principaux en déchargeant les demandes de contenu statique comme les images, les fichiers CSS et les scripts.
  • Disponibilité améliorée : même si vos serveurs principaux tombent en panne, le CDN peut continuer à servir les versions en cache de votre site, améliorant ainsi la disponibilité.

4. SSL, TLS et sécurité dans les réseaux

La sécurité est une préoccupation majeure dans tout système, et les principales technologies permettant de garantir une communication sécurisée sur les réseaux sont SSL (Secure Sockets Layer) et TLS (Transport Layer Security). Ces protocoles cryptent les données envoyées entre les clients et les serveurs, garantissant ainsi que les informations sensibles, telles que les mots de passe et les détails de paiement, sont protégées contre les écoutes indiscrètes.

SSL et TLS :
  • SSL était le protocole d'origine pour sécuriser les communications, mais il a été largement remplacé par le TLS, plus sécurisé. Lorsque vous voyez « https:// » dans l'URL d'un site Web, cela signifie que la connexion est sécurisée via SSL/TLS.

Exemple : Dans votre application de livraison de nourriture, lorsqu'un utilisateur soumet ses informations de carte de crédit pour effectuer un paiement, les données sont cryptées à l'aide de TLS avant d'être envoyées au serveur. Cela garantit que même si quelqu’un intercepte les données, il ne pourra pas les lire car elles sont cryptées.

  • Processus de prise de contact : TLS utilise un processus de prise de contact pour établir une connexion sécurisée. Le client (navigateur de l’utilisateur) et le serveur échangent des clés cryptographiques pour établir une connexion sécurisée. Une fois la connexion établie, toutes les communications ultérieures sont cryptées.

Exemple : lorsqu'un utilisateur ouvre votre application, son appareil et vos serveurs passent par cette poignée de main pour se mettre d'accord sur la façon de chiffrer les données avant que des informations sensibles, telles que les informations de connexion ou de paiement, ne soient transmises.

Importance de la sécurité dans les réseaux :

Dans tout système où les données circulent sur les réseaux, la sécurité est primordiale. Voici quelques pratiques de sécurité clés pour garantir un système sécurisé :

  • Chiffrement : chiffrez toujours les données sensibles en transit à l'aide de protocoles tels que TLS pour empêcher les attaques de l'homme du milieu.
  • Protection par pare-feu : utilisez des pare-feu pour restreindre l'accès à vos serveurs. Autorisez uniquement le trafic approuvé via des ports prédéfinis et bloquez les tentatives non autorisées.
  • Limitation du débit API : protégez votre système contre les attaques DDoS (déni de service distribué) en limitant le nombre de requêtes que chaque client peut effectuer dans une certaine fenêtre de temps.

Exemple : Supposons qu'un acteur malveillant tente de submerger votre application de livraison de nourriture en envoyant des millions de fausses demandes. La limitation du débit de l'API peut limiter ces requêtes et empêcher le système de planter.

  • Surveillance de sécurité : utilisez des outils de surveillance pour détecter des modèles de trafic inhabituels ou des intrusions potentielles. Des outils tels que **Systèmes de détection d'intrusion (

IDS)** peut vous alerter en cas de tentative de violation de votre réseau.

Certificats :

Pour activer SSL/TLS, vous avez besoin d'un certificat SSL, qui vérifie l'identité de votre site Web ou de votre serveur. Les certificats sont délivrés par des entités de confiance appelées Autorités de certification (CA), qui garantissent la légitimité de votre site Web.

Exemple : Lorsque vous achetez un certificat SSL pour le domaine de votre application de livraison de nourriture, il est émis par une autorité de certification comme Let's Encrypt ou DigiCert. Cela indique aux utilisateurs que leurs données sont en sécurité et qu'ils interagissent réellement avec votre application, et non avec un imposteur.

Authentification à deux facteurs (2FA) :

La mise en œuvre du 2FA est une couche de sécurité supplémentaire, obligeant les utilisateurs à fournir deux formes d'identification (généralement quelque chose qu'ils connaissent, comme un mot de passe, et quelque chose qu'ils possèdent, comme un appareil mobile). Cela rend beaucoup plus difficile pour les attaquants de compromettre les comptes.

Exemple : Dans votre application de livraison de nourriture, l'activation de la 2FA pour les utilisateurs peut aider à empêcher tout accès non autorisé, même si leur mot de passe est volé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal