On Tue, 19 Sep 2000, Daniel Cordey wrote:

> l'usage en est le meme et la fonction select est valable pour ces
> trois "types" de fichier. Il est evident que l'on peut debattre
> logtemps de l'implenentation

Une déviation importante du modèle des sockets a été le modèle des STREAMS
(principalement en SVR4), l'idée étant que les protocoles réseaux sont des
filtres, et que l'on peut p.ex. faire du X.25 sur du TCP/IP en poussant
(push) la couche X.25 sur la couche TCP, elle-même poussée sur p.ex une
couche Ethernet. Chacun des paquets de données passe alors par tous les
intermédiaires. On peut imagine implémenter du cryptage d'une application
de telebanking X.25 en insérant un cryptage entre X.25 et le medium
physique, ce qui se fait sans recompilation.

C'est très populaire dans les télécommunications, surtout car cela permet
de développer des `modules' binaires propriétaires très chers qui sont
ensuite utilisés pour une tâche donnée, et réutilisés afin de justifier
leur prix plus tard, mais cela n'en est pas sorti. Sauf erreur il existe
une implémentation (commerciale) des STREAMS pour Linux (ne pas confondre
avec les C++ IO streams).

De nos jours j'ai un peu de peine à voir la validité de ce concept si la
source entière des protocoles réseaux est disponible: on peut optimiser
bien plus en utilisant des concepts de langage orienté objet, voire des
concepts comme ceux du kernel Linux, soit des tableaux de fonctions qui
implémentent des méthodes génériques, et l'héritage par appel (p.ex. je
développe un système de fichiers en C qui hérite des caractéristiques d'un
file-system sous-jacent et lui rajoute des concepts, que ce soit ext2,
ext3, reiserfs, c'est choisi au montage; grâce à une couche d'héritage qui
s'appelle FIST).

La seule chose qui y ressemble dans Linux standard c'est la façon dont on
fait du SLIP ou du PPP sur un tty: on insère la line-discipline PPP ou
SLIP grâce à un ioctl().

PS: on a parlé de Winsock récemment. A ma connaissance, Winsock est une
implémentation des sockets BSD, mais *sans* le concept `everything is a
file'.


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.

Répondre à