La différence entre la communication socket et la communication TCP : 1. Le protocole TCP appartient au protocole de la couche transport, tandis que le socket est une couche d'abstraction entre la couche application et la couche transport 2. L'établissement d'une connexion TCP nécessite trois poignées de main ; La connexion socket peut être maintenue Connexion longue;4. Le serveur TCP et le client TCP utilisent la communication socket, etc.
L'environnement d'exploitation de cet article : système Windows 10, ordinateur Dell G3.
Quelle est la différence entre la communication socket et la communication TCP ?
La différence entre TCP et Socket
1 : Protocole TCP
Le protocole TCP est un protocole de couche de transport (UDP est également un protocole de couche de transport, mais le protocole UDP est apatride). L'établissement d'une connexion TCP nécessite trois poignées de main et la déconnexion d'une connexion TCP nécessite quatre vagues. Le téléphone mobile peut utiliser la fonction réseau car la couche inférieure du téléphone mobile implémente le protocole TCP/IP. À l'aide du terminal du téléphone mobile, vous pouvez établir une connexion TCP avec le serveur via le réseau sans fil. Le protocole TCP peut fournir une interface avec le réseau de couche supérieure, de sorte que la transmission des données du réseau de couche supérieure soit établie sur un réseau « indifférencié ».
Tcp nécessite trois poignées de main pour établir une connexion :
Figure 1 : Schéma de prise de contact à trois voies de connexion TCP
Comme le montre la figure :
Pour établir une connexion TCP avec le serveur, le client envoie d'abord un syn J signal au serveur et au service Après avoir reçu ce signal, le client répond avec un signal ACK J+1 et ajoute un signal syn K supplémentaire. Une fois que le client a reçu le signal ACK J+1, il sait que le serveur peut recevoir mon. signal. Plus tard, le client peut envoyer des données à votre serveur en toute sécurité sans craindre que votre serveur ne puisse pas recevoir les données que j'ai envoyées.
Une fois que le client a reçu le signal SYN K envoyé par le serveur, il doit également renvoyer un signal ACK K+1 au serveur de cette façon, le serveur saura quand il recevra ce signal envoyé par mon. serveur à votre client, vous Le client peut le recevoir, afin que mon serveur puisse envoyer des données à votre client en toute sécurité sans craindre que votre client ne puisse pas recevoir les données qu'il a envoyées.
En fait, nous pouvons le voir dans la description ci-dessus :
L'établissement d'une connexion peut se faire en quatre étapes, tout comme la déconnexion d'une connexion TCP. Elle combine simplement le signal de réponse du serveur ACK et le signal de demande d'authentification du client SYNC en une seule étape. Disparu.
Quatre vagues sont nécessaires lorsque la connexion TCP est fermée :
Figure 2 : Schéma de principe de quatre vagues lorsque la connexion TCP est déconnectée
Après que le client ait reçu le signal de réponse ACK M+1 du serveur, le client sait : Serveur Maintenant que vous savez que mon client n'enverra plus de paquets de données à votre serveur, vous pouvez arrêter de me surveiller.
Mais pour le moment, seul le flux unidirectionnel client->serveur s'est arrêté, et le flux dans l'autre sens :
Serveur->client peut toujours envoyer des données normalement jusqu'à ce que le serveur envoie FIN N au client Wave signal, le client répond au serveur avec un signal ACK N+1, et le serveur sait : Le client sait que mon serveur n'enverra plus de paquets de données à votre client, et vous pouvez arrêter de me surveiller.
À ce stade, le flux unidirectionnel client->serveur et le flux unidirectionnel serveur->client se sont arrêtés dans les deux sens et la connexion peut être fermée.
Deux : socket
Nous savons que si deux processus doivent communiquer, le principe le plus fondamental est de pouvoir identifier de manière unique un processus. Dans la communication de processus locale, nous pouvons utiliser le PID pour identifier un processus de manière unique, mais le PID. n'existe que localement unique, la probabilité d'un conflit PID entre deux processus du réseau est très élevée. À l'heure actuelle, nous devons trouver un autre moyen. Nous savons que l'adresse IP de la couche IP peut identifier de manière unique l'hôte et le. Le protocole de couche TCP et le numéro de port peuvent identifier de manière unique le processus hôte, de sorte que nous pouvons utiliser l'adresse IP + le protocole + le numéro de port pour identifier de manière unique un processus dans le réseau.
Après avoir pu identifier de manière unique les processus du réseau, ils peuvent communiquer à l'aide de sockets. Qu'est-ce qu'un socket ?
Nous traduisons souvent socket par socket. Socket est une couche d'abstraction entre la couche application et la couche transport. Elle résume les opérations complexes de la couche TCP/IP en plusieurs interfaces simples dans lesquelles la couche application peut appeler le processus implémenté. le réseau.
Figure 5 : Diagramme schématique du module du système de communication socket
Le processus du serveur TCP et du client TCP utilisant la communication socket est le suivant.
Comme vous pouvez le voir sur l'image, la connexion par prise peut maintenir une longue connexion.
Figure 6 : Diagramme schématique du processus de communication socket client/serveur de base
Notez que la connexion socket peut être activement fermée par le client ou le serveur.
Pour plus de connaissances connexes, veuillez visiter la rubriqueFAQ!
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!