コンピュータネットワークにおける基礎知識

プロトコル

 データの処理手順やメッセージの規定およびフォーマットのことを指す。

 多様なデバイスにおける通信ではデバイス間で認識を同じくする共通言語が必要である。閉じたネットワークにおいても「特定のデバイス」間における共通言語すなわちプロトコルが必要である。

プロトコルスタック

 プロトコルの組み合わせを階層(レイヤー)的に表現したもの。

  データ通信にはプロトコルを用いることを確認したが、それを実現するには多くの機能や規則が必要になる。すべての機能において用いることができるプロトコルをつくるより、機能ごとにプロトコルを定義してそれらを必要なだけ組み合わせて使ったほうが便利である。
  階層構造を取ることによって、一部のレイヤーの変更が他のレイヤー部分に影響することがないことが利点である。

OSI参照モデル

 通信機能を表す階層構造であるプロトコル・スタックの標準的なモデルのことを指す。

 OSI参照モデルは、データ通信に求められる機能を理論的に整理したモデルである。本モデルは7層のレイヤーで構成されている。低レイヤーほど物理的な通信路に、高レイヤーほど論理的な機能に関する役割をもつ。7層の基本的なロールを説明する。
レイヤー ロール
l7 アプリケーション層 通信を行うアプリケーションとユーザを接続する役割を担う。
l6 プレゼンテーション層 符号化、圧縮や、文字コードの指定などデータの表現形式に関わる。
l5 セッション層 セッションとは、通信の開始から終了までを指す。この階層では、デバイス間のアプリケーションレベルでセッションを管理する。
l4 トランスポート層 通信しているデバイス間の通信管理を行う。(end-to-endにおける輻輳制御)
l3 ネットワーク層 end-to-endの転送経路を管理し、送信元から宛先まで正しくデータを転送する。代表的なプロトコルとしてIP、ICPMなどが挙げられる。
l2 データリンク層 物理的に接続されるローカルな通信を提供する。閉じた環境に構築されるデータ層ネットワークをLANというが、有線LANにおいてEthernetと呼ばれる規格がよく用いられている。
l1 物理層 物理的な伝送媒体そのものを指す。有線では、光ファイバー、ツイストペアケーブル、同軸ケーブルがある。無線であれば、空間が伝送媒体となる。

TCP/IPモデル

現在のインターネットにおいて、アプリケーションのほとんどが準拠している階層型プロトコルのモデル。

TCP/IP階層モデルはDARPAモデルとも呼ばれる。OSIにおける5層より下層のレイヤーは名称が異なるものの、本モデルのレイヤーと実際の機能はほとんど同一であるのに対し、OSIの5層以上に対応するのは、TCP/IPモデルではアプリケーション層というひとつのレイヤーでまとまっている。それは、セッション層以上の処理は一般にアプリケーション側で実装されることだからである。

OSI and TCP/IP model
引用元: https://images.app.goo.gl/RDXy2uEsCmoMGxgX8

パケット交換の基本

 TCP/IPでは、データ通信にパケット交換という手法を採用している。というのも、通信手法はいくつかある。

回線交換 旧来の固定電話などで用いられた。電話局から1本ずつ回線を引き、電話局通しは複数の回線で接続されている。ユーザが電話かけると、電話局で回線をつなぎ変え、相手の電話まで物理的に回線を接続する。このとき、回線を占有することなるため、電話局が他の電話局への回線数が制限される。
パケット交換 回線を占有しない通信方式。送信データをパケットと呼ばれる単位に分割し、各パケットにヘッダーを付与して送信する。

パケット転送

 先程、パケット交換において、送信するデータをパケットと呼ばれる単位にして、転送することを学習した。このとき、パケットは大きくヘッダとペイロードの2つに大別できる。
ヘッダ: 宛先や送信元などのデータ通信における制御情報を載せる部分。
ペイロード: データ本体。

 ヘッダの内容はプロトコルによってビット数に至るまで厳密に定められている。

IPアドレス

 IPでパケットの送信元や送り先を特定するための住所,すなわちアドレス情報として用いられるデータ。

 現在ではIPv4とIPv6の2つのバージョンが利用可能である。IPv4は2進数表記32bit(2^32=43億)で構成されているのに対して、IPv6は2進数表記128bit(2^128=約340澗)で表現されるため、事実上は無限にアドレスを利用できる。徐々にIPv4からIPv6への置き換えが起こっている。

IPアドレスの基本
 今回はIPv4について説明する。可読性を高めるために、”192.188.0.101”のように8bitごとにまとめて10進数で表記することが一般である。32bitのうち前半をネットワーク部、後半をホスト部という。これらを隔てる役割をもつのがサブネットマスクである。
 サブネットマスクも32bitからなるビット列であり、ネットワーク部にあたる桁を1、ホスト部にあたる桁を0とする。例えば、ネットワーク部が24bitである場合、"255.255.255.0"ように記述する。プレフィックス表記では、"/24"である。IPアドレスのホスト部について、ホスト部がすべて0あるいは1の場合のアドレスは、特殊なアドレスであり、LAN内のホストに割り当てられることはない。

ネットワークアドレス: ホスト部がすべて0。eg) 192.188.0.0
ブロードキャストアドレス: スト部がすべて1。eg) 192.188.0.255

グローバルアドレスとプライベートアドレス

グローバルアドレス 世界の唯一のアドレスとなるものであり、正式に申請して割り当てられる。
プライベートアドレス ローカルなネットワーク内で自由に利用されるアドレス。

NAT (Network Address Translation)

プライベートアドレスをもつデバイスを用いてインターネットに接続する際に、それをグローバルアドレスに変換すること。

DNS (Domain Name System)

一般に、インターネット上のwebページにアクセスするとき、"https://"といったURLを用いる。これをDNSという仕組みによって成り立っている。人間の可読性を高めるために、ドメイン名を用いるが、実際にコンピュータでは、IPアドレスを用いている。ドメイン名とIPアドレスを対応付けているのがDNSである。

カプセル化

 TCP/IPでは、ペイロードに対してレイヤーごとのヘッダーをを順に付与することで次のレイヤーに渡し、階層構造をつくる。

TCP/IPにおける典型的なパケット構造は次のようになる。
Ethernet
Header
IP
Header
TCP
Header
Payload FCS
ヘッダ ロール
TCP ヘッダ データ(パケット)の順序番号、再送制御
IP ヘッダ end-to-endのパケット配送に必要なIPアドレスの情報eg) 宛先IPアドレス、送信元IPアドレス
Ethernet ヘッダ LAN内に必要なMACアドレスに関する情報
FCS (Frame Check Sequence) 通信時にデータに不具合が生じていないか検出するために、データの末尾に付与される誤り検出不符号

ヘッダは、パケット配送を制御するためのものであり、データの伝送に直接寄与するわけではない。それぞれ付与されたヘッダに記載する情報を大きくすれば、制御が容易になる一方で、パケット全体の容量も大きくなるため、伝送効率が低下する。このようなトレードオフの関係をオーバーヘッドという。

ルータおよびスイッチのパケット転送

 ルータでのパケット転送について考える。ルータはl3、すなわちインターネット層(ネットワーク層)で動作し、パケットのIPアドレスを用いてend-to-endのパケット転送を行うための機器の名称である。ルータは、IPアドレスと転送先ポートの対応表であるルーティングテーブルを備えており、受信したパケットのヘッダに記載されたIPアドレスをルーティングテーブルにかけ、適切なポートに送る。このとき、ルーティングテーブルはRIP(Route Information Protocol)、IGRP(Interior Gateway Routing Protocol)、BGP(Border Gateway Protocol)などのルーティングプロトコルによって自動的に作成されている。これをダイナミックルーティングと呼ぶ。
 LANにたどりついたパケットは、スイッチによって送信先に向けて中継される。スイッチは一般にl2、すなわちネットワークインターフェース層で動作する機器の名称である。受信したMACアドレスを参照し、適切なポートにフレームを送信する。未知の送信元MACアドレスについて、受信ポートを学習し、フォワーディングテーブルを更新する。宛先MACアドレスが未知の場合は、すべてのポートにブロードキャストする。