HTTPSがステートフルかステートレスかを少し明確にしたいですか?これは、私が構築したRESTfulAPIに関するものです。最初はHTTPを使用していました。HTTPは基本的にステートレスであるTCP/IP上で機能するため、HTTPはステートレスですが、HTTPSに切り替えると、APIはステートフルになりました。HTTPSがステートフルであるという私の結論を知りたいと思いました。正しいかどうか?webMethodsというミドルウェアツールを使用してAPIを作成しました。ありがとう
5 に答える
TLS/SSL is stateful. The web server and the client (browser) cache the session including the cryptographic keys to improve performance and do not perform key exchange for every request.
HTTP 1 is not stateful. HTTP/2 however defines many stateful components, but the "application layer" still remains stateless.
TL;DR: The transport pipe (TLS) is stateful, original HTTP is not.
Additional note: Cookies and other stateful mechanisms are later additions defined in separate RFC's. They are not part of the original HTTP/1.0 specification, although other stateful mechanisms like caching and HTTP auth are defined HTTP 1.1 RFC and RFC 2617. HTTP 1 is said to be stateless although in practice we use standardized stateful mechanisms. HTTP/2 defines stateful components in its standard and is therefore stateful. A particular HTTP/2 application can use a subset of HTTP/2 features to maintain statelessness.
Theory aside, in practice you use HTTP statefully in your everyday life.
HTTPS の S は、プロトコルではなくトランスポートに関係しています。HTTP プロトコルのセマンティクスは、HTTPS でも同じままです。ウィキペディアの HTTPS に関する記事にあるように、
厳密に言えば、HTTPS は個別のプロトコルではありませんが、暗号化された SSL/TLS 接続を介した通常の HTTP の使用を指します。
また、HTTP プロトコルは設計上ステートレスです。これは、TCP/IP で最も頻繁に使用されるためではありません (たとえば、UDP で HTTPを使用することを妨げるものは何もありません)。
HTTPS は、安全な接続を介した HTTP です。
HTTP は接続よりも上位のレベルです。
Web サーバーに接続するとき、接続のタイプは (おそらく常に?) TCP/IP です。したがって、HTTPS 経由で Web サイトにアクセスしている場合、TCP/IP 接続は暗号化されます。
サーバーやクライアントが送信するデータは、サーバーやクライアントによって暗号化されていません。通常は HTTP 経由で送信されるだけですが、今回は暗号化によって保護された TCP/IP 経由の接続を使用します。
データが車両で、接続が高速道路である場合: - HTTP を使用すると、高速道路を走る車両のようになり、誰もがそれらを見ることができます。- HTTPS を使用する場合も同じですが、車両がトンネルなどを通り抜けて、高速道路を利用していない人から車両を見ることができなくなります。交通量があることは判断できますが、トンネルの両端を除いて車両を特定することはできません。
舞台裏に近いイメージだと思います。しかし、私は専門家ではありません。それが役立つことを願っています。
HTTPS にはセッション識別子フィールドが含まれているため、ステートフル プロトコルであると思います。これは、選択したクライアントとのセッションを識別するためにサーバーによって最初に生成されます。