この記事シリーズでは、インターネットで用いられている通信プロトコルであるTCP/IPで、通信が送信元から宛先に届くまでに起こっていることをミクロ視点で解説します。
あらゆる技術について言えることですが、コンピュータ内部で起こっているミクロな挙動の理解は、その後の技術の学習や実務で必ず役に立ちます。
- ネットワークエンジニアになりたい人
- サーバ担当でネットワークも知っておきたい人
- IT系の営業で話の幅を広げたい人
- とにかくITの教養を身につけたい人
このような人たちにオススメの記事です。
是非ともご覧ください。
【本シリーズ】
ヘッダー、ペイロード、カプセル化
最初に今回の記事で出てくるヘッダー、ペイロード、カプセル化を解説します。
ITでは、用語と定義をきちんと理解しているか否かで理解スピードが大きく異なります。
急がば回れで時間をかけてでも理解しましょう。
- ヘッダー:送信データにつける宛先・送信元・中身の情報など。
- ペイロード:送信するデータそのもの。宛先などを表すヘッダー以外の部分。
- カプセル化:データにヘッダーをつけること。ヘッダーというカプセルでデータを包むようなイメージの為、そう呼ばれる。
通信制御用ヘッダー(L4ヘッダー)
送信データは小さく分けられてから別の機器宛に送信されるまで、複数のヘッダーで何回もカプセル化されます。
まず最初につくヘッダーは通信制御用のヘッダーです。
通信制御用のヘッダーには、TCPヘッダーとUDPヘッダーがあります。
まずは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)ヘッダー、(分割された)送信データが含まれます。
イメージ図は以下の通りです。
ネットワーク内の送信元と宛先を示すヘッダー(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:エラーをチェックするための値が含まれるフィールド。
以下にイメージ図を記載します。
IEEE802.11 ヘッダー(無線LANヘッダー)
無線LANで通信する時には、IEEE 802.11 ヘッダーというヘッダーを付けます。
フレーム
イーサネットヘッダーや無線LANヘッダーでカプセル化されたデータはフレームと呼びます。
IPヘッダーでカプセル化されたデータはパケットと呼びますが、イーサネットヘッダーでカプセル化されたデータは「フレーム」と呼びます。
イメージを図示すると以下の通りです。
フレームは、上をイーサネットヘッダーで、下をFCSで挟んでいます。
OSI参照モデル
最初に書いてしまいますが、個人的にはこのOSI参照モデルというものはあまり好きではありません。
なぜならネットワークを理解する上で、何かと誤解の元になるからです。
ただ、今日のネットワークエンジニアリングとのかかわりが深く、説明を省くことが難しいので、以下に記載します。
繰り返しになりますが、OSI参照モデルは誤解の元になりがちですので、注意して読んでください。
歴史的背景
まず、歴史的背景を説明します。
コンピュータができた頃から、コンピュータ間で通信をしたいという考えは当たり前にありました。
コンピュータ間で通信をするには、両方のコンピュータが同じ通信規約(プロトコル)を用いてデータをやりとりする必要があります。
ただ、70年代〜80年代は、IBMやアップル社など色々な会社がそれぞれのプロトコルを独自開発して、コンピュータ間の通信をする機器を製造していました。
当然、別のプロトコルを用いる別の会社の製品間では通信はできません。
これでは何かと不便ですので、ISO(国際標準化機構)という組織が、通信機能について定義しました。
それが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
記事にしてみて、改めて通信では細かいやりとりがあるんだなと思いました。
ただ、今回の記事は通信全体を理解するにあたってとても大事な基礎となる知識ですので、覚えておいたら絶対に損はありません!
次回こそ機器の通信について書きます。是非ともお読みください (๑╹ω╹๑ )
それでは (*゚▽゚)ノ