アットウィキロゴ
ネットワークプログラミングをする上で必要な知識です。
こんなに覚えなければならないのか!と面倒ですね・・・。
というわけで面倒な方は後で覚えればいいです。

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アドレスの例外
 以下の示す範囲の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