Rechercher une page de manuel
udp
Langue: ru
Version: 2 ÏËÔ 1998 (openSuse - 09/10/07)
Section: 7 (Divers)
îáú÷áîéå
udp - ÐÒÏÔÏËÏÌ UDP (User Datagram Protocol) ÐÏ×ÅÒÈ ÐÒÏÔÏËÏÌÁ IPv4.ïâúïò
#include <sys/socket.h>#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
ïðéóáîéå
üÔÏ ÒÅÁÌÉÚÁÃÉÑ User Datagram Protocol (ðÒÏÔÏËÏÌÁ ðÏÌØÚÏ×ÁÔÅÌØÓËÉÈ äÁÔÁÇÒÁÍÍ, UDP), ËÏÔÏÒÙÊ ÏÐÉÓÁÎ × RFC768. ïÎ ÏÂÅÓÐÅÞÉ×ÁÅÔ ÎÅÎÁÄÅÖÎÕÀ ÐÅÒÅÄÁÞÕ ÄÁÔÁÇÒÁÍÍ ÂÅÚ ÕÓÔÁÎÏ×ÌÅÎÉÑ ÓÏÅÄÉÎÅÎÉÑ. ðÒÉ ÐÅÒÅÓÙÌËÅ ÐÁËÅÔÙ ÍÏÇÕÔ ÄÕÂÌÉÒÏ×ÁÔØÓÑ, Á ÉÈ ÐÏÒÑÄÏË ÍÏÖÅÔ ÂÙÔØ ÎÁÒÕÛÅÎ. UDP ÇÅÎÅÒÉÒÕÅÔ É ÐÒÏ×ÅÒÑÅÔ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ, ÞÔÏÂÙ ÏÔÌÏ×ÉÔØ ÏÛÉÂËÉ ÐÅÒÅÄÁÞÉ.ðÒÉ ÓÏÚÄÁÎÉÉ UDP-ÓÏËÅÔÁ ÅÇÏ ÌÏËÁÌØÎÙÊ É ÕÄÁÌÅÎÎÙÊ ÁÄÒÅÓ ÎÅ ÕËÁÚÙ×ÁÀÔÓÑ. äÁÔÁÇÒÁÍÍÙ ÍÏÇÕÔ ÂÙÔØ ÐÏÓÌÁÎÙ ÎÅÍÅÄÌÅÎÎÏ Ó ÐÏÍÏÝØÀ sendto(2) ÉÌÉ sendmsg(2), Ó ÐÒÁ×ÉÌØÎÙÍ ÁÄÒÅÓÏÍ ÎÁÚÎÁÞÅÎÉÑ × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÁ. ëÏÇÄÁ ÄÌÑ ÓÏËÅÔÁ ×ÙÚÙ×ÁÅÔÓÑ connect(2), ÔÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÁÄÒÅÓ ÎÁÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ É Ó ÜÔÏÇÏ ÍÏÍÅÎÔÁ ÄÁÔÁÇÒÁÍÍÙ ÍÏÇÕÔ ÏÔÓÙÌÁÔØÓÑ Ó ÐÏÍÏÝØÀ send(2) ÉÌÉ write(2), ÂÅÚ ÕËÁÚÁÎÉÑ ÁÄÒÅÓÁ ÎÁÚÎÁÞÅÎÉÑ. ðÒÉ ÜÔÏÍ ×ÓÅ ÅÝÅ ÓÏÈÒÁÎÑÅÔÓÑ ×ÏÚÍÏÖÎÏÓÔØ ÐÏÓÌÁÔØ ÐÁËÅÔ ÄÒÕÇÏÍÕ ÁÄÒÅÓÁÔÕ, ÐÅÒÅÄÁ×ÁÑ ÅÇÏ ÁÄÒÅÓ ÐÒÏÃÅÄÕÒÁÍ sendto(2) ÉÌÉ sendmsg(2). äÌÑ ÐÏÌÕÞÅÎÉÑ ÐÁËÅÔÏ× ÓÏËÅÔ ÓÎÁÞÁÌÁ ÍÏÖÎÏ ÐÒÉ×ÑÚÁÔØ Ë ÌÏËÁÌØÎÏÍÕ ÁÄÒÅÓÕ Ó ÐÏÍÏÝØÀ bind(2). ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÓÏËÅÔÎÙÊ ÕÒÏ×ÅÎØ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÉÓ×ÏÉÔ Ó×ÏÂÏÄÎÙÊ ÌÏËÁÌØÎÙÊ ÐÏÒÔ ÉÚ ÄÉÁÐÁÚÏÎÁ, ÚÁÄÁÎÎÏÇÏ × net.ipv4.ip_local_port_range, É ÐÒÉ×ÑÖÅÔ ÓÏËÅÔ Ë INADDR_ANY.
÷ÓÅ ÏÐÅÒÁÃÉÉ ÐÒÉÅÍÁ ×ÏÚ×ÒÁÝÁÀÔ ÔÏÌØËÏ ÏÄÉÎ ÐÁËÅÔ. åÓÌÉ ÐÁËÅÔ ÍÅÎØÛÅ, ÞÅÍ ÒÁÚÍÅÒ ÂÕÆÅÒÁ ÐÒÉÅÍÁ, ÔÏ ÏÎ ×ÏÚ×ÒÁÝÁÅÔÓÑ ÃÅÌÉËÏÍ; ÅÓÌÉ ÐÁËÅÔ ÂÏÌØÛÅ, ÔÏ ÏÎ ÏÂÒÅÚÁÅÔÓÑ É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÆÌÁÇ MSG_TRUNC. MSG_WAITALL ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.
ïÐÃÉÉ IP ÍÏÇÕÔ ÂÙÔØ ÐÏÓÌÁÎÙ ÉÌÉ ÐÏÌÕÞÅÎÙ ÐÒÉ ÐÏÍÏÝÉ ÏÐÃÉÊ ÓÏËÅÔÁ, ÏÐÉÓÁÎÎÙÈ × ip(7). ïÎÉ ÏÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÑÄÒÏÍ, ÅÓÌÉ ×ËÌÀÞÅÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ sysctl-ÚÎÁÞÅÎÉÅ (ÎÏ ÄÁÖÅ ÅÓÌÉ ÏÎÏ ÏÔËÌÀÞÅÎÏ, ÏÐÃÉÉ ×ÓÅ ÒÁ×ÎÏ ÐÅÒÅÄÁÀÔÓÑ ÐÏÌØÚÏ×ÁÔÅÌÀ). óÍÏÔÒÉ ip(7).
åÓÌÉ ÐÒÉ ÏÔÓÙÌËÅ ÕÓÔÁÎÏ×ÌÅÎ ÆÌÁÇ MSG_DONTROUTE, ÔÏ ÁÄÒÅÓ ÎÁÚÎÁÞÅÎÉÑ ÄÏÌÖÅÎ ÕËÁÚÙ×ÁÔØ ÎÁ ÁÄÒÅÓ ÌÏËÁÌØÎÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, É ÐÁËÅÔÙ ÐÏÓÙÌÁÀÔÓÑ ÔÏÌØËÏ ÎÁ ÜÔÏÔ ÉÎÔÅÒÆÅÊÓ.
UDP ÆÒÁÇÍÅÎÔÉÒÕÅÔ ÐÁËÅÔ, ÅÓÌÉ ÅÇÏ ÏÂÝÉÊ ÒÁÚÍÅÒ ÐÒÅ×ÙÛÁÅÔ ÚÎÁÞÅÎÉÅ MTU (Maximum Transmission Unit) ÉÎÔÅÒÆÅÊÓÁ. âÏÌÅÅ ÄÒÕÖÅÌÀÂÎÏÊ ÄÌÑ ÓÅÔÉ ÁÌØÔÅÒÎÁÔÉ×ÏÊ Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÅÔÏÄÁ ÏÂÎÁÒÕÖÅÎÉÑ MTU ÍÁÒÛÒÕÔÁ, ËÏÔÏÒÙÊ ÏÐÉÓÁÎ × ÒÁÚÄÅÌÅ IP_PMTU_DISCOVER ÓÔÒÁÎÉÃÙ ÒÕËÏ×ÏÄÓÔ×Á ip(7).
æïòíáô áäòåóá
UDP ÉÓÐÏÌØÚÕÅÔ ÆÏÒÍÁÔ ÁÄÒÅÓÁ IPv4 sockaddr_in, ËÏÔÏÒÙÊ ÏÐÉÓÁÎ × ip(7).ïâòáâïôëá ïûéâïë
÷ÓÅ ÆÁÔÁÌØÎÙÅ ÏÛÉÂËÉ ÂÕÄÕÔ ÐÅÒÅÄÁ×ÁÔØÓÑ ÐÏÌØÚÏ×ÁÔÅÌÀ × ×ÉÄÅ ËÏÄÁ ÏÛÉÂËÉ, ËÏÔÏÒÙÊ ×ÏÚ×ÒÁÝÁÅÔÓÑ, ÄÁÖÅ ÅÓÌÉ ÓÏËÅÔ ÎÅ ÓÏÅÄÉÎÅÎ. üÔÏ ÏÔÎÏÓÉÔÓÑ ÔÁËÖÅ É Ë ÁÓÉÎÈÒÏÎÎÙÍ ÏÛÉÂËÁÍ, ÐÏÌÕÞÅÎÎÙÍ ÉÚ ÓÅÔÉ. ÷Ù ÍÏÖÅÔÅ ÐÏÌÕÞÉÔØ ÏÛÉÂËÕ, ÏÔÎÏÓÑÝÕÀÓÑ Ë ÂÏÌÅÅ ÒÁÎÎÅÍÕ ÐÁËÅÔÕ, ÐÏÓÌÁÎÎÏÍÕ ÎÁ ÔÏÍ ÖÅ ÓÏËÅÔÅ. ôÁËÏÅ ÐÏ×ÅÄÅÎÉÅ ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÐÏ×ÅÄÅÎÉÑ ÍÎÏÇÉÈ ÄÒÕÇÉÈ ÒÅÁÌÉÚÁÃÉÊ BSD-ÓÏËÅÔÏ×, ËÏÔÏÒÙÅ ÎÉËÏÇÄÁ ÎÅ ÐÅÒÅÄÁÀÔ ËÏÄÙ ÏÛÉÂÏË, ÅÓÌÉ ÎÁ ÓÏËÅÔÅ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ ÓÏÅÄÉÎÅÎÉÅ. ðÏ×ÅÄÅÎÉÅ Linux × ÜÔÏÍ ÓÌÕÞÁÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ RFC1122.äÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ÓÏ ÓÔÁÒÙÍ ËÏÄÏÍ ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÏÐÃÉÀ SOL_SOCKET SO_BSDCOMPAT, ÞÔÏÂÙ ÐÏÌÕÞÁÔØ ÕÄÁÌÅÎÎÙÅ ÏÛÉÂËÉ, ÔÏÌØËÏ ÅÓÌÉ ÓÏËÅÔ ÂÙÌ ÓÏÅÄÉÎÅÎ (ËÒÏÍÅ ÏÛÉÂÏË EPROTO É EMSGSIZE). ïÄÎÁËÏ ÌÕÞÛÅ ÉÓÐÒÁ×ÉÔØ ËÏÄ, ÞÔÏÂÙ ÏÎ ÐÒÁ×ÉÌØÎÏ ÏÂÒÁÂÁÔÙ×ÁÌ ÏÛÉÂËÉ, ÞÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÕ ÏÐÃÉÀ. ïÛÉÂËÉ, ×ÏÚÎÉËÛÉÅ ÌÏËÁÌØÎÏ, ÐÅÒÅÄÁÀÔÓÑ ×ÓÅÇÄÁ.
åÓÌÉ ×ËÌÀÞÅÎÁ ÏÐÃÉÑ IP_RECVERR, ÔÏ ×ÓÅ ÏÛÉÂËÉ ÈÒÁÎÑÔÓÑ × ÏÞÅÒÅÄÉ ÏÛÉÂÏË ÓÏËÅÔÁ É ÍÏÇÕÔ ÂÙÔØ ÐÏÌÕÞÅÎÙ Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ recvmsg(2) Ó ÕÓÔÁÎÏ×ÌÅÎÎÙÍ ÆÌÁÇÏÍ MSG_ERRQUEUE.
IOCTL
ë ÎÉÖÅÐÅÒÅÞÉÓÌÅÎÎÙÍ ioctl ÍÏÖÎÏ ÏÂÒÁÔÉÔØÓÑ Ó ÐÏÍÏÝØÀ ioctl(2). ðÒÁ×ÉÌØÎÙÊ ÓÉÎÔÁËÓÉÓ ÔÁËÏ×:-
int value; error = ioctl(tcp_socket, ioctl_type, &value);
- SIOCINQ
- ÷ ËÁÞÅÓÔ×Å ÐÁÒÁÍÅÔÒÁ ÐÏÌÕÞÁÅÔ ÕËÁÚÁÔÅÌØ ÎÁ ÃÅÌÏÅ ÞÉÓÌÏ. ÷ÏÚ×ÒÁÝÁÅÔ ÒÁÚÍÅÒ ÓÌÅÄÕÀÝÅÊ ÏÖÉÄÁÀÝÅÊ ÄÁÔÁÇÒÁÍÍÙ × ÂÁÊÔÁÈ, ÐÏÍÅÝÁÑ ÉÈ × ÜÔÏ ÃÅÌÏÅ ÞÉÓÌÏ, ÉÌÉ ÖÅ 0, ÅÓÌÉ ÎÅÔ ÏÖÉÄÁÀÝÅÊ ÄÁÔÁÇÒÁÍÍÙ.
- SIOCOUTQ
- ÷ÏÚ×ÒÁÝÁÅÔ ËÏÌÉÞÅÓÔ×Ï ÂÁÊÔ ÄÁÎÎÙÈ × ÌÏËÁÌØÎÏÊ ÏÞÅÒÅÄÉ ÏÔÐÒÁ×ËÉ. ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ × Linux 2.4 É ×ÙÛÅ.
äÏÐÏÌÎÉÔÅÌØÎÏ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ×ÓÅ ioctl, ÄÏËÕÍÅÎÔÉÒÏ×ÁÎÎÙÅ × ip(7) É socket(7).
ëïäù ïûéâïë
÷ÓÅ ËÏÄÙ ÏÛÉÂÏË, ÏÐÉÓÁÎÎÙÅ × socket(7) ÉÌÉ ip(7), ÍÏÇÕÔ ÂÙÔØ ÐÏÌÕÞÅÎÙ ÐÒÉ ÐÏÓÙÌËÅ ÉÌÉ ÐÒÉÅÍÅ ÎÁ ÓÏËÅÔÅ UDP.ECONNREFUSED ó ÁÄÒÅÓÏÍ ÎÁÚÎÁÞÅÎÉÑ ÎÅ Ó×ÑÚÁÎ ÎÉ ÏÄÉÎ ÐÏÌÕÞÁÔÅÌØ. üÔÁ ÏÛÉÂËÁ ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎÁ ÐÒÅÄÙÄÕÝÉÍ ÐÁËÅÔÏÍ, ÐÏÓÌÁÎÎÙÍ ÞÅÒÅÚ ÜÔÏÔ ÓÏËÅÔ.
÷åòóéé
ïÐÃÉÑ IP_RECVERR ÐÏÑ×ÉÌÁÓØ ÔÏÌØËÏ × Linux 2.2.á÷ôïòù
üÔÕ ÓÔÒÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á ÎÁÐÉÓÁÌ Andi Kleen.óíïôòé ôáëöå
ip(7), socket(7), raw(7).RFC768, ÇÄÅ ÏÐÉÓÁÎ UDP.
RFC1122, ÇÄÅ ÏÐÉÓÁÎÙ ÔÒÅÂÏ×ÁÎÉÑ Ë ÈÏÓÔÕ.
RFC1191, ÇÄÅ ÏÐÉÓÁÎ ÐÒÏÃÅÓÓ ÏÂÎÁÒÕÖÅÎÉÑ MTU ÍÁÒÛÒÕÔÁ.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre