Heim Betrieb und Instandhaltung Sicherheit So analysieren Sie das UDP-Protokoll

So analysieren Sie das UDP-Protokoll

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];
};
Nach dem Login kopieren

三、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;
}
Nach dem Login kopieren
Nach dem Login kopieren

//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;
}
Nach dem Login kopieren
Nach dem Login kopieren

运行结果:

So analysieren Sie das UDP-Protokoll

Das obige ist der detaillierte Inhalt vonSo analysieren Sie das UDP-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie asynchrone Kommunikation mithilfe der PHP- und UDP-Protokolle So implementieren Sie asynchrone Kommunikation mithilfe der PHP- und UDP-Protokolle Jul 30, 2023 pm 07:31 PM

Verwendung der PHP- und UDP-Protokolle zur Implementierung asynchroner Kommunikation In modernen Internetanwendungen ist die asynchrone Kommunikation zu einer sehr wichtigen Methode geworden. Durch die Verwendung asynchroner Kommunikation können Benutzeranfragen gleichzeitig verarbeitet werden, ohne den Hauptthread zu blockieren, wodurch die Systemleistung und Reaktionsgeschwindigkeit verbessert werden. Wie kann PHP als beliebte Back-End-Programmiersprache das UDP-Protokoll verwenden, um eine asynchrone Kommunikation zu erreichen? In diesem Artikel wird die Verwendung des UDP-Protokolls in PHP zur Implementierung einer einfachen asynchronen Kommunikation vorgestellt und spezifische Codebeispiele angehängt. 1. Einführung in das UDP-ProtokollU

Wie lauten die UDP-Portnummern? Wie lauten die UDP-Portnummern? Feb 23, 2023 pm 02:00 PM

Gängige UDP-Portnummern sind 53, 69, 161, 2049, 68 und 520. UDP verwendet Portnummern, um eigene Datenübertragungskanäle für verschiedene Anwendungen zu reservieren: 1. Network File System (NFS), die Portnummer ist 2049; 2. Simple Network Management Protocol (SNMP), die Portnummer ist 161; System (DNS), die Portnummer ist 53; 4. Simple File Transfer System (TFTP), die Portnummer ist 69; 5. Dynamic Host Configuration Protocol (DHCP), die Portnummer ist 68; Portnummer ist 520 usw.

Wie nutzt die Java-Netzwerkprogrammierung UDP für die verbindungslose Kommunikation? Wie nutzt die Java-Netzwerkprogrammierung UDP für die verbindungslose Kommunikation? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) ist ein leichtes, verbindungsloses Netzwerkprotokoll, das häufig in zeitkritischen Anwendungen verwendet wird. Es ermöglicht Anwendungen, Daten zu senden und zu empfangen, ohne eine TCP-Verbindung herzustellen. Beispiel-Java-Code kann zum Erstellen eines UDP-Servers und -Clients verwendet werden, wobei der Server auf eingehende Datagramme wartet und antwortet und der Client Nachrichten sendet und Antworten empfängt. Mit diesem Code können reale Beispiele wie Chat-Anwendungen oder Datenerfassungssysteme erstellt werden.

So analysieren Sie das UDP-Protokoll So analysieren Sie das UDP-Protokoll May 12, 2023 pm 02:49 PM

1. Socket: Socket: IP-Adresse + Portnummer. Im TCP/IP-Protokoll identifiziert es einen Prozess in der Netzwerkkommunikation eindeutig. Sockets werden verwendet, um eine Eins-zu-Eins-Beziehung zwischen Netzwerkverbindungen zu beschreiben. Das TCP/IP-Protokoll legt fest, dass der Netzwerkdatenfluss die Big-Endian-Bytereihenfolge verwenden sollte, d. h. (Speicher) niedrige Adresse, hohes Byte (Daten). 2. UDP_SOCKET-bezogenes UDP-Protokoll ---- User Datagram Protocol (nicht verbindungsorientiert) --- SOCK_DGRAMh repräsentiert den Host, n repräsentiert das Netzwerk, l repräsentiert eine 32-Bit-lange Ganzzahl und s repräsentiert eine 16-Bit-kurze Ganzzahl. Das IPv4-Adressformat ist in netinet/in.h, IPv4-Adresse: sockadd, definiert

Welche Transportdienstleistungen bietet udp an? Welche Transportdienstleistungen bietet udp an? Feb 27, 2023 am 10:20 AM

UDP bietet „verbindungslose“ Transportdienste. Der chinesische Name von UDP ist User Datagram Protocol. Es ist ein verbindungsloses Transportschichtprotokoll im OSI-Referenzmodell. Es bietet einfache und unzuverlässige transaktionsorientierte Informationsübertragungsdienste und bietet Anwendungen die Möglichkeit, gekapselte Daten zu senden. IP-Paketmethode.

Was bedeutet UDP-Protokoll? Was bedeutet UDP-Protokoll? Aug 08, 2023 pm 03:43 PM

UDP ist ein verbindungsloses Transportschichtprotokoll, das eine Möglichkeit zum Senden von Datenpaketen an das Netzwerk bietet, jedoch weder die Zuverlässigkeit, Reihenfolge und Integrität von Datenpaketen garantiert noch eine Überlastungskontrolle, Flusskontrolle usw. bietet. Funktion. Eigenschaften von UDP: 1. Keine Konnektivität, keine Notwendigkeit, vor dem Senden von Daten eine Verbindung herzustellen, Datenpakete können direkt an den Zielhost gesendet werden. 2. Hohe Effizienz, der Header-Overhead ist gering, nur 8 Bytes. 3. Unzuverlässigkeit Bietet weder die Zuverlässigkeit von Datenpaketen, noch wird es erneut gesendet, selbst wenn es verloren geht, und es wird auch nicht die Reihenfolge der Datenpakete usw. garantiert.

So implementieren Sie die UDP-Programmierung für die Netzwerkkommunikation basierend auf dem UDP-Protokoll in Java So implementieren Sie die UDP-Programmierung für die Netzwerkkommunikation basierend auf dem UDP-Protokoll in Java May 17, 2023 pm 01:13 PM

Grundlegende Einführung in die UDP-Programmierung. Die Kommunikationsklassen DatagramSocket und DatagramPacket [Datenpaket/Datagramm] implementieren Netzwerkprogramme basierend auf dem UDP-Protokoll. UDP-Datagramme werden über den Datagram-Socket DatagramSocket gesendet und empfangen. Das System garantiert nicht, dass das UDP-Datagramm sicher an das Ziel übermittelt wird, und ist auch nicht sicher, wann es ankommt. Das DatagramPacket-Objekt kapselt ein UDP-Datagramm, das die IP-Adresse und Portnummer des Absenders sowie die IP-Adresse und Portnummer des Empfängers enthält. Jedes Datagramm im UDP-Protokoll enthält vollständige Adressinformationen, sodass keine Verbindung zwischen Sender und Empfänger hergestellt werden muss. Die beiden Klassen/Objekte im Kern des Basisprozesses Da

Ausführliche Erklärung, warum DNS UDP statt TCP verwendet! Ausführliche Erklärung, warum DNS UDP statt TCP verwendet! Mar 01, 2024 pm 08:16 PM

Der Hauptgrund, warum DNS (DomainNameSystem) UDP (UserDatagramProtocol) anstelle von TCP (TransmissionControlProtocol) verwendet, sind Leistungs- und Effizienzüberlegungen. Im Folgenden wird ausführlich erläutert, warum sich DNS für die Verwendung des UDP-Protokolls entscheidet: Kleine Anfragen und schnelle Antworten: Bei DNS-Anfragen handelt es sich in der Regel um kleine Anfragen, die nur wenige Bytes an Datenübertragung erfordern. UDP ist ein verbindungsloses Protokoll, das vor der Kommunikation keinen Verbindungsaufbau erfordert, sondern Pakete an die Zieladresse sendet und auf eine Antwort wartet. Dadurch eignet sich UDP besser für schnelle Antwortszenarien als TCP. Geringe Latenz: DNS-Abfragen erfordern im Allgemeinen eine geringe Latenz, um schnelle Dienste zur Domänennamenauflösung bereitzustellen.

See all articles