Lexique informatique › Programmation › xtrans

xtrans

Programmation Svenska → Mis à jour: 2026-10-11

La couche de transport sous X11 — le code qui ouvre un socket Unix, du TCP ou quelque chose de plus ancien pour le compte de Xlib, du serveur X, du serveur de polices et d'ICE — et auquel personne ne se lie, car chacun compile sa propre copie.

Le protocole X ne dit rien de la façon dont les octets voyagent, et dans les années 80 et 90 il existait trop de réponses : TCP, sockets de domaine Unix, DECnet, tubes nommés SVR4, TLI et STREAMS. Chaque programme parlant X embarquait sa propre variante du code qui choisissait la bonne. X11R6, en 1994, l'a rassemblé dans l'X Transport Interface, xtrans, avec une interface unique pour ouvrir, écouter, accepter et fermer des connexions quelle que soit la couche sous-jacente. La chaîne DISPLAY pilote le choix : :0 devient un socket Unix dans /tmp/.X11-unix/X0, host:0 devient du TCP vers le port 6000, et les préfixes unix/, tcp/ et local/ peuvent être donnés explicitement. Linux a ensuite gagné le socket abstrait @/tmp/.X11-unix/X0, qui n'apparaît pas dans le système de fichiers et survit donc à un /tmp nettoyé.

La construction est étrange. xtrans n'est pas une bibliothèque partagée mais un ensemble de fichiers C inclus par #include dans Xlib, le serveur X, xfs, ICE et XDM, chacun avec son propre préfixe de noms via des macros. Un bogue de xtrans existait donc en cinq exemplaires sur le même système, mais personne n'avait besoin d'une bibliothèque de transport à ABI stable à une époque où personne ne s'entendait sur laquelle. Quand les distributions des années 2000 ont commencé à lancer le serveur avec -nolisten tcp, c'est à la liste d'écoute de xtrans qu'elles touchaient.

← Retour au lexique