Interfaţa de Programare a Aplicaţiei (IPA)

Primary tabs

Română

IPA (Application Programming Interface, API) pentru SOCKET

Introdusă in 1981, BSD 4.1 UNIX

O interfaţă locală, creată/aparţinand de aplicaţie, controlată de SO în care procesul aplicaţiei poate atât transmite cât şi recepţiona mesaje către/de la alt proces al aplicaţiei (la distanţă sau local)

Doi sockeţi pe gazde separate

Doi sockeţi pe gazde separate "conectaţi" prin rutine de management al lăcaşului pentru SO. Aplicaţia vede numai socketul local.

Sockeţii sunt creaţi explicit, utilizaţi şi puţi în funcţiune de către aplicaţii. Ei se bazează pe paradigma client/server. Există doua tipuri de servicii de transport via IPA pentru socket:

  • datagrame nesigure

  • sigure, orientate pe flux

Nivelele de prezentare şi sesiune lipsesc în reţelele UNIX.

Sockeţi: aspectul conceptual

Fiecare socket are bufere de transmisie şi recepţie separate, posibilitatea de identificare a portului, parametri (aplicaţie interogativă şi setabilă).

Operaţiile socketului implementat ca sistem apelează la SO. Limitele utilizator/kernel se încucişează pe sus.

Sockeţi - aspectul conceptual

Servicii fără conexiune

Serviciu datagramă: protocoalele de transport de bază nu garantează livrarea.

Nu exista o identificare explicită a serverului sau clientului.

Dacă se iniţiază contactul cu cealaltă parte, trebuie cunoscute.

  • adresa IP

  • numărul portului sau procesul care aşteaptă să fie contactat

Dacă se aşteaptă contactul de la cealaltă parte, trebuie declarat:

  • numărul portului la care se aşteaptă de cealaltă parte.

Servicii fără conexiune

Crearea unui socket

Acelaşi terminal (socket) folosit pentru a transmite/recepţiona date.

Nu exista o asociere a priori a socketului cu reţeaua.

Trebuie să se specifice familia de protocoale de transport, şi serviciul specific la nivel de transport care se va folosi cu socketul:

Familia de protocoale
Nume simbolic
TCP/IP Internet AF_INET
Xerox NS AF_NS
intra-host UNIX AF_UNIX
DEC DNA AF_DECNET

Tipul serviciului
Nume simbolic
Comentariu
datagrama SOCK_DGRAM protocol UDP in AF_INET
sigură, în ordine SOCK_STREAM protocol TCP in AF_INET
socket brut SOCK_RAW acces direct la nivelul reţea

Socket int (familia int, serviciul int, protocol int)

Familia este numele simbolic al familiei de protocoale.

Serviciul este numele simbolic al tipului de serviciu.

Protocolul permite o specificare mai bună a socketului brut. Pentru noi, acesta va fi 0.

Codul de răspuns de la socket() este este un descriptor de socket, folosit în toate apelurile de sistem legate de socket.

Exemplu:
#include <sys/types.h>
#include<sys/ socket.h> 

 int sockfd; 

 if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    { /* handle error */ }

 

Adaugă comentariu nou