Mmmhh, je ne suis pas tout à fait d'accord avec cette analogie : un descripteur de fichier est valable dans un contexte particulier, qui est celui d'un processus.
Je ferais plutôt l'analogie avec le nom d'un fichier, qui n'est valable que dans le contexte d'une machine mais est au moins le même pour tous les processus. Ici, on l'étendrait à l'ensemble du réseau : l'ensemble d'un hôte (adressé par nom ou par adresse) et d'un port (dont il existe un forme textuelle dans la base correspondante de l'IANA) forme le « nom » d'un processus sur le réseau. On retrouve cette terminologie dans l'API des sockets avec getsockname et getpeername, qui retournent respectivement l'ensemble adresse + port de l'hôte local ou distant. Ces ensembles ont une signification globale et non particulière à un contexte : en tout point du réseau, ce « nom » de processus l'identifie clairement.
J'insiste sur la signification globale de l'identifiant, car c'est le point central d'Internet : il n'y a pas d'état dans le réseau, et donc pas besoin de synchronisation au cœur du réseau, ce qui simplifie énormément le coût d'opération de celui-ci. L'intelligence est aux extrémités, qui gèrent leur synchronisation eux-même, en utilisant des identifiants globaux.
Bien sûr, ces principes sont cassés quand on n'utilise pas d'adresse globale, et la complexité de fonctionnement du réseau augmente exponentiellement, mais ça n'est pas nouveau. C'est juste que personne n'ose mesurer le coût de fonctionnement d'une telle architecture.
[^] # Re: croiser avec stdin, stdout et tutti quanti ?
Posté par benoar . En réponse au journal SYN c'est pour « SYNchronisation ». Évalué à 2.
Mmmhh, je ne suis pas tout à fait d'accord avec cette analogie : un descripteur de fichier est valable dans un contexte particulier, qui est celui d'un processus.
Je ferais plutôt l'analogie avec le nom d'un fichier, qui n'est valable que dans le contexte d'une machine mais est au moins le même pour tous les processus. Ici, on l'étendrait à l'ensemble du réseau : l'ensemble d'un hôte (adressé par nom ou par adresse) et d'un port (dont il existe un forme textuelle dans la base correspondante de l'IANA) forme le « nom » d'un processus sur le réseau. On retrouve cette terminologie dans l'API des sockets avec
getsocknameetgetpeername, qui retournent respectivement l'ensemble adresse + port de l'hôte local ou distant. Ces ensembles ont une signification globale et non particulière à un contexte : en tout point du réseau, ce « nom » de processus l'identifie clairement.J'insiste sur la signification globale de l'identifiant, car c'est le point central d'Internet : il n'y a pas d'état dans le réseau, et donc pas besoin de synchronisation au cœur du réseau, ce qui simplifie énormément le coût d'opération de celui-ci. L'intelligence est aux extrémités, qui gèrent leur synchronisation eux-même, en utilisant des identifiants globaux.
Bien sûr, ces principes sont cassés quand on n'utilise pas d'adresse globale, et la complexité de fonctionnement du réseau augmente exponentiellement, mais ça n'est pas nouveau. C'est juste que personne n'ose mesurer le coût de fonctionnement d'une telle architecture.