Als Programmierer benutzt man die Socket-Schnittstelle die in der C-Bibliothek zur Verfügung gestellt wird. Diese besteht aus den folgenden Funktionen:
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
int listen(int s, int backlog);
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
int send(int s, const void *msg, size_t len, int flags);
int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
int recv(int s, void *buf, size_t len, int flags);
int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
Diese Socket-Funktionen werden allein durch den Systemaufruf sys_socketcall() im Kernel implementiert [net/socket.c]:
Eine der wichtigsten Strukturen innerhalb des Kernels ist die struct socket [include/linux/net.h]:
};
Die in [net/socket.c] implementierten Funktionen greifen über den ops Eintrag des struct socket auf die spezifischen Funktionen der INET-Socket Schicht zurück.