vendredi 31 mai 2013

Unix Socket

  • 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