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/\]//' 

jeudi 30 mai 2013

TCP/IP Sockets VS Unix Sockets -- Différence entre TCP/IP Sockets et Unix Sockets

 Unix Sockets

Unix Sockets est un IPC socket (inter-process communication socket)  il est conçu pour les communications entre processus au sein d'un même système d'exploitation.

Son fonctionnement est similaire au pipe mais ayant la particularité d'avoir un mode de connexion (SOCK_STREAM or SOCK_SEQPACKET)
 

Son API ( Berkeley Sockets Interface) est très similaire au   TCP/IP Sockets néanmoins elle n'utilise pas de couche pour la communication réseau.


TCP/IP Sockets: un cas particulier des internet sockets

TCP/IP Sockets est un mécanisme qui permet la communication entre deux processus dans un réseau.
Ici contrairement au  Unix Sockets les TCP/IP Sockets se branchent sur le protocole TCP/IP.