protocole sans état et protocole avec État

Comment comprendre le protocole stateless et le protocole stateful? HTTP est un protocole sans état et FTP est un protocole avec État. Pour les applications web nécessitant beaucoup d'interactions, le protocole sous-jacent devrait être avec État. Est ma compréhension de la droite?

25
demandé sur user288609 2011-04-30 00:09:20

6 réponses

Puisque vous posez des questions sur une application Web, le Protocole sera toujours sans état-le protocole pour le Web est http (ou https), et c'est tout ce qu'elle a écrit.

Je pense que ce à quoi vous pensez est de fournir un mécanisme d'état dans votre application Web elle-même. L'approche typique de ceci est que vous créez un identifiant unique pour la session de l'utilisateur dans votre application Web (un sessionID d'une forme ou d'une autre est la pratique courante) qui est remis entre le navigateur et serveur. Cela se fait généralement dans un cookie, bien que cela puisse être fait, avec un peu plus de tracas pour vous en fonction de votre plate-forme/framework, sur L'URL aussi.

Votre code côté serveur stocke des informations avec État (encore une fois, généralement appelées session de l'utilisateur) mais il veut utiliser sessionID pour le rechercher. Le trafic http remet simplement le sessionID. Tant que cet identifiant est là, chaque transaction http est complètement indépendante de toutes les autres, d'où le trafic de protocole lui-même est apatride.

12
répondu Paul Degnan 2011-04-29 20:19:30

HTTP est un protocole sans état, en d'autres termes, le serveur oubliera tout ce qui concerne l'état du client/navigateur. Bien que les applications web ont fait pratiquement ressembler à stateful.

Un protocole sans état peut être forcé de se comporter comme s'il était avec État. Cela peut être accompli si le serveur envoie l'état au client, et si le client l'envoie de nouveau au serveur, à chaque fois.

Il y a trois façons d'accomplir cela dans HTTP:

A) un est cookies, auquel cas l'état est envoyé et retourné dans les en-têtes HTTP.

B) le second est l'extension D'URL, auquel cas l'état est envoyé dans le cadre de l'URL en réponse.

C) le troisième est "champs de formulaire cachés", dans lequel l'état est envoyé au client dans le cadre de la réponse, et retourné au serveur dans le cadre des données cachées d'un formulaire

ÉVOLUTIVITÉ ET HAUTE DISPONIBILITÉ

L'une des principales raisons pour lesquelles HTTP évolue si bien est son apatridie. Apatride le protocole facilite les problèmes de réplication, car l'État lui-même n'a pas besoin d'être stocké sur le serveur.

Les protocoles avec État sont logiquement lourds à implémenter sur Internet de manière fiable. Les serveurs sans état sont également facilement évolutifs, tandis que pour les serveurs avec État, la scalablité est problématique. La demande sans état peut être envoyée à n'importe quel nœud, à tout moment, alors qu'avec Stateful ce n'est pas un cas.

HTTP as Stateless protocol augmente la disponibilité des applications Web sans état, ce qui être difficile ou impossible à mettre en œuvre. S'il y a une connexion perdue, il n'y a pas d'état qui est perdu, simple request resend résoudra le problème. Les requêtes sans état peuvent également être mises en cache.

Voir plus ici

36
répondu jjpcondor 2016-10-07 06:29:07

Http est un protocole sans état.toutes les applications web sont sans état. lorsqu'une demande est envoyée au serveur, une connexion est établie entre le client et le serveur,le serveur va recevoir la demande ,processus de la demande et envoie la réponse.et la connexion est fermée. si une autre requête est envoyée, elle sera traitée comme une nouvelle requête et une nouvelle connexion sera établie. afin de rendre http stateful. nous utilisons des techniques de gestion. alors qu'il utilise les données à venir de la demande précédente lors du traitement de la demande actuelle.c'est-à-dire qu'il utilise la même connexion pour une série d'interactions client-serveur. les techniques de gestion de session sont: 1.champ de formulaire masqué 2.cookie 3.session 4.url-réécriture;

3
répondu ayyappa 2017-02-02 06:33:28

Votre question Est sur place, et oui, ce serait génial si vos transactions web avec votre banque étaient effectuées sur une connexion avec État. Hélas, HTTP est sans état en raison d'un bug bizarre dans FTP et d'une limite de socket 12 dans la table de socket partielle dans BSD de 1989. Marcus Ranum a tout expliqué ici.

Donc HTTP jette l'état qu'il hérite de TCP et doit recréer l'État à la couche d'application sous la forme de cookies. La sécurité Internet merdique est le résultat.

Le Seif project propose de corriger tout cela en utilisant "secure JSON over TCP". Le DNS et les autorités de certification ne sont pas requis. Le protocole et seifnode.js sont finis et sur github avec une licence MIT.

2
répondu user2628103 2017-05-18 16:18:04

HTTP N'hérite pas de TCP, mais l'utilise plutôt pour un transport. HTTP utilise TCP pour une connexion avec État, mais se déconnecte ensuite. Plus tard, il se connectera à nouveau, si nécessaire. Ainsi, pendant que vous naviguez sur un site web, vous créez de nombreuses connexions différentes. Chacune de ces connexions est avec État, mais la conversation dans son ensemble ne l'est pas, puisque vous supprimez la connexion avec chaque conversation.

À Partir de ce lien

1
répondu walkerbox 2018-03-08 19:37:35

Fondamentalement Oui, mais vous n'avez pas d'autre choix que D'utiliser HTTP qui est l'endroit où les sites Web sont servis. Vous devez donc faire face à des compromis pour rendre HTTP stateful, aka gestion de session. Les possibilités sont essentiellement de transmettre un ID de session à travers chaque appel dans L'URL afin que vous sachiez quand vous parlez à quelqu'un dont vous avez déjà parlé, ou via des cookies, qui atteignent le même objectif sans encombrer l'url. Cependant, la plupart des langages de développement web modernes prennent soin de cela pour vous; si vous google pour la langue de votre choix + "gestion de session" vous devriez avoir quelques idées sur la façon dont il est fait.

0
répondu Nicolas78 2011-04-29 20:19:10