Edit
ネットワーク技術総論

ネットワーク技術とは、ここでは主にインターネットにおける通信に関する技術についての説明とする。いろいろな技術の経緯を経て、現在におけるネットワーク技術は以下の技術に集約されていると言ってよいだろう。

ISO(Open Systems Interconnection)参照モデル概要具体例
7アプリケーション層具体的な通信サービス(例:HTTPやメール等)HTTP, DHCP, SMTPなど
6プレゼンテーション層データの表現方法(例えばEBCDICコードのテキストファイルをASCIIコードのファイルへ変換する)SMTP, FTP, Telnetなど
5セッション層通信プログラム間の通信の開始から終了までの手順(接続が途切れた場合、接続の回復を試みる)TLS(SSL), NetBIOSなど
4トランスポート層ネットワークの端から端までの通信管理(エラー訂正、再送制御等)TCP, UDPなど
3ネットワーク層データ中継規定。IP単位によるネットワーク接続(IPプロトコル利用時)。ルーティングを行ってセグメントを超える事ができる。IP, ARP, RARP, ICMPなど
2データリンク層ネットワークセグメント単位での接続。MACアドレス to MACアドレスでの通信。この層は通常2つのサブ・レイヤに分割され、誤りの検出を行う論理リンク制御(LLC: Logical Link Control)と、回線とのデータの受け渡しをするメディア・アクセス制御(MAC: Medium Access Control)とからなる。イーサネット, PPP, フレームリレーなど
1物理層物理的な1対1の接続を規定。コネクタのピンの数、コネクタ形状の規定等。銅線-光ファイバ間の電気信号の変換等光ケーブル、同軸ケーブル、電話線など

この中で6と7の層は、実質的に層として分割していないアプリが多い。(5も実質アプリ内における実装となっているので、明確に分かれている印象が薄いが、下記に説明するソケットライブラリがそれにあたるため、その意味では分離されていると認識することもできる)

Edit
インターネット技術について

現代のネットワークの技術的根幹にあたる、インターネット技術の中心技術である、TCP/IP技術においての、いろいろな定義及びその値について解説する。

Edit
データリンク層

データリンク層の代表は、Ethernet(イーサネット)だろう。通常パソコンをネットに繋げるというと、パソコンとブロードバンドルーターをRJ45のジャックを持ったイーサネットケーブルで接続することが多いと思われる。

通常、イーサネットの通信において、信号の伝送中にノイズを拾い、エラーを含むフレーム(イーサネットではパケットと呼ばず、フレームと呼んでいる)が到着し、FCS(CRC値)が違っている場合には、上位層にエラーを通知する。
Ethernet_Frame_Header.gif
イーサネットに関するフォーマットは、実はこれ以外にも「IEEE 802.3 Raw」「IEEE 802.3 with LLC(802.2)」「IEEE 802.3 with SNAP」などがあるが、アプリプログラマーが意識する必要はないだろう。

Edit
IP(ネットワーク層)について

インターネットにおいての技術的概念の中心に位置する物が、IPである。IPv4, IPv6という2つのIPフォーマットが存在し、IPv4フォーマットでは、IPアドレスを4バイトで表現するのに対し、IPv6では16バイトで表現される。IPv4とIPv6は共存して存在でき、現状、少しずつIPv6技術に移行を始めているが、コストの観点から、その進捗は良いとは言えない状況である。IPパケットヘッダのサイズは、IPv4が20-bytes、IPv6が40-bytesとなる。
IPv4のヘッダレイアウト
IP_Packet_Structure.gif
IPにおいても、チェックサムを利用したエラー検出機能を持っているが、IPv4では、いろいろな装置(MTU値が固定でない装置群)に対応するために、パケットの断片化(フラグメンテーション)を行いパケットが分割される可能性があるため、チェックサムはヘッダー領域のみに対して行っている。通常は上位レイヤーでデータ部のエラーチェックを保証する。

Edit
トランスポート層のプロトコル

Edit
TCPについて

現在のネットワークの大半を支えているTCP技術は、IPの上位レイヤーとして存在し、通信の信頼性を担保する複雑ではあるが、重要な技術となっている。
TCP_Packet_Header.gif

Edit
UDPについて

TCPが通信の信頼性が確保される高度な通信であるのと同時に、ルーターなどのネットワークを構成する機器においては、そのオーバーヘッドも非常に大きくなっているため、通信の信頼性を落とす事で、それらオーバーヘッドを極力減らしたプロトコルが、UDPである。
UDP_Packet_Header.gif

UDPの特徴はチェックサムによるエラー検出を行いエラーが存在するパケットの自動破棄までは行うものの、破棄されたパケットの再送要求は行われない。そのため再送が必要な場合には、より上位のレイヤーなどで対応する必要がある。ただし、通常は映像のストリーミングなどに利用される事も多く、少ないエラーパケットが発生してもそのサービスには大きな影響を与えないサービスに利用されるプロトコルのため、再送が必要ない場合も多い。

Edit
ポート番号について

TCPやUDPでは、ポート番号という値を利用してアプリケーションなど、より上位層の為の接続機能を提供している。

ポート番号概要
0~1023Well Known Port(WKS、ウェル・ノウン・ポート)。特権ユーザーや管理者モードで動作するサービスが利用するポート。直訳して「よく知られたポート」と呼ばれることもある。Internet Assigned Numbers Authority (IANA)で規定している。
1024~49151Registerd Port(登録済みポート)。登録されたサービスが利用するポート
49152~65535Dynamic Port/Private Port。動的なアプリケーションなどで利用するポート

通常アプリケーションは、このポート番号のWKSの部分において通信の最初のネゴシエーションが行われ、実際の通信用のDynamic PortをOSに分けてもらい、実際のアプリ間での通信は、この割り振られたDynamicPortで行われる手順がおおい。

Edit
ソケット(セッション層)について

また標準的なネットワークアクセス・プログラミングにおいては、ソケット機能を利用しポートとアプリケーションのバインド(接続)を行う場合が殆どであり、実際のポート利用においては、あくまでソケット機能を経由して利用される。

Edit
ルーティングプロトコル

Edit
RIP

Edit
OSPFとは

ルーティングプロトコルである、RIP同様、AS内でのルーティングを主に司るもので、RIPと違いルーティング情報のルーター同士の更新が、IPアドレスとルーター名だけでなく、AS内の全体の情報を持ち、また情報交換には差分のみを用いる、RIPの進化型のルーティングプロトコルと見なせる。

Edit
Install

http://www.ospf.org/
http://www.quagga.net/