For Want Of A Better Word

色んな 「セッション」の意味まとめ

      2017/06/05

 

ネットワークまわりで「セッションを張る」「セッション数が多くて」、

とか言われてもセッションの実体がいまいちよく分からない。
調べて考えた。
それ以外のセッションについても整理。

まず、セッションとはー

http://itpro.nikkeibp.co.jp/word/page/10020702/

コンピューター間でデータをやり取りするために設ける論理的な接続関係。セッションを確立することを、「セッションを張る」という。
通信を始めるときには、まずセッションを張り、データを送り終わったらセッションを閉じる。ただし、通信にはセッションを必要としないものもあり、こうした通信は「セッションレスな通信」と呼ばれる。

ふむふむ。ネットワーク上でデータをやり取りするための、接続関係。

TCPはコネクション型、UDPはコネクションレス型だけど、これとニアイコールなのかな…

 

【注意】「セッション」と言ってもウェブアプリだと別のを意味を持つ。

ウェブアプリケーションで、ログイン機能などに使われる「セッション」もある。

これはネットワークのセッションとは別物。注意。文脈大事。

 

なお、ある目的(例えば、商品の購入)のために、複数のWebページにまたがって行われる一連の処理も、セッションと呼ばれる。Webで使われるHTTP自体にはセッションを管理する機能がないため、別の仕組みで補う必要がある。現在では、Webのセッション管理にはCookie(クッキー)を利用することが多い。

 

ちょっと整理すると

 

・ネットワークでセッションを張るという事は、パケット通信用の「接続関係を構築する」ということ。
・HTTPセッションはまた別の用語なので注意。(WEBサイトでの一連の操作・処理のこと。あるいは、セッション機能そのもの)

 
TCPの接続は「3フェイズ」にて行われる。

「接続」「データ送受信」「切断」。

この「接続」の部分がセッションを張るということだろう。
これは「コネクション」とも言い換えられる。

 

疑問

どういう単位・レベル・レイヤーでいうのかな。TCP/IP? FTPとかSSHの接続することもセッションを張るっていうのかな?なんか違う気がする。
OSIのセッション層と考えればよいのか。
TCP/IPにおけるセッション層の定義は..

OSI参照モデルは、TCPプロトコルの特性であり、フォーウェイ・SYNハンドシェイクにより提供されるセッションの正常な終了を、セッション層の責任とした。

やっぱり「TCP」による接続を「セッションを張る」そこを、さまざまなアプリケーションプロトコルでデータ(パケット)を送受信するということでよさそう。
sshなら,TCP/IPでセッションを張り、sshプロトコルで認証ログインみたいな感じ?
そうすると、いわゆるセッション数とかも単純に接続数ということでよさそうだ。

====== (追記 start) ======
ここらへんの考え方は下記を読むとスッキリした。

素朴な疑問◆Q&A – 「セッション」と「コネクション」は違うの?:ITpro

 SSLを使ったWebサイトへのアクセスでは実際のデータ転送に先だって,WebブラウザとWebサーバーがSSLで使う暗号の仕様についてやりとりして合意します。この“合意”がセッションです。
セッションが張れたら,暗号化したデータをSSLで転送します。この転送で利用する論理的な回線がコネクションです。

セッションがあって、その上でコネクションを持つ。

====== (追記 終了) ======

 

整理してまとめ

①ネットワークでのセッション

「接続関係を構築」すること。=TCP/IPの接続の構築。
おもに、OSI7階層モデルでいう第5層「セッション層」。TCPではIP(第2層)TCP(第3層)の上のアプリケーション層(httpとかftp)に含まれる。
参考:TCP/IP と OSI 参照モデル

 

 

②http(webページ操作)でのセッション

複数のWebページにまたがって行われる一連の処理・操作。
1回WEBページにアクセスして、複数のページを閲覧したりすると、1セッションで何ページ見た。みたいな感じ。GoogleAnalyticsのセッションもこれか。

③WEBアプリ・プログラムにおけるセッション

②のhttp上の一連の操作の際に、データを引き継ぐための仕組み

セッションは、シンプルな方法で個々のユーザーのデータを格納する仕組みで、 個々のユーザーに対して一意なセッション ID を用意します。 これを用いて、複数ページにまたがるリクエストの間で状態の情報を永続させることができます。

元:http://php.net/manual/ja/session.examples.basic.php

phpだと session_start() して$_SESSION見てって言うのがこれ。
セッションハイジャックとかでセキュリティ問題になるのもこれ。

④GoogleAnalyticsのセッション

②とかなり近いけど、こっちはGoogleさんの定義がある。

セッションとはユーザーがウェブサイトやアプリなどに積極的に関わっている期間を指します。すべての使用状況データ(スクリーン ビュー、イベント、e コマースなど)はセッションと関係します。

アナリティクス アカウントでは、セッション数とユーザー数の両方が測定されます。セッション数は、サイトを訪問したすべてのユーザーにより開始された個々のセッションの数を表します。ユーザーがサイトで 30 分以上操作を行わなかった場合、それ以降の操作は新しいセッションと見なされます。サイトを離れたユーザーが 30 分以内に同じサイトに戻ってきた場合は、同じセッションとして扱われます。

下記ページで解説しているのがこれ。
セッション | Web担当者Forum

⑤apache(webサーバー)のセッション

これは①側・ネットワークTCP/IPのセッションと考えて良さそう。

セッションを張ってhttpのリクエスト/レスポンスの送受信を行う。

 - apache, インフラ, ネットワーク, 違い

  関連記事

mysql 内部結合・外部結合違い inner join,left join,right join

参考サイト]http://mathemathiko.hatenablog.com …

NATとIPマスカレードとポートフォワーディングの意味整理

NATとは プライベートIPアドレスとグローバルIPアドレスを変換する。プライベ …

nagiosってなにができるんだっけ① 画面の見方 メニュー説明 自分メモ

nagiosのwebインターフェースで見られる情報っていったい何があるのっていう …

mautic利用時の.htaccess設定(クロスドメインとアクセス制御)

mauticをインストールは下記参照。 http://qiita.com/bez …

mauticを動かすまでにやったこと

①サーバーの用意とMauticのインストール 下記サイト参照でほぼOK http …