💭

インターネット概論~インターネットプロトコルスイートとSSL/TLS

2021/07/18に公開

インターネットプロトコルスイート

インターネットプロトコルスイートとは、異なるネットワークの相互接続を容易に実現することを可能にした、通信規格群のことです。

表1に示しているのが、インターネットプロトコルスイートの階層と使用される主なプロトコルです。

表1

階層 主なプロトコル
アプリケーション層 HTTP、DNS、SMTP
トランスポート層 TCP、UDP、QUIC
インターネット層 IPv4、IPv6
ネットワークインターフェース層 Ethernet、Wi-Fi

それぞれの階層について、詳しく見ていきます。

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

同じネットワーク内の機器とデータ通信するためのプロトコルです。

Ethernet

Ethernetは、ネットワークインターフェース層で有線のネットワークを提供する技術です。ハードウェアを含めた、様々な規格で提供されている有線LANの技術の総称のことを表します。

10BASE-T、100VASE-TX、1000BASE-Tのような方式が登場しました。それぞれ、10Mbps、100Mbps、1000Mbps(1Gbps)に対応する伝達速度を持っています。

※bpsはbit per secondの略で、伝達速度を表す単位です。1bpsは1秒間に1ビットのデータを転送できることを表します。

伝達速度の発展とともに、ケーブルにも様々な種類が登場しました。CAT5e、CAT6、CAT6aが主流で、基本的に数字が大きくなるほど、伝送速度が上がります。

Wi-Fi

無線でのネットワークを提供するのが無線LANです。無線LANで最も有名なのが、IEEE 802.11で、IEEE 802.11を使用した無線LANのことをWi-Fiと呼びます。

IEEE 802.11には、2.4GHz帯の周波数を使用する方式と、5GHz帯の周波数を使う方式の2種類があります。2.4Ghz帯のほうが規格としての歴史が古く、対応している機器が多いことがメリットです。デメリットとしては、様々な家電製品で利用されているため、家電干渉が起こりやすくなります。5Ghz帯のほうは、安定的に通信できることがメリットです。2.4Ghz帯と比べて、対応していない機器があったり、電波が遠くまで届かない等のデメリットがあります。

インターネット層

ネットワークインターフェース層は隣の機器との直接通信を提供するレイヤでしたが、インターネット層は複数機器を経由した通信を提供するレイヤです。

インターネット層で使われるプロトコルにはIPv4とIPv6の大きく分けて2つがあります。IPv4の設計当初は今の規模の巨大なネットワークが構築されることは想定されていなかったため、さまざまな問題が発生しました。そこで、問題を解決するためにIPv6が登場しました。IPv4は今でも主流のプロトコルですが、徐々にIPv6が使用されるようになりつつあります。

IPv4

複数機器のネットワークを実現するためには、それぞれの機器を識別する必要があります。IPv4では、IPアドレスという番号をそれぞれの機器を一意に特定するための番号として使用します。

IPアドレスは全部で32ビットあり、8ビットごとに.で区切って表現されます。約43億のアドレス空間があります。IPv4の設計当初は43億もあれば十分だと考えられていましたが、今では世界の人口は70億人で、なおかつ、個人がスマートフォン、タブレット、PCなど複数機器をインターネットに接続することが当たり前になり、不足しています。実際、IPアドレスはすべての領域の割り当てを完了しています。このような、課題を解決するために導入が進んでいるのが、IPv6です。

IPv4のIPアドレスには、プライベートIPアドレスと呼ばれるIPアドレス領域があります。これは、外部からアクセスできない、プライベートなネットワークでのみ使用できるIPアドレスです。Iアドレス節約のため、プライベートなネットワークでは、プライベートIPアドレスを使用するようになっています。

IPv6

IPv6では、IPアドレスを128ビットまで拡張しています。これは約3.4×10の38乗という数字のアドレス空間となっており、十分な数のアドレスが確保できます。

トランスポート層

インターネット層のプロトコルが提供する機能を、より便利に使えるような機能として提供するのがトランスポート層の役割です。トランスポート層にはTCPとUDPという2つのプロトコルが主に使われてきました。近年は、QUICという、新しいトランスポート層のプロトコルも使われ始めています。

TCP

トランスポート層のプロトコルとして最も使われいるのがTCPです。

TCPは、欠損パケットの再送処理、到着するパケットの順番の保証などの機能を提供します。これにより、送信元からのデータが送信先に正確に転送されることが保証されます。

TCPはコネクション型のプロトコルで、通信を開始する前に3ウェイハンドシェイクという方法を用いて、お互いの通信可能状況を確認します。事前にお互いの状況を確認してから通信を開始することで、コネクションの信頼性を高めています。

同じ機器どうしでも異なる通信が使えるような複数コネクション機能を提供しています。そのため、TCPではポート番号という番号でコネクションの区別をします。予めよく使うアプリケーション層のプロトコルには、ポート番号が予約されています。たとえば、HTTPでは80番が使われます。

UDP

UDPは、コネクションレス型で、通信の信頼性も保証せず、通信相手の応答も待たずにデータを送信するプロトコルです。

高速な通信が必要な用途に向いています。また、データの再送も行わないため、データ欠損しても大きな問題が発生しない、動画や音声のストリーミングのような通信に向いています。

UDPでも、複数コネクション通信に対応しており、TCPと同じように、ポート番号によって複数コネクションの区別をするようになっています。

QUIC

UDPの上位レイヤとして、高速/高信頼性のプロトコルとして実装されているのがQUICです。QUICでは暗号化通信が統合されてより効率的に処理ができるようになっています。

アプリケーション層

トランスポート層のプロトコルまでは、ネットワークの機能を提供するのが役割でした。そのネットワーク基盤を使って、どのような用途として使用するのかを決めるのが、アプリケーション層のプロトコルの役割です。

HTTP

HTTPは、ブラウザがWebサーバーと通信するときに使用するプロトコルです。もともとはHTMLのデータ転送を主な用途としていましたが、Webの技術の発展にともない、様々な機能追加とバージョンアップが行われていきました。詳細は、別記事に記載します。

DNS

IPアドレスはコンピュータには処理しやすいですが、人が覚えたり区別したりするのは困難です。そこで、IPアドレスに、「www.sample.com」のようなホスト名とよばれる名前をつけて、人はホスト名を使い、実際に通信する際にIPアドレスに変換して通信する方法が考案されました。

そのために、ホスト名からIPアドレスを知る必要があり、ホスト名に対して、IPアドレスを応答するサービスであるDNSが考案されました。

ドメイン

DNSですべてのホスト名とIPアドレスの対応表を管理するのは、膨大なデータ量となり現実的ではありません。そこで、ドメインという、ホスト名のグループを単位として、各ドメインの保持者が自分の対応表だけを管理するようにしています。世界中に広がった分散データベースとして機能するように設計されています。

レジストリとレジストラ

DNSに登録できる情報は、レジストリと呼ばれる中立性を持った機関で管理されています。実際のドメインの販売や管理はレジストリと契約を結んだレジストラと呼ばれるドメイン登録業者が担当します。

SMTP

Eメールを送信するためのプロトコルが、SMTPです。SMTPはEメールを送信するための機能だけ提供しており、受信にはPOP3やIMAPといった、別のプロトコルが必要になってきます。

SSl/TLS

暗号化通信を実現するために、トランスポート層とアプリケーション層の間に作られたのがSSLです。SSLは使用されていますが、現在ではTLSというプロトコルがSSLを引き継いで利用されています。

TCPとUDPでは暗号化通信をサポートしていなかったため、SSL/TLSは別のプロトコルとして提供されています。

QUICでは、最初から暗号化通信を前提として設計されているため、TLSを内包して使用しています。

参考書籍

WEB+DB PRESS Vol.122

Discussion