※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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

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プログラムが基本、通信速度が速い