TCP/IPとは



TCP/IPはTCPとIPという2種類のプロトコルをまとめた呼称で、TCPとIPは別物ですが基本的にセットで取り扱うためこのようになりました。

プロトコル(Protocol)の本来の意味は、議定書・慣習・手続きなどです。これが通信・コンピュータの領域に持ち込まれました。

通信プロトコルにおいてその意味は、通信規約・通信における約束事・接続手順に変わります。

通信は何らかの情報を伝達することです。歴史的にはのろし・信号旗などのアナログなものやモールス符号なども含まれます。

通信には例えば「…」で「S」を表すという風に、通信し合う両者の間に一定のルールや決まりごとが必要です。

インターネットを介した電子的なデータのやり取りにおいても、送受信するデータの順番や内容はあらかじめ決められています。


TCP/IPの4階層モデル



一般的に使用されるOSI参照モデル(OSI reference model)は全7層のレイヤーで構成されるモデルです。

一方TCP/IPで用いられる4階層モデルはDARPAモデルとも呼ばれ、実際のインターネット上の通信はこちらに沿って行われます。

TCP/IPがどの階層に位置するかを中心に、4階層モデルにおける通信の仕組みの考え方について説明していきましょう。


第1層 ネットワーク・インターフェイス層

ネットワーク・インターフェイス層には以下のプロトコルが含まれます。英語ではLink layerと書かれているので注意が必要です。

  • 有線LAN規格(各種Ethernet・PPP)
  • 無線LAN規格(IEEE802.11)
  • パケット交換方式(Frame Relay)

よりハードウェアに近い階層で、データを物理的な電気信号に変換し伝達します。また同一ネットワーク内の通信も担当です。


第2層 インターネット層

インターネット層には以下のプロトコルが含まれます。

  • インターネット通信(IP)
  • インターネット通知(ICMP)

複数ネットワーク間でのデータ転送に関するプロトコルが用意されている階層です。


第3層 トランスポート層



トランスポート層には以下のプロトコルが含まれます。

  • 伝送制御・管理(TCP・UDP)

この階層は第2層 インターネット層と第4層 アプリケーション層との橋渡しを行う階層です。


第4層 アプリケーション層

アプリケーション層には以下のプロトコルが含まれます。

  • Webコンテンツ送受信(HTTP)
  • ファイル転送(FTP)
  • 電子メール送受信(POP3・SMTP)

アプリケーション層は最も多くのプロトコルを有する、よりソフトウェアに近い階層です。

最近のWebアプリケーション作成時に最も意識するのは、恐らくこの階層のプロトコルでしょう。


IPとは



IP(Internet Protocol・インターネット プロトコル)はインターネット層のプロトコルです。


IPの仕組み

ネットワークにはインターネットなどのグローバルネットワークと、社内ネットワークなどのプライベートネットワークがあります。

IPはネットワーク上の各コンピューターにIPアドレスを割り当て、宛先・送信元の指定を行うことで識別する仕組みです。

グローバルネットワークにはグローバルIPアドレスを、プライベートネットワークにはプライベートIPアドレスを付与します。

IPアドレスはネットワーク上の電話番号のようなもので、各々のIPアドレスを外線の電話番号・内線番号と考えると分かりやすいです。


IPv4とIPv6

さてIPアドレスは同一ネットワーク上で一意に決まっている必要があります。

今まで一般的に使用されてきたIPはバージョン4で、これが俗にいうIPv4(Internet Protocol version 4)です。

IPv4アドレスは後述するパケット構造のヘッダ部に格納される32bitの2進数で、2の32乗通りのIPアドレスを指定できます。

しかし近年IPv4アドレスが枯渇し新規取得が困難になる問題が発生し、解決策として登場したのがIPv6という新しいバージョンのIPです。

IPv6アドレスは128bitの2進数で表せるので、全2の128乗通りのIPアドレスを指定できます。


IPアドレスの構成

IPv4アドレスとIPv6アドレスの構成の違いに触れていきましょう。

IPv4アドレスはネットワーク部とホスト部に分かれます。

ネットワーク部は対象がどのネットワークに属しているかを識別する、電話番号でいうところの市外局番・市内局番のようなものです。

ホスト部はネットワーク上のコンピューターを特定する、電話番号でいうところの加入者番号になります。

IPv6アドレスはプレフィックスとインターフェースIDという構成で、プレフィックスは用途により異なるものです。

IPv6アドレスのインターフェースIDは、IPv4アドレスのネットワーク部に相当します。


TCPとは



TCP(Transmission Control Protocol・トランスミッション コントロール プロトコル)はトランスポート層のプロトコルです。


TCPの仕組み

アプリケーションやプログラムがネットワークを介して、データを送受信するための規約を定義しています。

TCPは通信開始時に送受信相手となるTCPを確認し、接続を確立・維持しながらパケットの送受信を行うプロトコルです。

アプリケーション層の上位プロトコルで生成されたデータをパケットに分割し、TCPヘッダを付与してデータの管理に利用します。

郵便物を送る際に用いる伝票や包装のようなものと考えると分かりやすいでしょう。

TCPはパケットの送受信だけでなく、パケット順序の制御・データ誤りの検出・受取確認などの機能も有しています。

通信終了時は送信パケットがなくなった側から手続きを開始し、接続を切断する仕組みです。


TCPとUDPの違い

同階層のプロトコルUDPはTCPのような機能は持っていませんが、その分高速な通信が可能になっています。

UDPはDNS・DHCPなどの簡易なプロトコルや、動画のストリーミング配信のようなリアルタイム性を求められる場面に適しているでしょう。

一方TCPはWebコンテンツ送受信・電子メール送信などの信頼性を重視する場面に用いられるプロトコルです。


イーサネットにおけるTCP/IP設定



ここでは社内ネットワークにおける各開発者PCのイーサネット設定を行うという想定で説明を行います。

配属後のパソコン初期設定でよく行う作業ですので、あやふやな方はこの機会に確認しておくと良いでしょう。


設定画面の開き方(Windows10・macOS)

Windows10で設定画面を開く方法はいくつか存在します。

有線の場合は「設定 > ネットワークとインターネット」を開き、「イーサネット」のリンクをクリックして下さい。

「イーサネットの状態」ウィンドウに表示された「プロパティ」をクリックすると「イーサネットのプロパティ」が表示されるでしょう。

また無線の場合は「設定 > ネットワークとインターネット」で「Wi-Fi」をクリックすると「Wi-Fiの状態」ウィンドウが開きます。

同様の方法で「Wi-Fiのプロパティ」を開いて下さい。

macOSでは「システム環境設定 > ネットワーク」からTCP/IPタブから設定を行うことができるでしょう。


TCP/IPのプロパティ設定



以降、Windowsをメインに解説を進めていきます。

「IPアドレスを自動的に取得する」は即ちDHCP(Dynamic Host Configuration Protocol)を設定することと同義です。

DHCPは動的にTCP/IP設定を行うアプリケーション層のプロトコルで、初期値として設定されているでしょう。

手動でTCP/IP設定を行うには「次のIPアドレスを使う」で、以下の3つの項目を入力する必要があります。

  • IPアドレス(10.0.X.X・192.168.X.X・172.16.X.Xなど)
  • サブネットマスク(255.255.255.0・255.255.0.0など)
  • デフォルトゲートウェイ(10.0.1.1・192.168.1.1・172.16.1.1など)

IPアドレスはネットワーク内で一意でなければならないので、社内のインフラ担当者から設定情報が通知されている筈です。

サブネットマスクはIPアドレスのどこまでがネットワーク部かを表すもので、プライベートネットワークであれば自由に設定できます。

デフォルトゲートウェイは他のネットワークに接続する際に経由する必要があるポイントです。

DNSサーバーについては本題ではないので割愛します。

  • 優先DNSサーバー(192.168.1.1・172.16.1.1など)
  • 代替DNSサーバー(空欄・8.8.8.8など)


TCP/IPの歴史と機能



TCP/IPの機能がどのように定義され強化されたのかについて、その歴史を追いながら簡単に説明しましょう。


IPv4の登場

時を遡れば1974年、IEEEが「A Protocol for Packet Network Intercommunication」という論文を発表したのが事の始まりです。

1973年から1978年までの間は実験的にIPv0からIPv3が使用されています。これはIPv4とはヘッダー部の定義などが異なるものでした。

1983年にARPANET(アーパネット)で世界最初のIPv4ネットワークが誕生します。

実験的なストリーミングプロトコルとしてIPv5も開発されましたが、IPv4の帯域幅が増加したために不要になりました。


IPv6で強化された機能



IPv6は1980年代に仕様策定や調査が進み、1999年頃から割り振りが開始された新しいバージョンです。

理論上枯渇することがないIPアドレスを供給できるという意味で、TCP/IPが機能的に強化されたといえなくもないでしょう。

またIPv6ではIPアドレスが各コンピューターに固有のMACアドレスから自動設定されるようになっています。

加えてIPv6で利用可能なIPoEという接続方式は回線の混雑に強く、通信速度の低下が起こりにくいというメリットがあるようです。


パケット構造の概要



以降はTCPが分割するパケットの構造について、TCPヘッダを中心に見ていきたいと思います。

本項では現在でも主流となっているIPv4と徐々に移行が進んでいるIPv6を紹介しますが、これらのパケット構造の細部は異なるものです。

大きな枠組みは以下のようになります。

  • ヘッダ部
  • オプション部(拡張ヘッダ部)
  • データ部

ヘッダ部はバージョンやプロトコル番号などの基本的な情報のフィールドが格納されている部分です。

オプション部はほとんど使用されることはありませんが、パケット通過ログやルーティングなどの機能で利用されることがあります。

データ部は送信するデータの本体です。

オプション部とデータ部については差異が少ないため、ヘッダ部に焦点を当てて解説を続けましょう。


IPv4パケットのヘッダ部



IPv4パケットのヘッダ部には以下のフィールドが定義されています。

  • バージョン
  • ヘッダ長(IHL)
  • サービス種別(TOS値)
  • データグラム長
  • 識別子(ID)
  • フラグ
  • フラグメント・オフセット
  • 生存時間(TTL)
  • プロトコル番号
  • チェックサム
  • 送信元IPアドレス
  • 宛先IPアドレス

識別子(ID)からフラグメント・オフセットまでは、IPフラグメンテーションに関するフィールドです。

IPフラグメンテーションは大きなパケットを分割し送信する技術のことで、ルーターが対象ネットワークの最大転送単位に合わせて行います。

またプロトコル番号は0から255までの区分値を指定するフィールドで、指定する数値はTCPなら6・UDPなら17です。


IPv6パケットのヘッダ部



IPv6パケットのヘッダ部には以下のフィールドが定義されています。

  • バージョン
  • トラフィック・クラス
  • フロー・ラベル
  • ペイロード長
  • ネクスト・ヘッダ
  • ホップ・リミット
  • 送信元IPアドレス
  • 宛先IPアドレス

IPv4パケットと異なるのはフロー・ラベルの追加・いくつかのフィールドのオプション部への移動・不要なフィールドの削除です。

フロー・ラベルという新しいフィールドはユニキャスト・マルチキャスト通信の際に使用します。

残りの項目については名称が異なるだけでIPv4と同じ役割のものが多いため割愛しましょう。

例えばトラフィック・クラスはIPv4のサービス種別と、ホップ・リミットIPv4のは生存時間と同じです。

ヘッダ長は40byteの固定長になったため、同フィールドは不要になりました。またチェックサム・フラグメンテーションも廃止されています。

IPv6では送信元で最大転送単位を超えないようにパケットを分割し送信する仕組みです。


おわりに



かなり駆け足になってしまいましたが、TCP/IPの概要について理解することはできましたでしょうか。

ネットワークについて調べていけば、最終的には専門書を数冊読破することになると思われます。

体系的にまとめられた情報を技術書から吸収し、実際にネットワークの構築をしてみるのが近道です。

自宅ネットワークを構築できるようになると、仕事やスキル向上だけでなく家族間のデータ共有やゲーム機器の管理などが便利になります。

モチベーションが上がらないという方は、まず身近なところからネットワーク構築に足を踏み入れてみてはいかがでしょうか。