La position actuelle:Accueil du site>Reconnaître le Protocole de couche de transport - TCP / UDP
Reconnaître le Protocole de couche de transport - TCP / UDP
2022-07-24 02:11:36【Teneur en or du petit blanc】
Table des matières
Deux protocoles importants dans la couche transport
UDP:Protocole de message utilisateur
TCP:Protocole de contrôle de la transmission
class DatagramSocket ( Socket de message ) : PourUDPCommunications
class DatagramPakcet(Paquet de messages): Résumé des données dans le processus de communication
3. Méthode généralement utilisée comme serveur
4. Méthode généralement utilisée comme récepteur
1.Demande(Request)-Réponse(Response)Mode
2.Abonnements(subsrcipt) - Diffusion(broadcase)Mode
En tant que serveur, Nous allons créer notre propre SocketObjet
4.Socket Accès aux communications
À propos de l'utilisation des flux d'entrée et de sortie
La différence entre un message de données orienté et un flux d'octets orienté
Deux protocoles importants dans la couche transport
Tout d'abord, Soyez clair., Ce qu'il faut dire maintenant UDP, Et tout de suite. TCP, Sont des types de protocoles qui fonctionnent au niveau du transport .
UDP:Protocole de message utilisateur
Protocole de couche de transport, Processus de mise en œuvre requis to Communication entre les processus.
UtiliserUDP Les deux extrémités du Protocole ne sont pas vraiment connectées , C'est juste la diffusion des données .
UDP Aucun traitement n'a été effectué , Pour maintenir l'état écologique original du réseau , Pas de protection du réseau ,Donc ce n'est pas fiable..
TCP:Protocole de contrôle de la transmission
Protocole de couche de transport, Processus de mise en œuvre requis to Communication entre les processus.
UtiliserTCP Le Protocole connecte le serveur au client .
TCP Il fera un certain contrôle de transmission , Rendre les communications fiables .
UDPAvecTCPComparer
Même chose.:
Ce sont tous des protocoles de couche transport, Processus de mise en œuvre requis to Communication entre les processus.
C'est différent.:
UDP:Pas fiable,Pas de connexion, Un protocole orienté message de données .
TCP:Fiable,Connecté, Un protocole pour le flux d'octets .
Informations quintuples
Les deux parties à la communicationIPAdresse + Les deux partiesport(Port)Adresse + Protocole de couche de transport = Informations quintuples.
Une seule ligne de communication sur le réseau peut être identifiée de façon unique par l'information quintuple
Socket(Socket)
Socket Le mot - clé est debout au niveau de l'application , Un concept très important pour la programmation en réseau .
En termes simples,Sous le niveau d'application, La communication est assurée par le matériel du système d'exploitation de l'ordinateur ,
Et la couche application veut utiliser les services réseau ,À utiliserOS Fenêtre de service réseau fournie Socket Pour profiter du service .
JavaUtilisé dansUDPAccord
class DatagramSocket ( Socket de message ) : PourUDPCommunications
Cette classe est SocketUne sous - classe d'une classe,CopierUDPCommunications,Il existe deux méthodes de construction,
Un paramètre avec port ,Pour le serveur
Une structure sans paramètres ,Pour les clients
1.UDPServeur
Nous utilisonsSocket Méthode de construction créer un objet pour la communication côté serveur
DatagramSocket socket = new DatagramSocket(PORT);
Utiliser un port fixe , Pour faciliter la communication entre les clients , Risque d'erreur , Par exemple, si vous voulez communiquer, découvrez que le port est occupé par un autre processus .
2.UDPClient
Toujours.SocketMéthode de construction, Mais pas besoin de passer , Nous n'envoyons les données au serveur qu'en tant que client , Et recevoir les données du serveur en retour .
DatagramSocket socket = new DatagramSocket();
3. Réception et transmission
Ce qui est envoyé est la classe de paquets de messages à venir
//Méthode de réception
socket.receive(receivedPacket);
//Méthode d'envoi
socket.send(sentPacket);
4.Fermer
Après utilisation,N'oublie pas de fermer.
socket.close();
class DatagramPakcet(Paquet de messages): Résumé des données dans le processus de communication
C'est l'équivalent de Socket Classe paquet à envoyer
Il contient des informations à cinq tuples Et Contenu des données
1.Bénéficiaire
Juste recevoir une lettre , Il n'en faut qu'un. byte Réception du paquet .
// 1. Réception des demandes
byte[] buf = new byte[1024]; // 1024 .Représente la taille maximale des données que nous recevons (Octets)
DatagramPacket receivedPacket = new DatagramPacket(buf, buf.length);
2.Expéditeur
L'expéditeur doit fournir le contenu actuel des données , De l'autre côté. IPEtport
DatagramPacket sentPacket = new DatagramPacket(
bytes, 0, bytes.length, // Données à envoyer
loopbackAddress, TranslateServer.PORT // De l'autre côté ip + port
);
3. Méthode généralement utilisée comme serveur
InetAddress address = receivedPacket.getAddress();
Log.println("De l'autre côté IP Adresse: " + address);
// Démonter le port opposé
int port = receivedPacket.getPort();
Log.println("De l'autre côté port: " + port);
// De l'autre côté. ip Adresse + port
SocketAddress socketAddress = receivedPacket.getSocketAddress();
Nous pouvons recevoir le nouveau port , ip Et les données.
Je l'ai.portEtip Pour renvoyer les données , Donc C'est la méthode habituelle pour les serveurs .
InetAddress address = receivedPacket.getAddress();
Log.println("De l'autre côté IP Adresse: " + address);
// Démonter le port opposé
int port = receivedPacket.getPort();
Log.println("De l'autre côté port: " + port);
Avec ça., On peut renvoyer les données
Obtenez d'abord des informations de l'autre côté
// De l'autre côté. ip Adresse + port
SocketAddress socketAddress = receivedPacket.getSocketAddress();
Et ensuitePacket Emballez - le et envoyez - le.
DatagramPacket sentPacket = new DatagramPacket(
sendBuf, 0, sendBuf.length, // Données à envoyer
socketAddress // Adresse de l'objet retiré de l'enveloppe de demande (ip + port)
);
4. Méthode généralement utilisée comme récepteur
Le destinataire a besoin de données ,Alors...getData Méthodes couramment utilisées
byte[] data = receivedPacket.getData();
Serveur et client
Les serveurs sont généralement du point de vue de la couche d'application , Servir les objectifs
Le client est l'extrémité du service
Mode commun
1.Demande(Request)-Réponse(Response)Mode
Une demande,Réponse unique
Ça veut dire...,Le client envoie la demande, Le serveur reçoit et répond , Le serveur est passif dans ce processus .
L'image ci - dessous montre une simple mise à jour de l'envoi ,Pas de client, Serveurs , Envoyer les données de l'expéditeur , Le récepteur reçoit et met à jour les données .
L'image ci - dessous est plus conforme à l'interaction entre le serveur et le client , Le client envoie d'abord les données au serveur , Après une série de traitement par le serveur, il est renvoyé au client .
Les données de communication sont toutes communiquées sous forme de données binaires ,C'est commebyte[]Mode de diffusion.
2.Abonnements(subsrcipt) - Diffusion(broadcase)Mode
Abonnement unique du client , Le serveur envoie régulièrement des messages proactifs au client .
Les serveurs ici sont relativement proactifs .
UDPRésumé
1. Situation de la programmation réseau
2.Comment utiliserip + port
3.socketUtilisation de
4.UDPCaractéristiques:Pas fiable,Pas de connexion, Message de données orienté ( Le contenu des données n'est pas déballé lorsqu'il est communiqué , Ce qui veut dire que je n'ouvrirai pas cette lettre , Il n'y a pas de changement de données , L'autre partie peut recevoir des données complètes , Bien sûr, si ça arrive. )
TCP
TCPC'est une sorte de,Connecté, Protocole orienté flux d'octets
1.Méthode de construction
En tant que serveur, Nous allons créer notre propre SocketObjet
UtiliserServerSocketObjet
ServerSocket serverSocket = new ServerSocket(PORT);
Pour se connecter au serveur en tant que client
UtiliserSocketObjet
// Création directe Socket,Utilisation du serveur IP + PORT
Log.println("Prêt à créer socket(TCP Connexion)");
Socket socket = new Socket("127.0.0.1", TranslateServerShortConnection.PORT);
2.accept
ServeurSocket L'objet est ce que le client récepteur obtient ,Vous n'avez pas besoin de créer vous - même
Écouter les ports clients , Une fois que le client est connecté , Renvoie un côté serveur SocketObjet, Et rester connecté à ce client jusqu'à ce qu'il soit fermé , D'autres clients ne peuvent bloquer l'attente que pendant ce processus .
Log.println(" Attendez qu'ils se connectent. ");
Socket socket = serverSocket.accept();
Log.println(" Un client est connecté. ");
Socket L'objet est l'équivalent d'une connexion établie :
3.close
Cette méthode peut être appelée par le client et le serveur pour arrêter la communication
socket.close();
4.Socket Accès aux communications
Lorsque le serveur obtientSocketQuand l'objet, Vous pouvez appeler la méthode pour déterminer l'information de l'autre .
// Informations sur l'autre partie :
InetAddress inetAddress = socket.getInetAddress(); // ip
Log.println("De l'autre côté ip: " + inetAddress);
int port = socket.getPort(); // port
Log.println("De l'autre côté port: " + port);
SocketAddress remoteSocketAddress = socket.getRemoteSocketAddress(); // ip + port
Log.println("De l'autre côté ip + port: " + remoteSocketAddress);
5.Flux d'entrée
Lorsque le récepteur reçoit un message , Il est reçu avec le flux d'entrée
InputStream inputStream = socket.getInputStream();
Scanner scanner = new Scanner(inputStream, "UTF-8");
6.Flux de sortie
Envoyer des données utiliser le flux de sortie
OutputStream os = socket.getOutputStream();
OutputStreamWriter osWriter = new OutputStreamWriter(os, "UTF-8");
PrintWriter writer = new PrintWriter(osWriter);
À propos de l'utilisation des flux d'entrée et de sortie
La différence entre un message de données orienté et un flux d'octets orienté
Mentions de copyright
Auteur de cet article [Teneur en or du petit blanc],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/205/202207240209553243.html
Recommandé par sidebar
- [Python flask note 5] Blueprint simple à utiliser
- Composants web - cycle de vie des éléments personnalisés
- Entrepôt de données 4.0 Notes - acquisition de données commerciales
- Entrepôt de données 4.0 Notes - acquisition de données sur le comportement de l'utilisateur II
- Affichage itératif des fichiers.h5, opérations de données h5py
- Résumé des connaissances mathématiques communes
- Comment se développe le serveur GPU refroidi à l'eau dans le Centre de données dans le cadre de l'informatique est - Ouest?
- Connaissance du matériel 1 - schéma et type d'interface (basé sur le tutoriel vidéo complet de l'exploitation du matériel de baiman)
- Examen des principes fondamentaux de la structure en acier
- Unity3d: ugui source, Rebuild Optimization
Devinez que vous aimez
Solution rapide: xshell ne peut pas glisser dans un dossier ou un paquet
Rhcsa - - parcourir le contenu du fichier, couper, uniq, trier, utiliser les commandes.tr
Intégrité du signal (si) intégrité de l'alimentation électrique (PI) notes d'apprentissage (32) Réseau de distribution d'énergie (4)
Quelle est la raison pour laquelle la plate - forme easygbs ne peut pas lire l'enregistrement vidéo et a un phénomène de streaming répété rtmp?
Notes du jour 7
【 Visual Dispatching Software】 Shanghai Dow Ning apporte netronic download, Trial, tutoriel pour l'Organisation SMB
2. Les règles quantitatives
Événements courants de la souris et du clavier
C #: in, out, ref Keywords
Connaissance détaillée du GRE, du mgre; Connaissance de la configuration de base de l'OSPF
Recommandé au hasard
- Comment creo 9.0 modifie - t - il rapidement le système de coordonnées Cao?
- Notes du jour 5
- Renforcement de l'apprentissage - points de compréhension du gradient stratégique
- Le shell a besoin de connaître les commandes
- Okrk3399 Development Board Reserved i2c4 Mounting EEPROM
- Optimisation du serveur Cloud Huawei avec connexion clé
- Chapitre 2 requête de base et tri
- 【 langage c】 devinez jeux numériques + applet d'arrêt
- Qu'est - ce que le codage par titre?
- Feignclient utilise un tutoriel détaillé (illustration)
- Kettle implémente une connexion de base de données partagée et insère une instance de composant de mise à jour
- Simulation de modulation et de démodulation du signal CBOC basée sur MATLAB, sortie de corrélation, spectre de puissance et suivi de décalage de fréquence
- Les raccourcis clavier liés à l'onglet ne peuvent pas être utilisés après la mise à jour du vscode
- Expression du suffixe (une question par jour pendant les vacances d'été 4)
- Idées de conception sur l'initialisation des paramètres d'entrée de page
- Éléments de base de la validation des haricots - 04
- Une solution complète au problème du sac à dos dans la programmation dynamique
- Récursion des bosses 1: formule récursive
- Explication détaillée de l'injection aveugle d'erreur SQL
- Données chronologiques dans l'Internet industriel des objets
- Une erreur s'est produite lors de la configuration du login du moteur Gom: aucun correctif requis n'a été trouvé!
- [215] Gin Framework connection to MySQL Database
- Explication détaillée du principe de co - intégration en go
- [jzoof] 13 plage de mouvement du robot
- PCL: ajustement multiligne (RANSAC)
- 1259. Programmation dynamique de poignée de main disjointe
- Conception de l'interface UART basée sur la FPGA
- Elk note 25 - expérience rapide APM
- Analyse de l'industrie | interphone logistique
- Principe de l'énergie et méthode variationnelle note 19: principe de l'énergie résiduelle minimale + principe du travail possible
- Atelier macoll - notes de développement de la secte de l'ours 2
- Comment présenter votre expérience de projet lors d'une entrevue
- Scala Programming (Junior)
- Synchro esp32c3 Hardware Configuration Information serial port Print Output
- Serveur de chat de Cluster: conception de la table de base de données
- Apprentissage Lambda (utilisation du comparateur après tri, regroupement après collecte avec collectors.groupingby)
- Comment forcer complètement le meurtre de processus indépendants de l'arrière - plan?
- Programmation JDBC pour MySQL
- Utilisation des fonctions fléchées es6
- Lu Xia action | Source Kai Digital: Existing Mode or open source innovation?