Man page - raw(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pt_BR es ja ru ro zh_TW zh_CNManual
raw
NOMSYNOPSIS
DESCRIPTION
Formats dâadresse
Options de socket
Traitement des erreurs
ERREURS
VERSIONS
NOTES
BOGUES
VOIR AUSSI
TRADUCTION
NOM
raw â Sockets raw IPv4 sous Linux
SYNOPSIS
#include
<sys/socket.h>
#include <netinet/in.h>
raw_socket = socket(AF_INET, SOCK_RAW, int
protocole
);
DESCRIPTION
Les sockets raw (bruts, sans protocole) permettent dâimplĂ©menter de nouveaux protocoles IPv4 dans lâespace utilisateur. Un socket raw reçoit ou envoie des datagrammes bruts sans les en-tĂȘtes de couche de liaison.
La couche IPv4 gĂ©nĂšre des en-tĂȘtes IP lorsquâelle envoie un paquet, Ă moins que lâoption IP_HDRINCL de socket ne soit activĂ©e sur le socket. Lorsquâelle est activĂ©e, le socket doit contenir lâen-tĂȘte IP. Pour la rĂ©ception, lâen-tĂȘte IP est toujours inclus dans le paquet.
Dans le but de crĂ©er un socket raw, un processus doit avoir la capacitĂ© CAP_NET_RAW dans lâespace de noms utilisateur qui rĂ©git son espace de noms rĂ©seau.
Tous les paquets ou les erreurs correspondant au numéro de protocole indiqué pour le socket raw sont transmis à ce socket. Pour voir une liste des protocoles autorisés, consultez les numéros assignés dans http://www.iana.org/assignments/protocol-numbers/ et getprotobyname (3).
Un protocole IPPROTO_RAW implique lâactivation de IP_HDRINCL et autorise lâĂ©mission suivant nâimporte quel protocole IP indiquĂ© dans lâen-tĂȘte. La rĂ©ception de tous les protocoles IP avec IPPROTO_RAW nâest pas possible avec les sockets raw.
Si IP_HDRINCL est indiquĂ© et si lâen-tĂȘte IP a une adresse de destination diffĂ©rente de zĂ©ro, alors lâadresse de destination du socket est utilisĂ©e pour router le paquet. Quand MSG_DONTROUTE est indiquĂ©, lâadresse de destination devrait toujours viser une interface locale. Sinon, un examen de la table de routage a quand mĂȘme lieu, mais les routes avec une passerelle sont ignorĂ©es.
Si IP_HDRINCL nâest pas indiquĂ©, les options dâen-tĂȘte IP peuvent ĂȘtre dĂ©finies sur les sockets raw avec setsockopt (2) ; consultez ip (7) pour plus dâinformations.
Depuis Linux 2.2 tous les champs dâen-tĂȘte IP et les options peuvent ĂȘtre dĂ©finis en utilisant les options IP de socket. Cela signifie que les sockets raw ne servent en gĂ©nĂ©ral que pour les nouveaux protocoles ou les protocoles sans interface utilisateur (comme ICMP).
Lorsquâun paquet est reçu, il est passĂ© Ă tous les sockets raw qui ont Ă©tĂ© attachĂ©s Ă son protocole avant dâĂȘtre transmis aux gestionnaires des autres protocoles (par exemple les modules des protocoles du noyau).
Formats dâadresse
Pour envoyer et recevoir des datagrammes ( sendto (2), recvfrom (2) et similaires), les sockets raw utilisent la structure dâadresse sockaddr_in standard, dĂ©finie dans ip (7). Le champ sin_port pourrait ĂȘtre utilisĂ© pour indiquer un numĂ©ro de protocole IP, mais il est ignorĂ© pour lâĂ©mission dans Linux 2.2 et les versions suivantes et devrait ĂȘtre toujours mis Ă zĂ©ro (voir paragraphe BOGUES). Pour les paquets entrants sin_port est rĂ©glĂ© Ă zĂ©ro.
Options de socket
Les options des
sockets raw peuvent ĂȘtre Ă©crites avec
setsockopt
(2) et lues avec
getsockopt
(2) en
passant lâattribut de famille
IPPROTO_RAW
.
ICMP_FILTER
Activer un filtre spĂ©cial sur les sockets raw liĂ©s au protocole IPPROTO_ICMP . La valeur a un bit dĂ©fini pour chaque type de message ICMP qui doit ĂȘtre rejetĂ©. La valeur par dĂ©faut est de ne filtrer aucun message ICMP.
De plus, toutes les options IPPROTO_IP de ip (7) valables pour les sockets datagrammes sont prises en charge.
Traitement des erreurs
Les erreurs provenant du rĂ©seau ne sont transmises Ă lâutilisateur que lorsque le socket est connectĂ© ou si le drapeau IP_RECVERR est actif. Pour les sockets connectĂ©s, seules EMSGSIZE et EPROTO sont transmises pour compatibilitĂ©. Avec IP_RECVERR , toutes les erreurs rĂ©seau sont sauvegardĂ©es dans la file dâerreurs.
ERREURS
|
EACCES |
Lâutilisateur essaye dâenvoyer sur une adresse broadcast sans avoir le drapeau broadcast sur le socket. |
||
|
EFAULT |
Une adresse mémoire incorrecte a été fournie. |
||
|
EINVAL |
Argument incorrect. |
EMSGSIZE
Paquet trop grand. Soit la recherche du MTU dâun chemin donnĂ© (Path MTU discovery â PMTUd)) est active (voir lâattribut IP_MTU_DISCOVER de socket), soit la taille du paquet dĂ©passe le maximum autorisĂ© par IPv4 (64 Ko).
EOPNOTSUPP
Un attribut incorrect a été transmis à un appel de socket (comme MSG_OOB ).
|
EPERM |
Lâutilisateur nâa pas la permission dâouvrir des sockets raw. Seuls les processus avec un UID effectif Ă©gal Ă zĂ©ro ou ayant la capacitĂ© CAP_NET_RAW peuvent le faire. |
||
|
EPROTO |
Une erreur ICMP est arrivée, indiquant un problÚme de paramétrage. |
VERSIONS
IP_RECVERR et ICMP_FILTER sont nouveaux dans Linux 2.2. Ce sont des extensions Linux qui ne doivent pas ĂȘtre employĂ©es dans des programmes portables.
Linux 2.0 assurait une compatibilitĂ© bogue-Ă -bogue avec le code des sockets raw de BSD lorsque lâoption SO_BSDCOMPAT de socket Ă©tait utilisĂ©e. Cela a Ă©tĂ© supprimĂ© depuis Linux 2.2.
NOTES
Par dĂ©faut, les sockets bruts utilisent la dĂ©tection du MTU (« Maximum Transmission Unit ») pour le chemin. Cela signifie que le noyau garde en mĂ©moire le MTU vers une adresse IP cible spĂ©cifique et renvoie EMSGSIZE lorsquâun paquet raw dĂ©passe cette taille. Dans ce cas, lâapplication doit diminuer la taille du paquet. La dĂ©tection du MTU dâun chemin peut aussi ĂȘtre dĂ©sactivĂ©e en utilisant lâoption de socket IP_MTU_DISCOVER ou le fichier /proc/sys/net/ipv4/ip_no_pmtu_disc , consultez ip (7) pour plus de dĂ©tails. Lorsque cette option est dĂ©sactivĂ©e, les sockets raw fragmenteront les paquets sortants qui dĂ©passent le MTU de lâinterface. Câest cependant dĂ©couragĂ©, pour des raisons de performance et de fiabilitĂ©.
Un socket raw peut ĂȘtre attachĂ© Ă une adresse locale spĂ©cifique en utilisant lâappel bind (2). Sâil nâest pas attachĂ©, tous les paquets du protocole IP indiquĂ© sont reçus. De plus, un socket raw peut ĂȘtre attachĂ© Ă un pĂ©riphĂ©rique rĂ©seau particulier avec SO_BINDTODEVICE ; consultez socket (7).
Un socket IPPROTO_RAW ne fonctionne quâen Ă©mission. Si vous dĂ©sirez vraiment recevoir tous les paquets IP, utilisez un socket packet (7) avec le protocole ETH_P_IP . Notez que les sockets packet ne rĂ©assemblent pas les fragments IP contrairement aux sockets raw.
Si vous voulez recevoir tous les paquets ICMP pour un socket datagram, il est souvent prĂ©fĂ©rable dâutiliser IP_RECVERR sur ce socket particulier, consultez ip (7).
Les sockets raw peuvent exploiter tous les protocoles IP sous Linux, mĂȘme les protocoles comme ICMP ou TCP qui ont un module de protocole dans le noyau. Dans ce cas, les paquets sont passĂ©s Ă la fois au module du noyau et au(x) socket(s) raw. Ce comportement nâest pas portable, de nombreuses autres implĂ©mentations des sockets BSD ont leurs propres limites Ă ce sujet.
Linux ne modifie jamais les en-tĂȘtes fournis par lâutilisateur (sauf pour remplir les champs ne contenant que des zĂ©ros comme cela est dĂ©crit pour IP_HDRINCL ). Ăa diffĂšre de nombreuses autres implĂ©mentations des sockets raw.
Les sockets raw sont en gĂ©nĂ©ral peu portables et devraient ĂȘtre Ă©vitĂ©s dans les programmes destinĂ©s Ă ĂȘtre portables.
LâĂ©mission sur les sockets raw devrait employer le protocole IP dans sin_port ; cette possibilitĂ© a Ă©tĂ© perdue dans Linux 2.2. Une solution est dâutiliser IP_HDRINCL .
BOGUES
Les extensions de mandataire transparent ne sont pas décrites.
Lorsque lâoption IP_HDRINCL est active, les datagrammes ne seront pas fragmentĂ©s et sont limitĂ©s au MTU de lâinterface.
Utiliser le protocole IP indiquĂ© dans sin_port en Ă©mission a Ă©tĂ© supprimĂ© dans Linux 2.2. Le protocole auquel le socket a Ă©tĂ© liĂ© ou celui indiquĂ© dans lâappel socket (2) initial est toujours utilisĂ©.
VOIR AUSSI
recvmsg (2), sendmsg (2), capabilities (7), ip (7), socket (7)
RFCÂ 1191 pour la recherche du MTU de chemin. RFCÂ 791 et le fichier dâen-tĂȘte <linux/ip.h> pour le protocole IP.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .