ネットワークエンジニア

TCP/IP通信が送信元から宛先に届くまで_01(ヘッダーとカプセル化)

この記事シリーズでは、インターネットで用いられている通信プロトコルであるTCP/IPで、通信が送信元から宛先に届くまでに起こっていることをミクロ視点で解説します。

あらゆる技術について言えることですが、コンピュータ内部で起こっているミクロな挙動の理解は、その後の技術の学習や実務で必ず役に立ちます

  • ネットワークエンジニアになりたい人
  • サーバ担当でネットワークも知っておきたい人
  • IT系の営業で話の幅を広げたい人
  • とにかくITの教養を身につけたい人

このような人たちにオススメの記事です。

是非ともご覧ください。

【本シリーズ】





ヘッダー、ペイロード、カプセル化

最初に今回の記事で出てくるヘッダー、ペイロード、カプセル化を解説します。

ITでは、用語と定義をきちんと理解しているか否かで理解スピードが大きく異なります

急がば回れで時間をかけてでも理解しましょう。

通信をする時には、最初に送信するデータを決まった大きさに分けます。
小さく分けたほうが、データの送信において何かと扱いやすいからです。
そして、小さく分けた個々のデータに、宛先・送信元・中身の情報などを記載したラベルのようなものを添付し、送信します。
このラベルをヘッダーと言います。
そして、ヘッダーが付けられた送信するデータをペイロードと言います。
また、ペイロードにヘッダーをつけることをカプセル化と言います。
 
コンピュータがデータを(LANケーブルなどに)送信する前に、このカプセル化を行います。

  • ヘッダー:送信データにつける宛先・送信元・中身の情報など。
  • ペイロード:送信するデータそのもの。宛先などを表すヘッダー以外の部分。
  • カプセル化:データにヘッダーをつけること。ヘッダーというカプセルでデータを包むようなイメージの為、そう呼ばれる。

通信制御用ヘッダー(L4ヘッダー)

通信制御用ヘッダーはL4ヘッダーと呼ばれることもあります。
理由についてはこの記事の後半で説明します。次項、次々項で出るL3ヘッダーL2ヘッダーもこの記事の後半で解説します。

送信データは小さく分けられてから別の機器宛に送信されるまで、複数のヘッダーで何回もカプセル化されます。

まず最初につくヘッダーは通信制御用のヘッダーです。

通信制御用のヘッダーには、TCPヘッダーUDPヘッダーがあります。

まずはTCPから解説します。

TCPヘッダー

TCPは通信する端末間で通信状況などの情報を常に連携し通信制御するプロトコルです。

TCPの仕組みを実現するのが、通信データに付与されるTCPヘッダーです。よって、TCPヘッダー内には、通信を制御するための色々な情報が入っています。

TCPの通信では、通信が開始する際に対向(通信先)の端末やサーバなどと通信に関する情報をやり取りします

通信が始まってからも常に情報をやりとりし、お互いの状態やデータの送受信状況を確認しながらデータの送受信を行います

データの送受信が完了したら、通信の終了についてもお互いに通知しあいます

TCPプロトコルで通信が開始されてから終了するまでを、「TCPセッション」と呼びます。

このように、対向の機器と常に情報をやりとりするのでコネクション型の通信制御プロトコルと呼ばれます。

Webサイトの閲覧、メール、ファイル送信など、全てのデータが送信されなければならない様な通信で使われます。

TCPヘッダーは以下の様に構成されています。

ヘッダーの各フィールドについての詳細は、別の記事で解説します。

UDPヘッダー

UDPは、通信する端末同士でお互いの端末の情報をやり取りしない通信制御プロトコルです。

TCPのコネクション型に対して、UDPはコネクションレス型と呼ばれます。

通信の開始や終了などの情報はやりとりしません。TCPと違いセッションもありません。

音声通信、ストリーミング配信、DNSなど、必ずしも全てのデータがやりとりされる必要がない通信で使われます

UDPを実現するのがUDPヘッダーで、以下の様に構成されています。

UDPヘッダーの各フィールドについても、別の記事で解説します。

ネットワーク外の送信元と宛先を示すヘッダー(L3ヘッダー)

データに通信制御用のヘッダーをつけたら、次はネットワーク外の送信元と宛先を示すヘッダーをつけます。

ネットワーク外の宛先を示すヘッダーはIPv4ヘッダーとIPv6ヘッダーなどがありますが、ここではIPv4ヘッダーのみ解説します。

IPv4ヘッダー

IPv4ヘッダー(以下、IPヘッダー)は、以下のように構成されています。

送信元と宛先のIPアドレスのほか、プロトコル番号生存時間(Time To Live, TTL)などの情報が格納されています。

簡単に解説すると以下の通りです。

  • 送信元IPアドレス:送信元のIPアドレスを示す
  • 宛先IPアドレス:宛先のIPアドレスを示す
  • プロトコル番号:上位プロトコルを示す。TCPは6番で、UDPは17番。
  • TTL:パケットが何個のルータを経由するかを示す。

パケット(IPデータグラム)

IPヘッダーでカプセル化されたデータをパケットもしくはIPデータグラムと呼びます。

つまり、パケットの中には、IPヘッダー、TCP(もしくはUDP)ヘッダー、(分割された)送信データが含まれます。

イメージ図は以下の通りです。

「IPのペイロード」といった場合には、通常は「TCPヘッダー + 送信データ」のことを指します。実際にエンジニアと会話する場合には、文脈によって異なる場合もあり得るので、できるだけ文意を汲んで会話しましょう。

ネットワーク内の送信元と宛先を示すヘッダー(L2ヘッダー)

ネットワーク外の送信元と宛先を示すヘッダーを付けたら、次はネットワーク内の送信元と宛先を示すヘッダーをつけます。

TCP/IPでは、IPアドレスとは別に、機器自体を表すMACアドレスという識別子も用いて通信しています

ネットワーク内部での送受信は、このMACアドレスで制御します。

TCP/IP では、MACアドレスでネットワーク内の宛先を識別し、IPアドレスでネットワークを超えての宛先を識別する、という設計になっています。

(この説明の「ネットワーク内外」の意味がわからなければ、以下参考記事をご一読ください)

MACアドレス

MACアドレスとは、

全てのTCP/IP通信をする部品(LANケーブル差込口や無線LANアダプタなど)に付与される、他の機器と重複しない48bitの識別子

です。

16進数(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f)の12桁で、

12:34:56:78:9a:bc

もしくは

12-34-56-78-9a-bc

の様に表記します。

MACアドレスは、コンピュータに搭載されている通信する部品(LANケーブル差込口や無線LANアダプタなど)全てに、工場で製造される際に、原則1個ずつ付与されます

デスクトップPCのLANポートにも、ノートPCの無線LANカードにも付与されてます。

LANポートが4個あればMACアドレスも4個あります。

厳密にいうと、通信する部品にはMACアドレスが記載されたROMが搭載されています。

通信する部品が給電された時に、そのROMからMACアドレスを読み取り、該当部品はMACアドレスを取得することになります。

イーサネットヘッダー

LANケーブルや光ファイバーを用いての通信をする時に、イーサネットヘッダーというヘッダーを付けます。

イーサネットヘッダーには、送信元と宛先のMACアドレスの他、プリアンブルタイプFCSというデータが格納されます。

簡単に解説すると以下の通りです。

  • プリアンブル:ここからイーサネット通信が始まります、ということを示すデータ列が格納されるフィールド。※この記事で後ほど詳述します。
  • タイプ:上位プロトコルにIPv4(もしくは他のプロトコル)が使われています、ということを示すデータ列が格納されるフィールド。
  • FCS:エラーをチェックするための値が含まれるフィールド。

以下にイメージ図を記載します。

イーサネットのプリアンブルが持つ機能は本来L1に分類される機能ですが、イーサネットはL2と呼ばれます。
この相違はOSI参照モデルとTCP/IPの相違に起因します。
詳細は、この記事の最後の部分で解説します。

IEEE802.11 ヘッダー(無線LANヘッダー)

無線LANで通信する時には、IEEE 802.11 ヘッダーというヘッダーを付けます。

IEEEは「アイトリプルイー」と読みます
IEEE 802.11 は無線LANの規格ですが、無線規格は細かい点で相違があります。
その相違を表すために、最後にアルファベットをつけて区別します。
IEEE 802.11ac, IEEE 802.11n といった具合です。
そして、今話題のWi-Fi 6は、IEEE802.11axです
無線LANヘッダーもイーサネットと同じ様に送信元・宛先MACアドレスや、プリアンブル、FCSが格納されます。
無線LANヘッダーについては、別記事で詳述する予定です。

フレーム

イーサネットヘッダーや無線LANヘッダーでカプセル化されたデータはフレームと呼びます。

IPヘッダーでカプセル化されたデータはパケットと呼びますが、イーサネットヘッダーでカプセル化されたデータは「フレーム」と呼びます

イメージを図示すると以下の通りです。

フレームは、上をイーサネットヘッダーで、下をFCSで挟んでいます。

上図を見て、パケットとフレームでそれぞれ何を表すかを把握しましょう。
そういった細かい区別をちゃんとできると、会話や文章の理解力が大きく違ってきます。

OSI参照モデル

最初に書いてしまいますが、個人的にはこのOSI参照モデルというものはあまり好きではありません。

なぜならネットワークを理解する上で、何かと誤解の元になるからです。

ただ、今日のネットワークエンジニアリングとのかかわりが深く、説明を省くことが難しいので、以下に記載します。

繰り返しになりますが、OSI参照モデルは誤解の元になりがちですので、注意して読んでください。

歴史的背景

まず、歴史的背景を説明します。

コンピュータができた頃から、コンピュータ間で通信をしたいという考えは当たり前にありました。

コンピュータ間で通信をするには、両方のコンピュータが同じ通信規約(プロトコル)を用いてデータをやりとりする必要があります。

ただ、70年代〜80年代は、IBMやアップル社など色々な会社がそれぞれのプロトコルを独自開発して、コンピュータ間の通信をする機器を製造していました。

当然、別のプロトコルを用いる別の会社の製品間では通信はできません。

これでは何かと不便ですので、ISO(国際標準化機構)という組織が、通信機能について定義しました。

それがOSI参照モデルです。

OSI = Open Systems Interconnection
ISO = International Organization for Standardization
紛らわしいですが、別物です。
別段覚える必要はありません。「へー」と思ってもらえれば十分です。
そして、このOSI参照モデルは、現在インターネットなどで使われているTCP/IP とは全く別物です。
一部継承されている概念はありますが、全くの別物です。
OSI参照モデルは、理念としては素晴らしいですが、実装が難しいために広く普及することはありませんでした。
ただ、理念はとても有用ですので、現在に至るまで一部の用語は残っています。
この記事で用いた通り、ネットワークエンジニアリングでL2、L3などの言葉がよく使われますが、これはOSI参照モデルの名残です。

OSI参照モデルの7層

OSI参照モデルでは、通信機能を7つの層(レイヤー)に分けています。

TCP/IPとの関連も併せて、以下の表に記載します。

第○層OSI参照モデルでの名前TCP/IPで該当する機能
第7層アプリケーション層通信データ
第6層プレゼンテーション層なし
第5層セッション層なし
第4層トランスポート層TCP, UDP など
第3層ネットワーク層IPv4, IPv6 など
第2層データリンク層イーサネット、無線LANなど
第1層物理層LANケーブルや光ケーブルなど

ご注意いただきたいのは、前述の通りTCP/IP とOSI参照モデルは別モノということです。
※よって、TCP/IPを説明するこの記事では、OSI参照モデルの各層の説明は省きます。

そのため、各層とTCP/IPのプロトコルは、必ずしもぴったり一致するわけではありません。TCPは第4層と第5層にまたがる、とも言えますし、イーサネットは第1層にも関わっている、とも言えます。

ただし、一般的にTCP, UDPは「L4」と呼ばれます。また、IPルーティングをする機器は「L3機器」などと呼ばれ、イーサネットヘッダを見て通信を制御する機器を「L2スイッチ」などと呼びます。

ネットワーク機器でも、通信データを見て通信を制御するファイヤーウォールは、L7ファイヤーウォールと呼ばれることもあります。

L+数字で呼ばれるものは、OSI参照モデルの各層を意味しています。覚えておきましょう。

まとめ

TCP/IPでの通信が端末を出てから、対向機器に届くまでを書こうと思っていましたが、ヘッダーとカプセル化だけで1回分の分量になってしまいましたw

記事にしてみて、改めて通信では細かいやりとりがあるんだなと思いました。

ただ、今回の記事は通信全体を理解するにあたってとても大事な基礎となる知識ですので、覚えておいたら絶対に損はありません!

次回こそ機器の通信について書きます。是非ともお読みください (๑╹ω╹๑ )

それでは (*゚▽゚)ノ

-ネットワークエンジニア
-, ,