Gemini (protocole)

Un article de Wikipédia, l'encyclopédie libre.
Gemini

Informations
Fonction Transmission d'hypertexte
Sigle gemini
Date de création juin 2019
Port 1965
RFC non standardisé par l'IETF

Gemini est un protocole de communication client-serveur. C'est un protocole de la couche application qui utilise le protocole TCP comme couche de transport. Il permet notamment d'accéder à des documents texte simples de type hypertexte. Les échanges entre le client et le serveur sont sécurisés à l'aide du protocole TLS. Le protocole est mis au point de manière collaborative mais n'est pas un standard internet.

Présentation[modifier | modifier le code]

Le protocole a été créé afin de répondre aux dérives du web selon ses auteurs[1],[2]. Il est fortement inspiré par le protocole Gopher, néanmoins l'utilisation de TLS est obligatoire sur le principe du trust-on-first-use (TOFU)[3]. Le but n'est pas de remplacer le web ou Gopher mais de proposer une alternative[4].

Les ressources Gemini sont identifiées au moyen d'URL dont le schéma est gemini://. Il est à noter que contrairement au protocole HTTPS qui possède un équivalent non chiffré (HTTP), le protocole Gemini ne défini volontairement pas d'équivalent non-chiffré.

La syntaxe des pages gemini, appelée Gemtext, est inspirée de celle de Markdown. Les liens sont toutefois écrits différemment :

=> gemini://domaine.gemini/ Domaine Gemini
=> https://fr.wikipedia.org/ Wikipédia en Français

Implémentation[modifier | modifier le code]

Serveurs[modifier | modifier le code]

Bien que le protocole soit jeune et encore en développement, plusieurs serveurs existent déjà[5].

Certains de ces serveurs implémentent les fonctionnalités nécessaires afin de répondre aux spécifications et de servir des fichiers statiques.

D'autres serveurs possèdent des fonctionnalités plus avancées comme la création de Virtual Host, la prise en charge des interfaces CGI ou encore du proxy inverse.

Il existe également différents proxy permettant d'accéder à gemini via HTTP, permettant d'utiliser un navigateur web standard.

Nom Langage de
programmation
Technologies
Agate Rust Fichiers statiques, I/O async
GLV-1.12556 Lua CGI, SCGI, multihost, charsets...
Gmnisrv C mime-types, générateur de pages man
Pldsrv Rust Fichiers statiques uniquement
Stargazer Rust CGI, SCGI, Regex, multihost

Clients[modifier | modifier le code]

Des clients sont disponibles sur les principaux systèmes d'exploitation existant. Certains n'implémentent que des fonctionnalités de bases, d'autres sont capables d'afficher des images ou de jouer un son.

Nom Plateforme Technologies
Amfora Terminal (TUI) Go
asuka Terminal (TUI) Rust, NCurses
AV-98 Terminal (CLI) Python
Bollux Terminal bash
Bombadillo Terminal Go
Castor GUI (GTK) Rust, GTK
Deedum GUI (Android) Dart
Elpher GUI (Emacs) Emacs
Fafi GUI Racket
GemiNaut GUI (Windows) C# for Microsoft Windows
gmni Terminal (CLI) C
Kristall GUI (Qt) C++, Qt
Lagrange GUI C, SDL
Ariane App (Android) Kotlin
deedum App (Android, …) Flutter
gemini-ios App (iOS) Swift

Statistiques[modifier | modifier le code]

Le 23 décembre 2020, on observait sur le réseau Gemini[6] :

  • 506 capsules et 64 000 URI
  • 17 % des capsules utilisaient des certificats fournis par Let's Encrypt
  • Les capsules étaient réparties sur 371 adresses IP dont 17 % en IPv6

Le projet Gemini a également fait l'objet d'une présentation lors du FOSDEM 2021[7] et son essor rapide devrait prochainement lui permettre d'être pris en charge par la commande cURL[8] malgré le fait que le schéma d'URI ne soit pas enregistré auprès de l'IANA.

Bibliographie[modifier | modifier le code]

  • Lee Phillips, « Gopher, Gemini, and the rise of the small Internet », Linux Magazine, no 245,‎ (ISSN 1471-5678, lire en ligne, consulté le 14 avril 2021)

Références[modifier | modifier le code]

  1. « Project Gemini », sur gemini.circumlunar.space (consulté le 10 janvier 2021)
  2. « Blog Stéphane Bortzmeyer: Le protocole Gemini, revenir à du simple et sûr pour distribuer l'information en ligne ? », sur www.bortzmeyer.org (consulté le 11 janvier 2021)
  3. « Gemini protocol specification », sur gemini.circumlunar.space (consulté le 10 janvier 2021)
  4. « Project Gemini FAQ », sur gemini.circumlunar.space (consulté le 10 janvier 2021)
  5. Krispin Schulz, kr1sp1n/awesome-gemini, (lire en ligne)
  6. « Blog Stéphane Bortzmeyer: Developing and running an Internet crawler », sur www.bortzmeyer.org (consulté le 11 janvier 2021)
  7. « FOSDEM 2021 - Gemini, a modern protocol that looks retro », sur fosdem.org (consulté le 12 avril 2021)
  8. « Curl: Re: [PATCH New protocol: gemini] », sur curl.se (consulté le 13 janvier 2021)

Liens externes[modifier | modifier le code]