Approche langage au développement du support protocolaire d'applications réseaux - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2008

Approche langage au développement du support protocolaire d'applications réseaux

Résumé

A network application communicates with other applications according to a set of rules known
as a protocol. This communication is managed by the part of the application known as the protocol-
handling layer. This protocol-handling layer enables the manipulation of protocol messages. This
layer is a critical component of a network application since it represents the interface between the
application and the outside world. It must thus satisfy two constraints : it must be efficient to be
able to treat a large number of messages and it must be robust to face various attacks targetting the
application itself or the underlying platform. Despite these constraints, the development process of this
protocol-handling layer still remains rudimentary and requires a high level of expertise. It consists of
translating the protocol specification written in a high level formalism such as ABNF towards low
level code such as C. The gap between these abstraction levels can entail many errors.
This thesis proposes a new language-based approach to the development of protocol-handling
layers, to improve their robustness without compromising their performance. Our approach is based
on the use of a domain-specific language, Zebu, to specify the protocol-handling layer of network
applications that use textual application protocols à la HTTP. The Zebu syntax is very close to that
of ABNF, facilitating the adoption of Zebu by domain experts. By annotating the original ABNF
specification of a protocol, the Zebu user can dedicate the protocol-handling layer to the needs of
a given application. The Zebu compiler first checks the annotated specification for inconsistencies
and then generates a protocol-handling layer according to the provided annotations. This protocol-
handling layer is made of a set of data structures that represent a message, a parser that fills in these
data structures and various stub functions to access these data structures or drive the parsing of a
message. By default, the generated message parser only accepts messages that strictly conform to the
protocol. This validation criteria can be relaxed for more flexibility and better performance.
Une application réseau communique avec d'autres applications par le biais d'un ensemble consen-
suel de règles régissant la communication, appelé protocole. Cette communication est gérée par la
partie de l'application connue comme la couche de support protocolaire qui gère la manipulation de
messages protocolaires. Elle s'avère être un composant critique d'une application réseau puisqu'elle
représente l'interface entre celle-ci et le monde extérieur. Elle est donc soumise à deux contraintes
fortes : une contrainte d'efficacité pour pouvoir traiter un grand nombre de messages et une contrainte
de robustesse pour faire face à des attaques visant à déstabiliser l'application ou la plate-forme maté-
rielle sous-jacente. Malgré ces contraintes, le processus de développement de cette couche demeure
rudimentaire et requiert un haut niveau d'expertise. Il consiste à traduire manuellement une spécifi-
cation du protocole écrite dans un formalisme haut niveau comme ABNF vers du code bas niveau tel
que du C. Le fossé entre ces niveaux d'abstraction favorise l'apparition d'erreurs.
Cette thèse propose une approche langage au développement de la couche de support protocolaire
d'applications réseaux, pour améliorer leur robustesse sans compromettre leur performance. Notre ap-
proche est fondée sur l'utilisation d'un langage dédié, Zebu, pour décrire la spécification des couches
de support protocolaire d'applications réseaux qui utilisent des protocoles applicatifs textuels à la
HTTP. La syntaxe de Zebu est très proche de celles du formalisme ABNF, favorisant ainsi l'adoption
de Zebu par des experts du domaine. En annotant la spécification ABNF d'un protocole, l'utilisateur
de Zebu peut adapter une couche de support protocolaire à une application donnée. Dans un premier
temps, le compilateur Zebu vérifie la spécification annotée pour déceler d'éventuelles incohérences.
Ensuite, une couche de support protocolaire définie par les annotations fournies est générée automati-
quement. Cette couche consiste en un ensemble de structures de données pour représenter un message,
un analyseur syntaxique qui remplit ces structures de données et des fonctions utilitaires pour l'ac-
cès à ces données ou piloter l'analyse syntaxique des messages. Par défaut, l'analyseur syntaxique de
messages généré n'accepte que les messages respectant scrupuleusement la spécification. Ce critère
de validation peut être modifié pour plus de flexibilité ou de meilleures performances.
Fichier principal
Vignette du fichier
thesis.pdf (1003.71 Ko) Télécharger le fichier

Dates et versions

tel-00359948 , version 1 (09-02-2009)

Identifiants

  • HAL Id : tel-00359948 , version 1

Citer

Laurent Burgy. Approche langage au développement du support protocolaire d'applications réseaux. Réseaux et télécommunications [cs.NI]. Université Sciences et Technologies - Bordeaux I, 2008. Français. ⟨NNT : ⟩. ⟨tel-00359948⟩

Collections

CNRS INRIA INRIA2
257 Consultations
1244 Téléchargements

Partager

Gmail Facebook X LinkedIn More