歴史から学ぶ通信の仕組み

# はじめに
こんにちは、genimuraです。

GENEROSITY Advent Calendar Day 23です。

はじめに、今ご覧になっているこの記事がどのようにして皆さんのスマホやパソコンに表示されているのかを説明出来ますか？

この記事が表示される仕組みは、インターネットを通じて行われます。まず、あなたのデバイス（スマホやパソコン）がウェブブラウザを使って特定のURLにアクセスします。このリクエストは、インターネットを介してサーバーに送信されます。サーバーはそのリクエストを受け取り、対応するウェブページのデータを返します。このデータは、HTML、CSS、JavaScriptなどの形式で構成されており、ブラウザがそれを解釈して画面に表示します。これによりこの記事を読むことができるのです。


ではインターネットとは何なのか、どのようにして通信が行われているのか、その通信の仕組みを詳しく解説していきたいと思います。
**URLにアクセスしたとき**の**アクセス**ってそもそもどんなことが起きているのか、ブラウザで検索したら何で情報が返ってくるのかという部分を、電波・信号等の原理からインターネットの起源を元に解説していきたいと思います。

::: note warn
これを知ったからといって、Web開発やサイト制作のレベルが上がるというわけではありません。
ただ、こういった知識を知っていると、エンジニアとして深みが増すカモ
:::

# 想定対象読者
 - 初学者・非エンジニア
 - ITパスポートや情報処理技術者試験の受験予定の方

# 1. はじめに：通信って何？
通信と一言で言うと、情報をある場所から別の場所へ伝達することです。
まずは、人類の通信の歴史について現代まで軽く見てみましょう。

## 1-2. 通信の歴史
通信は、広義で言ってしまえば会話も通信です。
長距離の通信では先史時代から使われてきました。
狼煙は紀元前7世紀頃から使われてきたみたいですね。
人や馬を使ったいわゆる駅伝制なんかも通信の一つです。

また、手紙・郵便なども通信の一種です。
![Frame 1 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730384/1254325a-3c80-4563-112c-79ef76222e00.png)


電気を利用した音声通信(電話)が発明されるまで、物理的に情報を伝達してきていました。
歴史的には、有線通信と呼ばれる、音声を振動板で検知しそれを銅線で伝える電話が19世紀後半に発明されました。
その後有線通信の方法が見つかったわずか10年後、1895年にマルコーニさんが電波を使った通信に成功します。
その後は電波を使った通信手法が増えていき、以降はどのように品質良くする(より高速に・ロスを無くす)かという研究が進み、先人の知恵によって考案・発明されていきます。
![Frame 2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730384/9dcd2636-2b5b-c3b0-393d-754b47908304.png)


### 1-3. 電波って何？
電波は目に見えないですが、そこに電波がある認識は出来ていると思います。
電話やチャットをしているときに(最近はほとんどないですが、)「電波悪い」って言いますよね？
ただ私達は日常生活で電波を利用することが当たり前になりすぎていて、電波って何？って聞かれると意外と答えられない方は多いと思います。

::: note
振動を電気に変換してそれを銅線に乗せて音を届ける、という有線通信の仕組みについてはこれ以上説明しません。
詳しく知りたい方は電話の歴史について調べてみるといいと思います。
:::

電波とは、一言でいうと、空間を伝わる電気です。
なぜ空間を伝わるかというと、金属に電流が流れると、電界と磁界が発生し、発生した電磁界の中で振動をしていき、連鎖反応的に伝播していくためです。(詳細は省略しますので興味があったら調べてみてください)
この後も色々と続きますが、大事なのは、**電波は上下しながら進んでいく**ことです(いわゆる周波)。これだけ覚えて貰えれば大丈夫です。
有線通信が発生した振動を伝えるように、無線通信では電波を利用して振動を伝えることが出来ます。

# 2. コンピュータって何？
通信技術と密接に紐づいてきますので、知っておくとこの後の話が入ってきやすいと思います。
これも歴史から振り返りましょう。

## 2-1. コンピュータの歴史
通信技術は物理的な方法よりも早く遠方の場所へ情報を伝えることができる性質上、すぐに軍事利用されるようになります。また、別軸として、計算機が台頭し始めます。
20世紀以降、複雑な計算は機械を使った計算機を利用して計算をさせました。

そこで一つ問題が起きました。それは通信の傍受です。通信が傍受されてしまうと、情報が筒抜けになってしまうので、いつどこで何をしてくるのかが敵国にバレてしまうので致命的です。
そこで、通信情報を秘匿するために、様々な暗号化技術が発明されました。有名なのが、第二次世界大戦でドイツが利用した「エニグマ」だと思います。
当時エニグマは複雑な暗号生成をすることが可能で、その解読のために、イギリスでは現代コンピュータの基礎となる計算機が作られました。

## 2-2. コンピュータにおける数の数え方
先述の通り、計算処理とコンピュータは密に紐づいています。
戦後間もなくして、情報理論の父と呼ばれるクロード・シャノンが『通信の数学的理論』にて、ビットを情報の基本単位と定義し、その後のコンピュータ科学や情報技術全般で中核的な概念となりました。

::: note
### 2進数について簡単に解説
2進数とは、0と1の2つの数字のみを使用する数の体系。
コンピュータの世界において、電子部品がオン(通電)かオフ(非通電)の2つの状態しか取り扱えないためです。
2進数では、右から左へと数を数え上げるとき、1桁目が2の0乗(1)、2桁目が2の1乗(2)、3桁目が2の2乗(4), ...というように各桁が2のべき乗に対応します。
10進数になおすときは、1になっている桁に対応した2のべき乗の和で求めることが出来ます。
ex.) 1010→ 2^1(2桁目) + 2^3(3桁目) = 10

ちなみに指数えで2進数を適用すると1023まで数えられます。(気になる人は調べてみてください。[桜井さんもFEの作品数を数えるのに使ってました](https://youtu.be/xAssd5p6LZM?si=P_oAlv8ZslYzDgVa&t=442))
:::

それまでの機械式や電気機械式では、計算のために物理的なレバーやギアを使って電気的なリレーを行っていましたが、真空管やトランジスタ、集積回路といった電気信号を使用した電子コンピュータが発明されていきます。

## 2-3. 電子コンピュータが出来たことによる影響
電子コンピュータの発明は、20世紀の科学技術の中でも重要な技術革新です。
コンピュータの技術革新は、情報をデジタル形式で処理・保存する能力を向上させ、後のインターネットの登場へと繋がります。

1950年代では、トランジスタを使用(真空管よりもコンパクトで量産しやすい)したコンピュータが現れました。
1960年には、集積回路(IC)が導入されコンピュータの小型化・量産が始まります。これにより民間企業でも使用出来るになりました。


::: note
### トランジスタを簡単に解説
トランジスタとは、電流や電圧を制御し、電気信号の増幅やスイッチのオン/オフの役割をするものです。
半導体を用いて作られています。半導体とは、電気を通す金属などの導体と、ゴムなどの絶縁体の中間の性質を持ったものです。

### 集積回路を簡単に解説
トランジスタの他にも、抵抗・コンデンサ・ダイオードなどの電子部品があります。
それらの電子部品を半導体の基板上にひとまとめしたものが集積回路です。
一言でいうと、ちっちゃいのに電気信号を伝えるのがすごい速いものです。
:::

# 3. インターネットって何？
「通信の仕組みとかは何となくわかったけど、じゃあどうやってNetflixやYoutubeなどの動画視聴できるの？、LINEやSlackでチャットできるの？」ということにはまだ回答ができないので、次はインターネットについて説明をしていきます。
これまでと同様にインターネットも歴史から振り返ってみましょう。

## 3-1. インターネットの歴史
インターネットの起源は、1969年にアメリカ国防総省の研究プロジェクトであるARPANETの設立に遡ります。ARPANETは、異なるコンピュータネットワーク間でのデータ通信を可能にするため開発されました。
このプロジェクトは、分散型ネットワークの概念とパケット交換技術を導入し、これがインターネット技術の基礎となりました。

1980年代に入ると、コンピュータネットワークは世界中に広がり始め、インターネットプロトコル（IP）とトランスミッションコントロールプロトコル（TCP）が標準化されました。これにより、異なるネットワークが互いに通信できるようになり、インターネットの概念が現実のものとなりました。

1990年代には、世界中でインターネットの利用が急速に拡大しました。特に、1991年にティム・バーナーズ＝リーによって発明されたワールドワイドウェブ（WWW）は、インターネットの利用を一般大衆に広める重要な役割を果たしました。ウェブブラウザの開発と共に、インターネットは情報の共有、コミュニケーション、商取引のための基本的なプラットフォームとなりました。

電子コンピュータの発明からインターネットの普及に至るまでのこの歴史は、情報技術の進歩がいかに人類の生活を変革したかを示しています。現代社会におけるコミュニケーション、教育、ビジネス、エンターテインメントの多くの側面が、この技術革新によって根本的に変化しました。

## 3-2. プロトコルって何？
通信するためのフォーマット(規格)のようなものです。

### 3-2-1. 世界初のプロトコルについて
世界初のプロトコルは、1960年代に開発されたNCP（Network Control Protocol）です。NCPは、ARPANET（Advanced Research Projects Agency Network）のために設計されたプロトコルで、異なるコンピュータ間でのデータ通信を可能にするためのものでした。
NCPは、ARPANET上でのデータ通信を管理するためのプロトコルで、データの送受信、接続の確立と終了、エラーの検出と修正などの機能を提供しました。1969年にARPANETの初期段階で導入され、データ通信を実現するための最初のプロトコルとして重要な役割を果たしました。

1970年代後半から1980年代初頭にかけて、NCPはTCP/IPプロトコルスイートに置き換えられました。TCP/IPは、データの信頼性と効率的な送受信を実現するための高度なメカニズムを提供し、1983年1月1日にARPANETは公式にTCP/IPに移行しました。これがインターネットの誕生とされています。
NCPはスケーラビリティの問題やエラー検出と修正の限界から、大規模なネットワーク環境では効率的に機能しませんでした。そのため、TCP/IPに置き換えられました。

#### TCP/IPの登場と優位性
TCP/IPは、スケーラビリティが高く、大規模なネットワーク環境でも効率的に機能します。TCPはデータの信頼性を確保するための高度なエラー検出と修正のメカニズムを提供し、IPはデータのルーティングを担当します。これにより、インターネットの基盤として広く採用されることとなりました。

NCPは、インターネットの初期の発展において重要な役割を果たしましたが、TCP/IPの登場により、その役割は終わりを迎えました。それでも、NCPはネットワークプロトコルの歴史において重要な一歩であり、現代のインターネット技術の基礎を築いたプロトコルの一つです。

### 3-2-2. TCPの歴史的背景
TCP（Transmission Control Protocol）は、インターネット上でデータを信頼性高く送受信するためのプロトコルです。その歴史は、1970年代に遡ります。

#### 初期の開発とTCP/IPの誕生
TCPの開発は、ARPANETプロジェクトの一環として始まりました。1974年、ヴィントン・サーフとロバート・カーンは、TCPの概念を提案しました。1970年代後半から1980年代初頭にかけて、TCPはさらに発展し、IP（Internet Protocol）と組み合わせてTCP/IPプロトコルスイートが形成されました。1983年1月1日、ARPANETは公式にTCP/IPに移行し、これがインターネットの誕生とされています。

::: note
プロトコルスイートって何？

プロトコルスイートとは、ネットワーク通信を行うための一連のプロトコルの集まりのことです。これらのプロトコルは、データの送受信、エラーの検出と修正、データの暗号化など、さまざまな通信機能を提供します。代表的なプロトコルスイートには、インターネットプロトコルスイート（TCP/IP）があり、これはインターネット上での通信の基盤となっています。

TCP/IPプロトコルスイートは、以下のような階層構造を持っています：

1. **アプリケーション層**：HTTP、FTP、SMTPなどのアプリケーションプロトコルが含まれます。
2. **トランスポート層**：TCPやUDPが含まれ、データの信頼性や順序性を保証します。
3. **インターネット層**：IPが含まれ、データのルーティングを担当します。
4. **ネットワークインターフェース層**：物理的なネットワーク接続を管理します。

このように、プロトコルスイートは、異なるプロトコルが協力してデータ通信を実現するための枠組みを提供します。
:::

### 3-2-3. UDPの歴史的背景と特徴
UDP（User Datagram Protocol）は、インターネット上でデータを迅速に送受信するためのプロトコルです。1980年にデイビッド・P・リードによって設計されました。UDPは、TCPと同じインターネットプロトコルスイートの一部として開発され、IPと組み合わせて使用されます。

#### UDPの特徴
UDPは、接続の確立やデータの順序性、信頼性を保証しません。そのため、データの送信が迅速であり、リアルタイム性が求められるアプリケーションに適しています。例えば、ビデオストリーミング、オンラインゲーム、VoIP（Voice over IP）などのアプリケーションでは、UDPが広く使用されています。

#### UDPの利点と欠点
UDPの主な利点は、データの送信が迅速であることです。接続の確立やエラーの検出と修正を行わないため、オーバーヘッドが少なく、データの送信が高速です。しかし、その一方で、データの信頼性や順序性が保証されないため、データが失われたり、順序が入れ替わったりする可能性があります。

#### 現代のUDP
現代のインターネットにおいても、UDPは依然として重要なプロトコルです。特に、リアルタイム性が求められるアプリケーションにおいては、UDPの迅速なデータ送信が不可欠です。さらに、UDPは、QUIC（Quick UDP Internet Connections）などの新しいプロトコルの基盤としても使用されています。QUICは、Googleによって開発されたプロトコルで、UDPの利点を活かしつつ、TCPの信頼性を提供することを目指しています。

### 3-2-4. UDPの使用例
UDPは、以下のようなアプリケーションで広く使用されています。

1. **ビデオストリーミング**：リアルタイムでのビデオ配信において、データの迅速な送信が求められます。
2. **オンラインゲーム**：リアルタイムでのゲームプレイにおいて、低遅延の通信が重要です。
3. **VoIP**：音声通話において、リアルタイムでのデータ送信が必要です。

これらのアプリケーションにおいて、UDPはその迅速なデータ送信の特性を活かして、重要な役割を果たしています。

#### TCPの進化と現代のTCP
1980年代から1990年代にかけて、TCPはインターネットの急速な拡大と共に進化しました。TCPのフロー制御、エラー検出、再送機能などのメカニズムは、データ通信の信頼性を高めるために重要な役割を果たしました。また、TCPは、HTTP、FTP、SMTPなど、多くのアプリケーション層プロトコルの基盤として使用されるようになりました。

現代のインターネットにおいても、TCPは依然として重要なプロトコルです。TCPの基本的な設計は変わらないものの、パフォーマンスの向上やセキュリティの強化を目的としたさまざまな改良が行われています。例えば、TCPの高速化を図るためのTCPウィンドウスケーリングや、セキュリティを強化するためのTCPセグメントの暗号化などが導入されています。

### 3-2-5. IPの歴史的背景と特徴
IP（Internet Protocol）は、インターネット上でデータを送受信するための基本的なプロトコルです。IPは、1970年代にインターネットの前身であるARPANETの一部として開発されました。

#### IPの特徴
IPは、データの送信先を指定するためのアドレス（IPアドレス）を使用します。IPアドレスは、ネットワーク上の各デバイスに一意に割り当てられます。IPは、データの送信経路を選択するためのルーティング機能も提供します。これにより、データは最適な経路を通って送信されます。

#### IPの利点と欠点
IPの主な利点は、異なるネットワーク間でデータを送受信できることです。これにより、インターネット上のどこにいてもデータを送信することが可能です。しかし、IPはデータの信頼性や順序性を保証しないため、データが失われたり、順序が入れ替わったりする可能性があります。

#### 現代のIP
現代のインターネットにおいても、IPは依然として重要なプロトコルです。特に、IPv4からIPv6への移行が進んでおり、IPv6はより多くのアドレス空間を提供し、セキュリティやパフォーマンスの向上を図っています。IPの進化は、インターネットの発展と共に続いており、その基本的な設計は現代の多くのアプリケーションにおいて重要な役割を果たしています。

### 3-2-6. TCP/IPが標準規格になった経緯
TCP/IP（Transmission Control Protocol/Internet Protocol）は、インターネットの基盤となる通信プロトコルとして広く採用されています。その標準規格化の経緯は、以下のような歴史的背景と技術的進化に基づいています。

#### 初期の開発と実験
TCP/IPの開発は、1970年代にアメリカ国防総省の高等研究計画局（DARPA）のプロジェクトとして始まりました。Vint CerfとBob Kahnが中心となり、異なるネットワーク間でデータを送受信するためのプロトコルを設計しました。彼らの研究は、パケット交換技術を基盤とし、信頼性の高いデータ通信を実現することを目指していました。

#### ARPANETでの実装と標準化
1970年代後半、TCP/IPはARPANETで実装され、実際のネットワーク環境でのテストが行われました。1983年1月1日、ARPANETは公式にTCP/IPを標準プロトコルとして採用しました。この「フラッグデイ」と呼ばれる日を境に、すべてのARPANETホストはTCP/IPを使用することが義務付けられました。

#### 国際的な標準化と普及
1980年代後半から1990年代にかけて、TCP/IPは国際的な標準規格として広く認知されるようになりました。ISO（国際標準化機構）やIETF（Internet Engineering Task Force）などの標準化団体が、TCP/IPの仕様を文書化し、公式な標準として採用しました。これにより、異なるベンダーや組織がTCP/IPを基盤とした製品やサービスを開発・提供することが容易になりました。

#### 現代のインターネットにおける役割
今日、TCP/IPはインターネットの基盤技術として不可欠な存在となっています。TCP/IPの標準化により、異なるネットワーク間での相互運用性が確保され、グローバルなインターネットの発展が可能となりました。TCP/IPは、HTTP、FTP、SMTPなどの多くのアプリケーション層プロトコルの基盤としても機能しており、現代の情報通信技術の中核を成しています。

TCP/IPが標準規格となった経緯は、技術的な革新と国際的な協力の成果であり、その進化は今後も続いていくことでしょう。

### 3-2-7. HTTP/HTTPSの歴史と解説
HTTP（HyperText Transfer Protocol）は、ウェブ上で情報をやり取りするためのプロトコルとして、1989年にティム・バーナーズ＝リーによって提案されました。彼は、CERN（欧州原子核研究機構）で働いていた際に、研究者間で情報を効率的に共有する方法を模索していました。1991年に最初のウェブブラウザとウェブサーバが開発され、HTTPはその基盤技術として採用されました。

HTTPは、クライアント（通常はウェブブラウザ）とサーバ間でリクエストとレスポンスを交換する仕組みを提供します。初期のバージョンであるHTTP/0.9は非常にシンプルで、テキストデータの転送に特化していました。その後、1996年にHTTP/1.0がリリースされ、ヘッダ情報の追加やメディアタイプのサポートなど、機能が大幅に拡張されました。

1997年には、HTTP/1.1が登場し、パフォーマンスの向上や接続の持続性、キャッシュ制御などの新機能が追加されました。これにより、ウェブの利用がさらに広がり、インターネットの普及に大きく貢献しました。

一方、HTTPS（HyperText Transfer Protocol Secure）は、HTTPにセキュリティ機能を追加したプロトコルです。HTTPSは、SSL（Secure Sockets Layer）またはその後継であるTLS（Transport Layer Security）を使用して、データの暗号化と通信の安全性を確保します。1994年にNetscape CommunicationsがSSLを開発し、これがHTTPSの基盤となりました。

HTTPSは、特にオンラインバンキングや電子商取引など、セキュリティが重要なウェブサイトで広く使用されています。2000年代に入ると、GoogleやMozillaなどの主要なインターネット企業がHTTPSの普及を推進し、現在では多くのウェブサイトがHTTPSを標準として採用しています。

HTTP/HTTPSの進化は、ウェブの信頼性と安全性を向上させ、現代のインターネットの基盤を形成しています。これにより、ユーザーは安心してウェブを利用できるようになり、インターネットのさらなる発展が可能となりました。

## 3-3. 結局インターネットとは何なのか(まとめ)
インターネットとは、世界中のコンピュータやネットワークが相互に接続され、情報をやり取りするための巨大なシステムです。インターネットの基盤には、TCP/IP（Transmission Control Protocol/Internet Protocol）という通信プロトコルが使用されています。TCP/IPは、データの送受信を効率的かつ信頼性の高いものにするための一連のルールや手順を提供します。

### インターネットの基本構造
インターネットは、以下のような基本的な構造を持っています。

1. **エンドデバイス**：パソコン、スマートフォン、サーバーなど、インターネットに接続されるデバイス。
2. **ネットワーク機器**：ルーター、スイッチ、モデムなど、データの転送やルーティングを行う機器。
3. **通信回線**：光ファイバー、海底ケーブル、Wi-Fi、衛星通信など、データを物理的に送信するためのインフラ。

### プロトコルの役割
インターネット上でデータをやり取りするためには、さまざまなプロトコルが使用されます。以下はその一部です。

- **IP（Internet Protocol）**：データの送信先を指定するためのアドレス（IPアドレス）を使用し、データのルーティングを行います。
- **TCP（Transmission Control Protocol）**：データの信頼性を確保するためのプロトコルで、データの分割、送信、再送、順序の管理を行います。
- **UDP（User Datagram Protocol）**：リアルタイム性が求められるアプリケーションで使用され、迅速なデータ送信を可能にします。
- **HTTP/HTTPS（HyperText Transfer Protocol/Secure）**：ウェブページのデータを送受信するためのプロトコルで、特にHTTPSはセキュリティを強化しています。

### インターネットの進化と現代の役割
インターネットは、1970年代のARPANETから始まり、TCP/IPの標準化を経て、現在のグローバルなネットワークへと進化しました。現代のインターネットは、以下のような多くの分野で重要な役割を果たしています。

- **情報の共有とアクセス**：ウェブサイト、ソーシャルメディア、オンラインニュースなどを通じて、情報を迅速に共有し、アクセスすることができます。
- **コミュニケーション**：メール、VoIP、ビデオ会議など、さまざまな方法でリアルタイムにコミュニケーションを取ることができます。
- **エンターテインメント**：ビデオストリーミング、オンラインゲーム、音楽配信など、多様なエンターテインメントコンテンツを楽しむことができます。
- **ビジネスと経済**：オンラインショッピング、クラウドサービス、デジタルマーケティングなど、ビジネスの多くの側面がインターネットを通じて行われています。


## まとめ

今回は、通信の仕組み、インターネットの歴史、プロトコル、HTTP/HTTPSの歴史について解説しました。
これらを知るとちょっとだけ今より電波が見えるようになったのではないでしょうか。


## 宣伝

弊社GENEROSITYでは、積極採用を進めております。
興味がありましたらカジュアル面談からお話しましょう！
エンジニア採用ページは[こちら](https://herp.careers/v1/genero/requisition-groups/3abaa8e7-a7f6-4962-89a1-372b86e48903)