Maison Opération et maintenance Sécurité Comment analyser le protocole UDP

Comment analyser le protocole UDP

May 12, 2023 pm 02:49 PM
udp

一、套接字(socket)

    套接字socket: ip地址 + port端口号。在TCP/IP协议中,它唯一标识网络通讯中的一个进程。套接字用来描述网络连接的 一对一关系。

    TCP/IP协议规定,网络数据流应采用 大端字节序,即 (内存)低地址高字节(数据)。

二、UDP_SOCKET 相关

    UDP 协议  ----  用户数据报协议(面向非连接)   ---  SOCK_DGRAM 

    h表示host,n表示network,l表示32位长整数,s表示16位短整数。

    IPv4地址格式定义在netinet/in.h中,IPv4地址: sockaddr_in结构体,包括16位端口号和32位IP地址

struct sockaddr_in
 {
    uint8_t sin_len;
    sa_family_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr;
    char sin_zero[8];
};

三、UDP socket 实例:

//udp_server.c

#include <stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>


void usage(const char *proc)
{
	printf("%s:[ip][port]\n",proc);
}

int main(int argc,char *argv[])
{
	if(argc != 3)
	{
		usage(argv[0]);
		return 1;
	}
	char *_ip=argv[1];
	int _port=atoi(argv[2]);
	int sock=socket(AF_INET,SOCK_DGRAM,0);
	if(sock < 0)
	{
		perror("socket");
		exit(1);
	}

	struct sockaddr_in local;
	local.sin_family=AF_INET;
	local.sin_port=htons(_port);
	local.sin_addr.s_addr=inet_addr(_ip);
	if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0)
	{
		perror("bind");
		exit(2);
	}
	int done=0;
	char buf[1024];
	struct sockaddr_in client;
	socklen_t len=sizeof(client);
	while(!done)
	{
		ssize_t _size=recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&client,&len);
		if(_size > 0)
		{
			buf[_size]=&#39;\0&#39;;
			printf("[%s : %d]: %s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buf);
		}
		else if(_size == 0)
		{
			printf("client close...\n");
		}
		else
		{}
	}
	return 0;
}

//udp_client.c

#include <stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>


void usage(const char *proc)
{
	printf("%s:[ip][port]\n",proc);
}

int main(int argc,char *argv[])
{
	if(argc != 3)
	{
		usage(argv[0]);
		return 1;
	}
	char *_ip=argv[1];
	int _port=atoi(argv[2]);
	int sock=socket(AF_INET,SOCK_DGRAM,0);
	if(sock < 0)
	{
		perror("socket");
		exit(1);
	}

	struct sockaddr_in local;
	local.sin_family=AF_INET;
	local.sin_port=htons(_port);
	local.sin_addr.s_addr=inet_addr(_ip);
	if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0)
	{
		perror("bind");
		exit(2);
	}
	int done=0;
	char buf[1024];
	struct sockaddr_in client;
	socklen_t len=sizeof(client);
	while(!done)
	{
		ssize_t _size=recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&client,&len);
		if(_size > 0)
		{
			buf[_size]=&#39;\0&#39;;
			printf("[%s : %d]: %s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buf);
		}
		else if(_size == 0)
		{
			printf("client close...\n");
		}
		else
		{}
	}
	return 0;
}

运行结果:

Comment analyser le protocole UDP

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Guide de construction d'Agnes Tachyon | Un joli Musume Derby
2 Il y a quelques semaines By Jack chen
Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Péx: comment raviver les joueurs
4 Il y a quelques semaines By DDD
Guide de construction de Grass Wonder | Uma musume joli derby
1 Il y a quelques semaines By Jack chen
Pic comment émoter
3 Il y a quelques semaines By Jack chen

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter une communication asynchrone à l'aide des protocoles PHP et UDP Comment implémenter une communication asynchrone à l'aide des protocoles PHP et UDP Jul 30, 2023 pm 07:31 PM

Comment utiliser les protocoles PHP et UDP pour implémenter la communication asynchrone Dans les applications Internet modernes, la communication asynchrone est devenue une méthode très importante. En utilisant la communication asynchrone, les demandes des utilisateurs peuvent être traitées simultanément sans bloquer le thread principal, améliorant ainsi les performances du système et la vitesse de réponse. En tant que langage de programmation back-end populaire, PHP, comment utiliser le protocole UDP pour réaliser une communication asynchrone ? Cet article expliquera comment utiliser le protocole UDP en PHP pour implémenter une communication asynchrone simple et joindra des exemples de code spécifiques. 1. Introduction au protocole UDPU

Quels sont les numéros de port UDP ? Quels sont les numéros de port UDP ? Feb 23, 2023 pm 02:00 PM

Les numéros de port UDP courants sont 53, 69, 161, 2049, 68 et 520. UDP utilise des numéros de port pour réserver ses propres canaux de transmission de données pour différentes applications : 1. Network File System (NFS), le numéro de port est 2049 ; 2. Simple Network Management Protocol (SNMP), le numéro de port est 161 ; System (DNS), le numéro de port est 53 ; 4. Simple File Transfer System (TFTP), le numéro de port est 69 ; 5. Dynamic Host Configuration Protocol (DHCP), le numéro de port est 68. le numéro de port est 520, etc.

Comment la programmation réseau Java utilise-t-elle UDP pour la communication sans connexion ? Comment la programmation réseau Java utilise-t-elle UDP pour la communication sans connexion ? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) est un protocole réseau léger sans connexion couramment utilisé dans les applications sensibles au temps. Il permet aux applications d'envoyer et de recevoir des données sans établir de connexion TCP. Un exemple de code Java peut être utilisé pour créer un serveur et un client UDP, le serveur écoutant les datagrammes entrants et répondant, et le client envoyant des messages et recevant des réponses. Ce code peut être utilisé pour créer des exemples concrets tels que des applications de chat ou des systèmes de collecte de données.

Quels services de transport l'UDP propose-t-il ? Quels services de transport l'UDP propose-t-il ? Feb 27, 2023 am 10:20 AM

UDP fournit des services de transport « sans connexion ». Le nom chinois d'UDP est User Datagram Protocol. Il s'agit d'un protocole de couche de transport sans connexion dans le modèle de référence OSI. Il fournit des services de transmission d'informations simples et peu fiables orientés transaction ; UDP permet aux applications d'envoyer des données encapsulées sans établir de connexion. Méthode par paquet IP.

Que signifie le protocole UDP ? Que signifie le protocole UDP ? Aug 08, 2023 pm 03:43 PM

UDP est un protocole de couche de transport sans connexion qui fournit un moyen d'envoyer des paquets de données au réseau, mais ne garantit pas la fiabilité, la séquence et l'intégrité des paquets de données, ni ne fournit un contrôle de congestion et de contrôle de flux, etc. Caractéristiques d'UDP : 1. Pas de connexion, pas besoin d'établir une connexion avant d'envoyer des données, les paquets de données peuvent être envoyés directement à l'hôte cible ; 2. Efficacité, la surcharge d'en-tête est faible, seulement 8 octets ; ne garantit pas la fiabilité des paquets de données. Une fois le paquet de données envoyé, il ne sera pas renvoyé même s'il est perdu, et ne garantit pas non plus l'ordre des paquets de données, etc.

Comment analyser le protocole UDP Comment analyser le protocole UDP May 12, 2023 pm 02:49 PM

1. Socket : socket : adresse IP + numéro de port. Dans le protocole TCP/IP, il identifie de manière unique un processus de communication réseau. Les sockets sont utilisés pour décrire une relation un-à-un entre les connexions réseau. Le protocole TCP/IP stipule que le flux de données réseau doit utiliser l'ordre des octets big-endian, c'est-à-dire l'octet haut (données) d'adresse basse (mémoire). 2. Protocole UDP lié à UDP_SOCKET ---- Protocole de datagramme utilisateur (non orienté connexion) --- SOCK_DGRAMh représente l'hôte, n représente le réseau, l représente un entier long de 32 bits et s représente un entier court de 16 bits. Le format de l'adresse IPv4 est défini dans netinet/in.h, adresse IPv4 : sockadd

Comment implémenter la programmation UDP pour la communication réseau basée sur le protocole UDP en Java Comment implémenter la programmation UDP pour la communication réseau basée sur le protocole UDP en Java May 17, 2023 pm 01:13 PM

Introduction de base aux classes de communication de programmation UDP DatagramSocket et DatagramPacket [paquet de données/datagramme] implémentent des programmes réseau basés sur le protocole UDP. Les datagrammes UDP sont envoyés et reçus via le socket de datagramme DatagramSocket. Le système ne garantit pas que le datagramme UDP sera livré en toute sécurité à la destination, ni quand il arrivera. L'objet DatagramPacket encapsule un datagramme UDP, qui contient l'adresse IP et le numéro de port de l'expéditeur ainsi que l'adresse IP et le numéro de port du destinataire. Chaque datagramme du protocole UDP fournit des informations d'adresse complètes, il n'est donc pas nécessaire d'établir une connexion entre l'expéditeur et le destinataire. Les deux classes/objets au cœur du processus de base Da

Explication détaillée de la raison pour laquelle DNS utilise UDP au lieu de TCP ! Explication détaillée de la raison pour laquelle DNS utilise UDP au lieu de TCP ! Mar 01, 2024 pm 08:16 PM

La principale raison pour laquelle DNS (DomainNameSystem) utilise UDP (UserDatagramProtocol) au lieu de TCP (TransmissionControlProtocol) est pour des raisons de performances et d'efficacité. Ce qui suit explique en détail pourquoi DNS choisit d'utiliser le protocole UDP : Petites requêtes et réponses rapides : les requêtes DNS sont généralement de petites requêtes, ne nécessitant que quelques octets de transmission de données. UDP est un protocole sans connexion qui ne nécessite pas d'établir une connexion avant de communiquer, mais envoie des paquets à l'adresse de destination et attend une réponse. Cela rend UDP plus adapté aux scénarios de réponse rapide que TCP. Faible latence : les requêtes DNS nécessitent généralement une faible latence pour fournir des services de résolution rapide de noms de domaine.

See all articles