Home Operation and Maintenance Safety How to analyze UDP protocol

How to analyze UDP protocol

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];
};
Copy after login

三、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;
}
Copy after login
Copy after login

//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;
}
Copy after login
Copy after login

运行结果:

How to analyze UDP protocol

The above is the detailed content of How to analyze UDP protocol. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement asynchronous communication using PHP and UDP protocols How to implement asynchronous communication using PHP and UDP protocols Jul 30, 2023 pm 07:31 PM

How to use PHP and UDP protocols to implement asynchronous communication In modern Internet applications, asynchronous communication has become a very important method. By using asynchronous communication, user requests can be processed concurrently without blocking the main thread, improving system performance and response speed. As a popular back-end programming language, PHP how to use UDP protocol to achieve asynchronous communication? This article will introduce how to use the UDP protocol in PHP to implement simple asynchronous communication, and attach specific code examples. 1. Introduction to UDP protocolU

What are the UDP port numbers? What are the UDP port numbers? Feb 23, 2023 pm 02:00 PM

Common UDP port numbers are 53, 69, 161, 2049, 68, and 520. UDP uses port numbers to reserve their own data transmission channels for different applications: 1. Network File System (NFS), the port number is 2049; 2. Simple Network Management Protocol (SNMP), the port number is 161; 3. Domain Name System (DNS) , the port number is 53; 4. Simple File Transfer System (TFTP), the port number is 69; 5. Dynamic Host Configuration Protocol (DHCP), the port number is 68; 6. Routing Information Protocol, the port number is 520, etc.

How does Java network programming use UDP for connectionless communication? How does Java network programming use UDP for connectionless communication? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) is a lightweight connectionless network protocol commonly used in time-sensitive applications. It allows applications to send and receive data without establishing a TCP connection. Sample Java code can be used to create a UDP server and client, with the server listening for incoming datagrams and responding, and the client sending messages and receiving responses. This code can be used to build real-world use cases such as chat applications or data collection systems.

How to analyze UDP protocol How to analyze UDP protocol May 12, 2023 pm 02:49 PM

1. Socket: socket: ip address + port number. In the TCP/IP protocol, it uniquely identifies a process in network communication. Sockets are used to describe a one-to-one relationship between network connections. The TCP/IP protocol stipulates that network data flow should use big-endian byte order, that is, (memory) low address high byte (data). 2. UDP_SOCKET related UDP protocol----User Datagram Protocol (non-connection oriented)---SOCK_DGRAMh represents host, n represents network, l represents 32-bit long integer, and s represents 16-bit short integer. The IPv4 address format is defined in netinet/in.h, IPv4 address: sockadd

What transport services does udp provide? What transport services does udp provide? Feb 27, 2023 am 10:20 AM

UDP provides "connectionless" transport services. The Chinese name of UDP is User Datagram Protocol. It is a connectionless transport layer protocol in the OSI reference model. It provides simple and unreliable transaction-oriented information transmission services; UDP provides applications with a way to send encapsulated data without establishing a connection. IP packet method.

How to implement UDP programming for network communication based on UDP protocol in Java How to implement UDP programming for network communication based on UDP protocol in Java May 17, 2023 pm 01:13 PM

Basic introduction to UDP programming communication classes DatagramSocket and DatagramPacket [data packet/datagram] implement network programs based on the UDP protocol. UDP datagrams are sent and received through the datagram socket DatagramSocket. The system does not guarantee that the UDP datagram will be safely delivered to the destination, nor is it sure when it will arrive. The DatagramPacket object encapsulates a UDP datagram, which contains the IP address and port number of the sender and the IP address and port number of the receiver. Each datagram in the UDP protocol gives complete address information, so there is no need to establish a connection between the sender and the receiver. The two classes/objects at the core of the basic process Da

What does UDP protocol mean? What does UDP protocol mean? Aug 08, 2023 pm 03:43 PM

UDP is a connectionless transport layer protocol that provides a way to send data packets to the network, but does not guarantee the reliability, sequence and integrity of data packets, nor does it provide congestion control and flow control, etc. Function. Characteristics of UDP: 1. No connectivity, no need to establish a connection before sending data, data packets can be sent directly to the target host; 2. High efficiency, the header overhead is small, only 8 bytes; 3. Unreliability, It does not provide the reliability of data packets. After the data packet is sent, it will not be resent even if it is lost, nor does it guarantee the order of the data packets, etc.

Detailed explanation of why DNS uses UDP instead of TCP! Detailed explanation of why DNS uses UDP instead of TCP! Mar 01, 2024 pm 08:16 PM

The main reason why DNS (DomainNameSystem) uses UDP (UserDatagramProtocol) instead of TCP (TransmissionControlProtocol) is for performance and efficiency considerations. The following explains in detail why DNS chooses to use the UDP protocol: Small requests and fast responses: DNS queries are usually small requests, requiring only a few bytes of data transfer. UDP is a connectionless protocol that does not require establishing a connection before communicating, but instead sends packets to the destination address and waits for a response. This makes UDP more suitable for fast response scenarios than TCP. Low latency: DNS queries generally require low latency to provide fast domain name resolution services.

See all articles