- Unix Socket
Dans le user space il y a les couches : application, présentation et session.
Les sockets font l'interface entre les application et le réseau elles se situent au-dessus de la couche
transport, dans les couches session, présentation et application.
Création d'un Socket :
Sous linux tout est traité comme fichier, après la création d'une socket (socket()) dans le user space on obient un nouveau file descriptor associé a cette socket iSockfd .
Prototype : int socket (int domain, int type, int protocol) ;
Domain : AF_UNIX protocoles internes d’UNIX.
Adressage : pour Unix c'est le nom d'un fichier, la structure est dans le fichier /usr/include/sys/un.h
struct sockaddr_un {
short sun_family; /* AF_UNIX */char sun_path[108]; /* path name */
};
Pour chaque socket créé linux lui associe une structure struct socket au niveau user space (8 membres) et struct sock au niveau kernel.
Type:
SOCK_STREAM et SOCK_DGRAM sont les plus utilisés :
-SOCK_STREAM : mode connecté pour TCP, SCTP, BLUETOOTH..
-SOCK_DGRAM: mode non connecté UDP.
-SOCK_RAW: for RAW sockets.
Connexion :
int connect (int sockfd, struct sockaddr *servaddr, int addrlen) ;
sockfd : est le file descriptor par socket() ;servaddr : est un pointeur sur une structure d’adresse sockaddr_un qui indique
l’adresse de destination.
addrlen : taille de la structure d’adresse.
Commandes :
Désactiver ou activer le bind local echo "1" > /proc/sys/net/ipv4/ip_nonlocal_bind
Statistique sur les sockets : netstat -ae
Les sockets attachés a un processus : ls -l /proc/[pid]/fd|grep socket|cut -d: -f3|sed 's/\[//;s/\]//'
Aucun commentaire:
Enregistrer un commentaire