Maison  >  Article  >  Quelles connaissances de base sont requises pour pénétrer le Web ?

Quelles connaissances de base sont requises pour pénétrer le Web ?

青灯夜游
青灯夜游original
2020-07-24 13:18:585550parcourir

Quelles connaissances de base sont requises pour pénétrer le Web ?

Bases de la pénétration du Web

Bases du réseau

Protocole IP

Le protocole IP est défini dans la troisième couche d'OSI-RM——Couche réseau

Le protocole IP est sans connexion. Les routeurs des nœuds du réseau IP sont adressés en fonction de l'adresse IP de l'en-tête de chaque paquet IP. De cette manière, les paquets IP appartenant au même message envoyés par le même hôte. peut emprunter un chemin différent jusqu'à l'hôte de destination.

Le protocole TCP/IP n'est pas entièrement conforme au modèle de référence OSI à sept couches.

Les 7 couches de bas en haut :

1 couche physique, 2 couches liaison de données, 3 couches réseau, 4 Transport couche, 5 couches de session, 6 couches de présentation, 7 couches d'application.

Les couches supérieures (c'est-à-dire 7, 6, 5 et 4) définissent les fonctions de l'application

Les 3 couches inférieures (c'est-à-dire 3, 2 et). 1 couches) sont principalement destinées au flux de données de bout en bout du réseau.

Le protocole de communication TCP/IP adopte une structure hiérarchique à 4 couches. Chaque couche appelle le réseau fourni par la couche suivante pour répondre à ses propres besoins.

Les 4 couches sont :

couche d'application, couche de transport, couche de réseau d'interconnexion et couche d'interface réseau.

Protocole UDP

UDP est un protocole de datagramme utilisateur, qui est un type de modèle de référence OSISans connexionProtocole de couche de transport.

UDP présente les inconvénients de ne pas assurer le regroupement de paquets, l'assemblage et ne peut pas trier les paquets, c'est-à-dire lorsqu'un message une fois envoyé , il n'y a aucun moyen de savoir s'il est arrivé sain et sauf et intact.

Protocole TCP

TCP est un orienté connexion, fiable, basé sur Couche de transportprotocole de communication pour les flux d'octets, défini par la RFC 793 de l'IETF.

La couche application envoie un flux de données représenté par des octets de 8 bits pour la transmission inter-réseau à la couche TCP, puis TCP divise le flux de données en segments de longueur appropriée (généralement affectés par le réseau auquel le l'ordinateur est connecté) La limite maximale de l'unité de transmission (MTU ) de la couche liaison de données).

Ensuite, TCP transmet le paquet résultat à la couche IP, qui transmet le paquet à la couche TCP de l'entité réceptrice via le réseau. Afin de garantir qu'aucune perte de paquets ne se produise, TCP attribue à chaque paquet un numéro de séquence. En même temps, le numéro de séquence garantit également que les paquets transmis à l'entité finale réceptrice sont reçus dans l'ordre .

Ensuite, l'entité réceptrice renvoie un

accusé de réception correspondant (ACK) pour le paquet reçu avec succès si l'entité émettrice se trouve dans un délai raisonnable aller-retour (RTT) ; si aucun accusé de réception n'est reçu, le paquet de données correspondant est supposé perdu et sera retransmis. TCP utilise une fonction de somme de contrôle pour vérifier s'il y a des erreurs dans les données calcule la somme de contrôle lors de l'envoi et de la réception.

Une brève description de la poignée de main à trois voies TCP et de la vague à quatre voies

Poignée de main à trois voies

Première poignée de main :

Pour communiquer avec le serveur, le client doit d'abord informer le serveur, puis envoyer un signal de demande de connexion de SYN=1, "Frère, serveur , je veux te donner Parler."

Deuxième poignée de main :

Lorsque le serveur reçoit la demande de connexion du client , il doit donner au client un message de confirmation, "Je comprends (ACK ), je suis prêt , pouvez-vous vous connecter maintenant (SYN ) ».

La troisième poignée de main :

Lorsque le client reçoit les informations de confirmation de connexion du serveur , il doit informer poliment le serveur : "D'accord, démarrons la connexion (ACK )".

L'ensemble du processus d'établissement d'une connexion est maintenant terminé et la prochaine étape est le processus de communication et de transmission d'informations les uns aux autres en même temps.

Agitez quatre fois

Agitez pour la première fois : les deux parties ont presque communiqué,

A ce moment-là, le client a également terminé, qu'est-ce que ensuite ? Déconnectez la connexion de communication, alors dites au serveur "J'ai terminé (FIN )". À ce moment, il est en attente de mettre fin à la connexion.

Salut pour la deuxième fois : le serveur sait que le client n'a rien à dire Le serveur a encore deux choses à dire au client à ce moment, "Je sais que tu as fini de parler( ACK), laissez-moi vous dire encore quelques mots, &*……%¥ ».

Sauve une troisième fois : A ce moment, le client est tout ouïe et continue d'attendre la fin, et le serveur a fini de parler Il est maintenant en état d'attente. pour fermer la connexion et dira au client : "J'ai terminé, rompons (FIN )".

La quatrième vague : Le client sait que le serveur a fini de parler, et il doit également le dire au serveur (ACK), car la connexion et la déconnexion nécessitent que les deux parties appuient sur la fermeture opération. On, le client définit également une minuterie pour lui-même, car il ne sait pas si la phrase qui vient d'être prononcée peut atteindre avec précision le serveur (instabilité du réseau ou autres raisons du réseau causées par d'autres facteurs),

L'heure par défaut. est défini C'est la somme du temps maximum des deux communications. Au-delà de ce temps, on suppose que le serveur a reçu ses propres informations de confirmation A ce moment, le client fermera sa propre connexion. reçoit la notification de confirmation du client, fermez immédiatement la connexion côté serveur. À ce stade, tout le processus de communication entre les deux parties se termine.

Une déclaration doit être faite ici :

Ce n'est pas nécessairement le client qui déconnecte le lien. N'importe qui peut lancer la commande de déconnexion en premier. De plus, il n'y a pas de norme fixe entre le client et. le serveur. Qui l’initie en premier ? Celui qui fait la demande est le client.

Pourquoi utiliser le mécanisme de poignée de main à trois ?

Supposons la situation anormale suivante :

Le client a envoyé le premier message de requête au serveur, mais le message n'a pas été rejeté sur le réseau, mais il est bloqué quelque part pendant longtemps et le client ne peut pas recevoir de confirmation du serveur. Il pense que le message est perdu, il renvoie donc le message cette fois-ci avec succès au serveur. Si la négociation à trois n'est pas utilisée, le serveur. il suffit de le faire. Le message est acquitté et une connexion est établie.

Après l'établissement et la libération de la connexion, le premier message envoyé et bloqué sur le réseau est arrivé au serveur. Le serveur pensait que le client avait renvoyé une demande de connexion (en fait, côté client, la connexion a été établie). déjà expiré), et une autre confirmation est envoyée au client.

Mais le client pensait qu'il n'avait pas envoyé le message de demande, il a donc ignoré la confirmation envoyée par le serveur, et le serveur a pensé qu'une nouvelle connexion était établie, il a donc continué à attendre que A envoie des données, causé Il s'agit d'un gaspillage de ressources du serveur et peut entraîner des risques de sécurité.

Par conséquent, si le mécanisme de prise de contact à trois voies est utilisé, une fois que le serveur a envoyé la confirmation, il ne reçoit pas la confirmation du client, il sait donc que la connexion n'a pas été établie, donc les ressources ne seront pas gaspillées dans cette attente insensée.

TCP/IP fait-il référence à ces deux protocoles ?

TCP/IP (Transmission Control Protocol/Internet Protocol) est un protocole de communication réseau qui régule tous les équipements de communication, notamment le format et méthode de transmission d'échange de données entre un hôte et un autre hôte.

Sliding Window Protocol

Sliding Window Protocol est une application du protocole TCP et est utilisé pour Contrôle de flux lors de la transmission des données du réseau pour éviter les encombrements.

Ce protocole permet à l'expéditeur d'envoyer plusieurs paquets de données avant de s'arrêter et d'attendre un accusé de réception. Étant donné que l'expéditeur n'a pas besoin de s'arrêter et d'attendre une confirmation à chaque fois qu'un paquet est envoyé, ce protocole peut accélérer la transmission des données et améliorer le débit du réseau.

HTTP

HTTP est un Protocole de transfert hypertexteC'est le protocole réseau le plus utilisé sur Internet. Tous les fichiers WWW doivent être conformes à cette norme.

Habituellement, le client HTTP initie une demande pour établir un TCPla valeur par défaut est 80port ) >Connecter. HTTPLe serveur écoute les requêtes envoyées par le client sur ce port. Une fois reçoit la requête, le serveur renvoie (au client) une ligne de statut, telle que "HTTP/1.1 200 OK", et un message (de réponse), dont le corps du message may Est le fichier demandé, un message d'erreur ou d'autres informations.

HTTPLa raison de l'utilisation de TCP au lieu d'UDP est que (ouverture) une page Web doit transmettre beaucoup de données, et le protocole TCP assure le contrôle de la transmission, l'organisation des données dans l'ordre et correction des erreurs.

Les ressources demandées via les protocoles HTTP ou HTTPS sont identifiées par l'Uniform Resource Identifier (ou, plus précisément, par des URL).

HTTPS

HTTPS est le Secure Sockets Layer Hypertext Transfer Protocol, un canal HTTP ciblant la sécurité, tout simplement, c'est la version sécurisée de HTTP.

Protocole de transfert hypertexte Le protocole HTTP est utilisé pour transférer des informations entre les navigateurs Web et les serveurs de sites Web. Le protocole HTTP envoie le contenu en texte brut et ne fournit aucune forme de cryptage des données Si un attaquant intercepte le message de transmission entre le navigateur Web et le serveur du site Web, il peut le lire. Comprendre directement les informations qu'il contient, le protocole HTTP n'est donc pas adapté à la transmission de certaines informations sensibles, telles que les numéros de carte de crédit, les mots de passe, etc.

Afin de résoudre cette lacune du protocole HTTP, un autre protocole doit être utilisé : Secure Sockets Layer Hypertext Transfer Protocol HTTPS. Pour la sécurité de la transmission des données, HTTPS ajoute le protocole SSL à HTTP SSL s'appuie sur des certificats pour vérifier l'identité du serveur et assurer la communication entre le navigateur et le serveur. Cryptage des communications.

Piratage HTTP

HttpsChiffré uniquement en transit, Httpscryptage par clé publique, Privé la clé de décryptage , la clé publique et la clé privée sont générées par un algorithme de chiffrement asymétrique .

Détournement HTTPS :

Le client envoie une requête au serveur, Le serveur renvoie un certificat CA de clé publiqueau client, et le client obtient le certificat de clé publique Générez aléatoirement une clé symétrique sur le client. Cette clé symétrique sera utilisée pour chiffrer tout le trafic de données ultérieur , puis la clé symétrique utilise la clé symétrique. clé publique Chiffrez et envoyez-la au serveur Le serveur possède la clé privée correspondant à la clé publique puis la déchiffre.

Les principales différences entre HTTPS et HTTP sont les quatre points suivants :

1 Le protocole https nécessite ca. Demander un certificat, il existe généralement peu de certificats gratuits et vous devez payer des frais.

2. http est un protocole de transfert hypertexte, et les informations sont transmission en texte clair, tandis que https est un protocole sslcrypté sécurisé.

3. http et https utilisent des méthodes de connexion complètement différentes et utilisent des ports différents Le premier est 80 et le second est 443.

4. La connexion http est très simple et est sans état ; le protocole HTTPS est construit à partir du SSL+HTTPprotocole et peut être apatride 🎜>Le protocole réseau de transmission cryptée et d'authentification d'identité

est plus sécurisé que le protocole http.

Remarque :

Apatride (le protocole n'a pas de mémoire pour le traitement des transactions, la vie n'est que comme la première fois) : Chaque communication entre le client et le serveur est un processus indépendant

. Les applications Web doivent suivre les sessions client (communication en plusieurs étapes). Pour les applications qui n'utilisent pas de cookies, le client doit se réauthentifier pour chaque demande (irréaliste). La session est utilisée pour suivre les traces du comportement de l'utilisateur après l'authentification de l'utilisateur (). expérience utilisateur améliorée, mais augmente le trafic d'attaque)

Résolution du nom de domaine DNS

Le client émet une requête DNS pour traduire l'adresse IP ou l'hôte name.DNS server Après réception de la demande du client :

1. Vérifiez le cache du serveur DNS

Si l'adresse ou le nom demandé est trouvé, un message de réponse est envoyé au client <.>

2. Si non trouvé, recherchez dans la base de données Si l'adresse ou le nom demandé est trouvé, un message de réponse est envoyé au client

3. Si non trouvé. , puis Envoyez la demande au serveur DNS du domaine racine , et séquentiellement recherchez le domaine de premier niveau à partir du domaine racine, puis recherchez le domaine de deuxième niveau à partir du haut- niveau, puis recherchez le domaine de troisième niveau à partir du domaine de deuxième niveau jusqu'à ce que vous trouviez celui que vous souhaitez résoudre. Adresse ou nom, c'est-à-dire envoyer un message de réponse au serveur DNS du réseau où se trouve le client. . Après avoir reçu la réponse, le serveur DNS la stocke maintenant dans le cache, puis envoie le résultat de l'analyse au client

4. S'il n'est pas trouvé, alors Renvoyer un message d'erreur

Pour plus de connaissances connexes, veuillez visiter : Site Web PHP chinois !

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!

Déclaration:
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