ネットワーク技術とは、ここでは主にインターネットにおける通信に関する技術についての説明とする。いろいろな技術の経緯を経て、現在におけるネットワーク技術は以下の技術に集約されていると言ってよいだろう。
層 | 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も実質アプリ内における実装となっているので、明確に分かれている印象が薄いが、下記に説明するソケットライブラリがそれにあたるため、その意味では分離されていると認識することもできる)
現代のネットワークの技術的根幹にあたる、インターネット技術の中心技術である、TCP/IP技術においての、いろいろな定義及びその値について解説する。
データリンク層の代表は、Ethernet(イーサネット)だろう。通常パソコンをネットに繋げるというと、パソコンとブロードバンドルーターをRJ45のジャックを持ったイーサネットケーブルで接続することが多いと思われる。
通常、イーサネットの通信において、信号の伝送中にノイズを拾い、エラーを含むフレーム(イーサネットではパケットと呼ばず、フレームと呼んでいる)が到着し、FCS(CRC値)が違っている場合には、上位層にエラーを通知する。
イーサネットに関するフォーマットは、実はこれ以外にも「IEEE 802.3 Raw」「IEEE 802.3 with LLC(802.2)」「IEEE 802.3 with SNAP」などがあるが、アプリプログラマーが意識する必要はないだろう。
インターネットにおいての技術的概念の中心に位置する物が、IPである。IPv4, IPv6という2つのIPフォーマットが存在し、IPv4フォーマットでは、IPアドレスを4バイトで表現するのに対し、IPv6では16バイトで表現される。IPv4とIPv6は共存して存在でき、現状、少しずつIPv6技術に移行を始めているが、コストの観点から、その進捗は良いとは言えない状況である。IPパケットヘッダのサイズは、IPv4が20-bytes、IPv6が40-bytesとなる。
IPv4のヘッダレイアウト
IPにおいても、チェックサムを利用したエラー検出機能を持っているが、IPv4では、いろいろな装置(MTU値が固定でない装置群)に対応するために、パケットの断片化(フラグメンテーション)を行いパケットが分割される可能性があるため、チェックサムはヘッダー領域のみに対して行っている。通常は上位レイヤーでデータ部のエラーチェックを保証する。
現在のネットワークの大半を支えているTCP技術は、IPの上位レイヤーとして存在し、通信の信頼性を担保する複雑ではあるが、重要な技術となっている。
TCPが通信の信頼性が確保される高度な通信であるのと同時に、ルーターなどのネットワークを構成する機器においては、そのオーバーヘッドも非常に大きくなっているため、通信の信頼性を落とす事で、それらオーバーヘッドを極力減らしたプロトコルが、UDPである。
UDPの特徴はチェックサムによるエラー検出を行いエラーが存在するパケットの自動破棄までは行うものの、破棄されたパケットの再送要求は行われない。そのため再送が必要な場合には、より上位のレイヤーなどで対応する必要がある。ただし、通常は映像のストリーミングなどに利用される事も多く、少ないエラーパケットが発生してもそのサービスには大きな影響を与えないサービスに利用されるプロトコルのため、再送が必要ない場合も多い。
TCPやUDPでは、ポート番号という値を利用してアプリケーションなど、より上位層の為の接続機能を提供している。
ポート番号 | 概要 |
0~1023 | Well Known Port(WKS、ウェル・ノウン・ポート)。特権ユーザーや管理者モードで動作するサービスが利用するポート。直訳して「よく知られたポート」と呼ばれることもある。Internet Assigned Numbers Authority (IANA)で規定している。 |
1024~49151 | Registerd Port(登録済みポート)。登録されたサービスが利用するポート |
49152~65535 | Dynamic Port/Private Port。動的なアプリケーションなどで利用するポート |
通常アプリケーションは、このポート番号のWKSの部分において通信の最初のネゴシエーションが行われ、実際の通信用のDynamic PortをOSに分けてもらい、実際のアプリ間での通信は、この割り振られたDynamicPortで行われる手順がおおい。
また標準的なネットワークアクセス・プログラミングにおいては、ソケット機能を利用しポートとアプリケーションのバインド(接続)を行う場合が殆どであり、実際のポート利用においては、あくまでソケット機能を経由して利用される。
ルーティングプロトコルである、RIP同様、AS内でのルーティングを主に司るもので、RIPと違いルーティング情報のルーター同士の更新が、IPアドレスとルーター名だけでなく、AS内の全体の情報を持ち、また情報交換には差分のみを用いる、RIPの進化型のルーティングプロトコルと見なせる。
http://www.ospf.org/
http://www.quagga.net/