Préparation de base du réseau d'apprentissage Socket


Introduction à cette section :

Afin de prendre en charge les débutants n'ayant jamais appris Java Socket, ou de jeter un oeil aux concepts liés aux protocoles réseau impliqués dans le développement Android , Après tout, au cours de l'entretien, l'intervieweur m'a demandé combien de couches comporte le protocole réseau ? Alors, à quelle couche se trouve le protocole IP ? Qu'est-ce que c'est que Socket ? Quels genres ? À quelle couche se trouvent les protocoles TCP et UDP ? Quelle est la différence... Eh bien, ceci... Il est donc toujours utile d'apprendre la théorie conceptuelle de cette section. Nécessaire! Alors sans plus tarder, commençons cette section~


1 Une brève analyse du modèle de réseau à sept couches OSI

Bien sûr, nous ne le sommes pas. professionnel de l'ingénierie réseaux, à condition de savoir quelles couches il existe et à quoi elles servent !

Modèle de réseau OSI à sept couches (de bas en haut)  :

  • Couche physique (Physique)  : Fournit des supports de transmission et des équipements d'interconnexion pour la communication de données entre les appareils, assurant une transmission de données fiable environnement. Il peut être compris comme la partie support physique de la transmission réseau, telle que carte réseau, câble réseau, hub, répéteur, modem et ainsi de suite ! Au niveau de cette couche, les données n'ont pas été organisées et sont uniquement traitées sous forme de flux binaire brut ou de tension électrique. L'unité de cette couche est : bit bit
  • Couche liaison de données. (Datalink) : Il peut être compris comme un canal de données. Sa fonction principale est de savoir comment opérer sur des lignes physiques peu fiables. Transmission fiable des données, les fonctions de modification de couche comprennent : l'adressage d'adresse physique, le cadrage des données, le contrôle de flux, la détection et la retransmission des erreurs de données, etc. ! De plus, cette liaison de données fait référence à  : la couche physique doit fournir des supports de transmission et des connexions pour la communication de données entre les appareils terminaux. les médias sont À long terme, la connexion a toute une vie. Pendant la durée de vie de la connexion, les extrémités émettrice et réceptrice peuvent effectuer une ou plusieurs communications de données. Chaque communication doit passer par deux processus : établir des contacts de communication et détruire des contacts de communication ! Cela a établi une relation d'envoi et de réception de données~ Les appareils de cette couche comprennent : Carte réseau, pont réseau, commutateur réseau De plus, l'unité de cette couche est : Cadre
  • Couche réseau. (Réseau) : La fonction principale est de traduire l'adresse réseau en adresse physique correspondante et de décider comment envoyer les données depuis L'expéditeur effectue un itinéraire vers le destinataire, ce que l'on appelle le routage et la recherche de chemin : un terminal peut avoir besoin de communiquer avec plusieurs terminaux, ce qui entraîne Le problème de relier les données de deux terminaux quelconques ! Pour faire simple : établissez une connexion réseau et fournissez des services à la couche supérieure ! Les appareils de cette couche incluent : routage ! L'unité de cette couche est : paquet de données, et le protocole IP est dans cette couche !
  • Couche de transport (Transport)  : Fournit des services de communication à la couche d'application supérieure, face à la couche la plus élevée de la partie communication, et également Le niveau le plus bas parmi les fonctions utilisateur. Reçoit les données de la couche session, divise les données si nécessaire et transmet ces données au réseau couche, et assurez-vous que ces segments de données atteignent effectivement l’extrémité opposée ! L'unité de cette couche est donc : segment de données et il y en a deux très importantes dans cette couche ; Les protocoles sont : TCP Transmission Control Protocol et UDP User Datagram Protocol, qui constituent également la partie centrale de ce chapitre !
  • Couche session (Session)  : Responsable de l'établissement, du maintien et de la terminaison de la communication entre deux nœuds du réseau. Établir des liens de communication, Maintenir le lien de communication ouvert pendant la session, synchroniser le dialogue entre les deux nœuds, décider si la communication est interrompue et quand la communication est interrompue Décidez d'où renvoyer, c'est-à-dire l'établissement et la gestion des sessions entre utilisateurs sur différentes machines !
  • Présentation  : Interpréter les commandes et les données de la couche application, et attribuer la syntaxe correspondante aux différentes syntaxes signification et transmis à la couche session dans un certain format.Sa fonction principale est de « gérer les problèmes de représentation des informations utilisateur, tels que l'encodage, Conversion de format de données, cryptage et déchiffrement, compression et décompression, etc.
  • Couche application (Application)  : La couche la plus élevée du modèle de référence OSI, qui fournit des services réseau pour les applications utilisateur. Basé sur le travail de 6 autres couches, il est chargé de compléter la connexion entre les applications et les systèmes d'exploitation réseau dans le réseau, d'établir et de mettre fin aux connexions entre les utilisateurs et de compléter divers services et applications réseau requis par les utilisateurs du réseau. gestion et entretien. De plus, cette couche est également chargée de coordonner le travail entre les différentes applications. Les services et protocoles fournis par la couche application aux utilisateurs comprennent : les services de fichiers, les services d'annuaire, les services de transfert de fichiers (FTP), les services de connexion à distance (Telnet), les services de messagerie (E-mail), les services d'impression, les services de sécurité, les services de gestion de réseau. , Services de base de données, etc.

D'accord, ci-dessus, nous avons brièvement décrit le modèle de réseau à sept couches OSI. Voici un résumé :

OSI est un modèle de réseau général idéal. seulement Plusieurs couches sont impliquées. Dans le modèle à sept couches, chaque couche fournit une fonction spéciale. Fonctions réseau, vues du point de vue des fonctions réseau :

  • Les quatre couches suivantes (couche physique, couche liaison de données, couche réseau et couche transport) assurent principalement des fonctions de transmission et d'échange de données. Autrement dit, il s'agit principalement de communication entre les nœuds.
  • La couche 4 sert de pont entre les parties supérieure et inférieure et constitue la partie la plus critique de toute l'architecture du réseau
  • La couche supérieure 3 ; Les couches (couche session, couche présentation et couche application) assurent principalement des fonctions de traitement d'informations et de données entre les utilisateurs et les applications.

En bref, les 4 couches inférieures remplissent principalement les fonctions du sous-réseau de communication, et les 3 couches supérieures remplissent principalement les fonctions du sous-réseau de ressources.

——Le contenu ci-dessus est référencé à partir de : Explication détaillée du modèle OSI à sept couches


2.Modèle TCP/IP à quatre couches

1.jpg

TCP/IP est synonyme d'un groupe de protocoles. Il comprend également de nombreux protocoles qui forment le cluster de protocoles TCP/IP. Le cluster de protocoles TCP/IP est divisé en quatre couches. IP est situé au niveau de la deuxième couche du cluster de protocoles (correspondant à la troisième couche d'OSI) et TCP est situé au niveau de la troisième couche du cluster de protocoles. (Correspondant à la quatrième couche d'OSI). Le protocole de communication TCP/IP adopte une structure hiérarchique à 4 couches. Chaque couche appelle la couche suivante pour fournir. réseau pour répondre à vos besoins. Ces 4 couches sont :

  • Couche d'application : La couche de communication entre les applications, telles que Simple Email Transfer (SMTP), File Transfer Protocol (FTP), Protocole d'accès réseau à distance (Telnet), etc.
  • Couche de transport  : Dans cette couche, elle fournit des services de transfert de données entre les nœuds, tels que le Transmission Control Protocol (TCP), Protocole de datagramme utilisateur (UDP), etc., TCP et UDP ajoutent des données de transmission au paquet de données et les transmettent à la couche suivante, Cette couche est chargée de transmettre les données et de garantir que les données ont été livrées et reçues.
  • Couche d'interconnexion réseau : Responsable de fournir des fonctions de transmission de paquets de données de base afin que chaque paquet de données puisse atteindre sa destination. hôte (mais ne vérifie pas s'il a été reçu correctement), tel que le protocole Internet (IP).
  • Hôte vers couche réseau : Gestion des supports réseau réels, définissant comment utiliser le réseau réel (comme Ethernet, ligne série, etc.) pour transmettre des données.

3.Explication de la différence entre TCP/UDP

D'accord, les deux premiers points sont juste pour que tout le monde vulgarise le modèle OSI à sept couches et TCP/UDP. Le concept de modèle IP à quatre couches, dont je veux parler ensuite. Voici quelques termes conceptuels liés à notre développement Socket !

1) Adresse IP

2.png

2) Port

1. est utilisé pour distinguer Application différente

2. La plage des numéros de port est de 0 à 65535, dont 0 à 1023 ne sont pas des ports réservés au système. Nos programmes devraient essayer de ne pas utiliser ces ports !

3. L'adresse IP et le numéro de port constituent notre Socket. Le Socket est le point final du lien de communication bidirectionnel entre les programmes exécutés sur le réseau. C'est la base de TCP et UDP !

4.Ports utilisés par les protocoles courants : HTTP:80, FTP:21, TELNET:23

3.png

3 ) Comparaison du protocole TCP et du protocole UDP :

Explication détaillée du processus du protocole TCP:

Tout d'abord, TCP/IP est une suite de protocoles, qui comprend de nombreux protocoles. UDP n'est que l'un d'entre eux. La raison pour laquelle il est nommé protocole TCP/IP est Les protocoles TCP et IP étant deux protocoles très importants, ils portent leur nom.

Expliquons la différence entre le protocole TCP et le protocole UDP :

TCP (Transmission Control Protocol, Transmission Control Protocol) est un protocole orienté connexion, c'est-à-dire lorsque envoyer et recevoir de l'argent de données , les deux doivent établir un lien fiable avec l'autre partie. C'est aussi la poignée de main à trois voies du TCP et la onde à quatre voies du TCP qui sont souvent posées lors des entretiens ! Trois poignées de main : Lors de l'établissement d'une connexion TCP, le client et le serveur doivent envoyer un total de 3 paquets pour confirmer l'établissement de la connexion. Dans la programmation Socket, ce processus est déclenché par le client exécutant connect. L'organigramme spécifique est le suivant :

4.png

  • Première poignée de main : Le client définit l'indicateur SYN sur 1, génère aléatoirement une valeur seq=J et envoie le paquet de données au serveur. Le Client entre dans l'état SYN_SENT et attend la confirmation du Serveur.
  • Deuxième prise de contact : Après avoir reçu le paquet de données, le serveur sait que le client a demandé d'établir une connexion via le bit indicateur SYN=1, et le serveur définit le bit indicateur SYN et ACK sont tous deux définis sur 1, ack=J+1, une valeur seq=K est générée de manière aléatoire et le paquet de données est envoyé au client pour confirmer la demande de connexion. , le serveur entre dans l'état SYN_RCVD.
  • Troisième poignée de main : Une fois que le Client a reçu la confirmation, il vérifie si l'accusé de réception est J+1 et si l'ACK est 1. S'il est correct, il définira le drapeau ACK Définissez sur 1, ack=K+1 et envoyez le paquet de données au serveur. Le serveur vérifie si l'ack est K+1 et si l'ACK est 1. S'il est correct, La connexion est établie avec succès, le client et le serveur entrent dans l'état ESTABLISHED, terminent la négociation à trois, puis le client et le serveur peuvent Le transfert de données commence.

Agitez quatre fois : La fin d'une connexion TCP signifie que lorsqu'une connexion TCP est déconnectée, le client et le serveur doivent envoyer un total de 4 paquets pour confirmer la déconnexion. Dans la programmation Socket, ce processus est déclenché par le client ou le serveur exécutant close. L'organigramme spécifique est le suivant :

5.png

  • Première fois Wave.  : Le client envoie un FIN pour clôturer le transfert de données du client au serveur, et le client entre Statut FIN_WAIT_1
  • Agitant pour la deuxième fois : Après avoir reçu le FIN, le serveur envoie un ACK au client, et le numéro de séquence de confirmation est le numéro de séquence reçu + 1 (identique à SYN , Un FIN occupe un numéro de séquence) et le serveur entre dans l'état CLOSE_WAIT.
  • La troisième vague : le serveur envoie un FIN pour clôturer la transmission des données du serveur au client, et le serveur entre LAST_ACK État.
  • La quatrième vague : Après que le Client ait reçu le FIN, le Client entre dans l'état TIME_WAIT, puis envoie un ACK au Serveur, confirmant que le numéro de séquence est le numéro de séquence reçu + 1 , et le serveur entre dans l'état FERMÉ, effectuez quatre vagues. De plus, il peut également arriver qu'un collègue initie une clôture active :

6.png

Une autre question courante peut être : Pourquoi faut-il une poignée de main à trois pour établir une connexion, mais pas une poignée de main à trois pour fermer une connexion. S'agit-il de quatre vagues ? Réponse : Étant donné que le serveur est dans l'état LISTEN et qu'après avoir reçu le message SYN pour établir une demande de connexion, il met ACK et SYN dans un seul message. Envoyé au client. Lors de la fermeture de la connexion, lors de la réception du message FIN de l'autre partie, cela signifie seulement que l'autre partie n'envoie plus de données mais continue Il peut recevoir des données, mais toutes les données ne peuvent pas être envoyées à l'autre partie, vous pouvez donc le fermer immédiatement ou en envoyer. Après avoir envoyé les données à l'autre partie, envoyez un message FIN à l'autre partie pour exprimer son accord pour fermer la connexion maintenant. Par conséquent, ses propres ACK et FIN seront généralement. Envoyer séparément.


Explication détaillée du protocole UDP :

UDP(User Datagram Protocol) User Datagram Protocol, un protocole de non-connexion, la source et le terminal ne communiquent pas avant de transmettre des données. La connexion est établie et lorsqu'elle veut être transmise, elle récupère simplement les données de l'application et les diffuse sur le réseau le plus rapidement possible. Du côté de l'envoi, la vitesse à laquelle UDP transmet les données n'est limitée que par la vitesse à laquelle l'application génère les données, les capacités de l'ordinateur et la bande passante de transmission. Limitation : du côté de la réception, UDP place chaque segment de message dans la file d'attente et l'application lit un segment de message à la fois dans la file d'attente. Par rapport à TCP, il n'est pas nécessaire d'établir un lien, la structure est simple, l'exactitude ne peut pas être garantie et la perte de paquets est facile

- Le contenu ci-dessus est partiellement extrait de :

Poignée de main à trois voies TCP/IP et Wave quatre fois

La différence entre TCP et UDP (transfert)


4. Plusieurs classes clés fournies pour le réseau en Java :

Pour différents niveaux de communication réseau, Java nous propose quatre grandes catégories de fonctions réseau :

  • InetAddress : Utilisé pour identifier les ressources matérielles sur le réseau
  • URL : Localisateur de ressources uniforme, vous pouvez directement lire ou écrire des données sur le réseau via URL
  • Socket et ServerSocket : Classes liées aux sockets
  • Datagram qui utilisent le protocole TCP pour implémenter la communication réseau : Utilisez le protocole UDP pour enregistrer des données dans des datagrammes et communiquer via le réseau

Dans cette section, nous présentons uniquement les deux premières classes, Socket et Datagram, puis les expliquons dans les chapitres TCP et UDP !

~Exemple d'utilisation d'InetAddress :

Exemple de code :

public class InetAddressTest {
	public static void main(String[] args) throws Exception{
		//获取本机InetAddress的实例:
		InetAddress address = InetAddress.getLocalHost();
		System.out.println("本机名:" + address.getHostName());
		System.out.println("IP地址:" + address.getHostAddress());
		byte[] bytes = address.getAddress();
		System.out.println("字节数组形式的IP地址:" + Arrays.toString(bytes));
		System.out.println("直接输出InetAddress对象:" + address);
	}
}

Graphique des résultats d'exécution :

7.png

~URL : Cela va sans dire, si vous oubliez, vous pouvez lire l'explication du protocole HTTP lors de la réunion précédente~


Résumé de cette section :

Cette section est pleine de concepts Cela peut paraître accablant, mais ce n'est pas grave si vous ne le comprenez pas. La couche du modèle à sept couches est appelée Quoi, à quoi sert-il probablement ? Il y a des poignées de main TCP à trois et quatre vagues, et c'est tout ! Bien sûr, c'est juste pour Gérer les entretiens ~ Comment pouvons-nous lutter avec cela dans le développement réel... Juste Socket, n'est-ce pas ~ Eh bien, nous commencerons à apprendre dans la section suivante Communication Socket dans Android~Merci~