ネットワークプログラミングをする上で必要な知識です。
こんなに覚えなければならないのか!と面倒ですね・・・。
というわけで面倒な方は後で覚えればいいです。
SI参照モデル
通信を行うアプリケーションと、物理的なメディアのプロトコルを
抽象的な概念によって整理した物で、7層から成り立っている。
階層 |
名称 |
役割 |
第1層 |
物理層 |
伝送路の物理的居位層 |
第2層 |
データリンク |
隣接ノードに転送 |
第3層 |
ネットワーク |
経路を選択しデータの中継を行う |
第4層 |
トランスポート |
伝送を行うエンドシステム間での対話 |
第5層 |
セッション |
セッションの手帳の現定 |
第6層 |
プレゼンテーション |
アプリケーションがデータを扱う際の表現形式 |
第7層 |
アプリケーション |
アプリケーション間のデータのやり取り |
下から「アプセトネデブ」と言うと覚えやすいらしいです。
現在最もよく利用されているプロトコルはTCP/IPモデルである。
これも階層構造をなしておりOSI参照モデルと比較すると次のような関係となる。
OSI標準モデル |
TCP/IPモデル |
物理層 |
個別ネットワーク層 |
データリーク層 |
ネットワーク層 |
インターネット層 |
トランスポート層 |
トランスポート層(TCP,UDP) |
セッション層 |
アプリケーション層 TELNET,FTP,HTTP,etc... |
プレゼンテーション層 |
アプリケーション層 |
IPアドレス
ネットワーク上で相手にデータを届ける為の各コンピュータで異なる番号のこと。
IPv4の場合 xxx.xxx.xxx.xxx のようにピリオドで区切られた4つの整数値で表現する。
以下の示す範囲のIPアドレスは、LAN内でそれぞれのLAN用として0と255以外自由に割り振ることができる。
クラス |
範囲 |
利用箇所 |
クラスA |
10.0.0.0 ~ 10.255.255.255 |
企業内LAN |
クラスB |
172.16.0.0 ~ 172.31.255.255 |
学校など |
クラスC |
192.168.0.0 ~ 192.168.255.255 |
家庭など |
127.0.0.1 は自分のIPアドレスを返す為、テスト用として用いられる。
ポート番号とは
1つのPCで複数のアプリケーションが動作している可能性があり、
アプリケーションが直接IP層でやりとりすると、データが混ざってしまう恐れがある。
それを防ぐため、アプリケーションごとのデータを区別するための番号が用意されている。
それがポート(受付口:港)である。
1から順番に65535まで番号付けされていく。ここにはTCPのポートXとUDPのポートXが設定されている。
どのアプリケーションからデータが送られてきたか識別することができる。
ソケットプログラミング
コンピュータ同士で通信するにはコンピュータとコンピュータを「線」で結ぶ必要がある。
線の性質や相手先のOSや環境などをすべて熟知するのは不可能であり作業効率も悪い。
この事から「ソケット」が考えられた。
考え方として
Windowsでファイルの読み書きを例とすると
書き込み
1、CreateFile関数でファイルをオープン(ファイルハンドルで取得
2、ファイルハンドルを使ってWriteFileで書き込む
読み込み
CreateFile関すでファイルをオープン
ファイルハンドルを使ってReadFileで読み込み
となる。
ソケットはこのファイルハンドルによく似ており、ネットワーク間での通信において
Aのコンピュータのアプリケーションがソケットに書き込んだ情報を
Bのコンピュータのアプリケーションが読み出す仕組みになっている。
つまり、ネットワーク通信を開始するには最低でもソケットが2つ必要である。
通信を行うソケットについて
ソケットは同時に存在する必要はなく、1つのソケットが常に使用可能な状態になっていれば良い。
- 常に使用可能な状態のソケット→サーバソケット
- 後から起動してサーバソケット要求を出すソケット→クライアントソケット
サーバソケットには、クライアントが発見できるように名前がついている必要がある。
その後クライアントからの要求を待つことになる。この状態をリスン状態(Listen)と呼ぶ。
クライアントアプリケーションは、ソケットを作成しこのソケットに対しサーバからのデータが書き込まれる。
上記二つが実行されてサーバとクライアントの会話(通信)が成立する。
ストリームソケット と データグラムソケットの2種類がある。
ストリームソケット・・・TCPプロトコルが基本、信頼性が高い
データグラムソケット・・・UDPプログラムが基本、通信速度が速い
最終更新:2011年05月19日 14:25