プログラマー志望なら必読!コンピューターの仕組みをゼロから解説する入門ガイド
執筆:Danielle Ormshaw
あなたのコンピューターの唯一の目的は、0と1という数字のかたちで情報を送受信することです。
この概念の重みを初めて理解したとき、私はすっかり魅了されてしまいました。0と1の羅列だけで、どうやってこれほど複雑なやり取りを実現できるのでしょうか?
私はコンピューターサイエンスの教科書を読み漁り、インターネット上の情報を徹底的に調べました。それでも、全体がどのようにつながっているのかを理解するのに苦労しました。この記事は、私自身が学習を始めた頃に見つけていればよかったと願うガイドです。
人間は「十進法」を使って数を伝える
人間が数字を使ってコミュニケーションするときは、十進法(デシマル)を用います。十進法には10個の数字(0〜9)があり、その数字がどの桁(列)に置かれているかによって意味が決まります。例として、十進数の「148」を見てみましょう。この数字を目にしたとき、あなたは無意識のうちに次のようなステップを踏んでいます。
画像提供:Danielle Ormshaw
- 一番右の数字に10の0乗を掛ける。
- 真ん中の数字に10の1乗を掛ける。
- 一番左の数字に10の2乗を掛ける。
- ステップ1〜3の出力を合計する。
この仕組みのおかげで、「百四十八(148)」という正しい意味を導き出せるのです。
十進法では、常に各桁の数字に「10の何乗か」を掛けます。表の左側に新しい桁を追加するたびに、指数は1ずつ増えていきます。このため、十進法は「基数10」の記法であると言われます。意外と簡単ですね?
コンピューターは「二進法」を使って数を伝える
一方、コンピューターがコミュニケーションを取るときには、よく似た仕組みを使います。二進法(バイナリ)には2個の数字(0と1)しかなく、十進法と同じ方法で分解できます。ただし今回は、基数10ではなく基数2で考える点が異なります。
二進数「110」を例に考えてみましょう。コンピューターがこのバイナリコードを解釈するとき、次のステップを踏みます。
画像提供:Danielle Ormshaw
- 一番右の数字に2の0乗を掛ける。
- 真ん中の数字に2の1乗を掛ける。
- 一番左の数字に2の2乗を掛ける。
- ステップ1〜3の出力を合計する。
ここでも、左側に新しい桁を追加するたびに指数を1つ増やしていきます。
インターネットは情報を運ぶための「物理的なシステム」
バイナリコードで情報を表現できることが分かりましたが、実際にはどのように機能しているのでしょうか?
インターネットは、Amazonの配達ドライバーのようなものです。荷物を往復させて届ける代わりに、「ビット(bit)」を配送します。送るのが写真でも文書でも関係ありません。インターネット上のあらゆる情報はビットとして表現されます。各ビットは単一の二進値(0または1)を持ち、8つのビットが集まると「バイト(byte)」になります。
画像提供:Danielle Ormshaw
ファイルをダウンロードするとき、サイズがキロバイトやメガバイト単位で表示されることがありますよね。キロバイトは約1,000バイト、メガバイトは約100万バイトです。
こうしたバイナリ情報の伝送には、主に3つの方式があります。
- 電気信号による伝送(銅線ケーブル)
- 光ファイバーによる伝送
- 無線による伝送
これらのシステムを支える物理インフラは、インターネットサービスプロバイダー(ISP)が提供しています。
インターネットに接続された機器には、必ず固有のアドレスがある
Amazonで商品を注文するとき、配達員は住所をもとに正しい場所へ荷物を届けます。インターネットもまったく同じ仕組みで動いています。
Googleで検索するとき、私たちのリクエストは「IPアドレス」と呼ばれる固有の番号列へ送られます。リクエストには大量のビットとともに、送信元デバイスのIPアドレスも含まれています。これは手紙の「返信先住所」のようなもので、受け手はどこからリクエストが来たのかを把握できるのです。
とはいえ、Googleにアクセスするときに、ブラウザに数字の列を直接入力することはありません。では、コンピューターはどこへリクエストを送ればよいのかを、どうやって知るのでしょうか?
インターネットはプロトコルとチェックポイントの連携で動いている
そこで登場するのが、ドメインネームシステム(DNS)です。DNSは、人間が読めるWebアドレス(URL)を数値のIPアドレスへ変換します。もしDNS自身が該当するアドレスを知らない場合は、相互に接続されたサーバーのネットワークへ問い合わせて答えを見つけます。
画像提供:Danielle Ormshaw
2台のデバイスが通信するとき、情報は「パケット(packet)」と呼ばれる小さな単位で送られます。多くの場合、情報は複数のパケットに分割されます。それぞれのパケットには、情報の断片(バイト列)と、送信元・宛先両方のIPアドレスが含まれています。
パケットは、交通整理の仕組みを使ってネットワーク内を移動します。ルーター(router)はパケットが通れる経路を追跡し、最も「安価な」経路を選びます。ここでの「安価」とは、通常、混雑が最も少ない経路を意味します。さらにルーターは、国際政治といった技術以外の要因まで考慮することがあります。
パケットはネットワークの中でそれぞれ別の経路を通ることがあり、順序不同で目的地に到着することも珍しくありません。では、ネットワークはこれをどのように処理しているのでしょうか?
ここで活躍するのが、伝送制御プロトコル(TCP)です。TCPは在庫チェック係のように振る舞います。すべてのパケットが揃っていれば、受領確認(ACK)を送信元へ返します。もし欠けていれば、TCPは配達への「署名を拒否」し、不足しているパケットの再送を要求します。
画像提供:Danielle Ormshaw
まとめ
DNSが人間が読めるWebアドレスをIPアドレスへ変換する。情報はパケットとして分割・輸送され、受け取られる。パケットの中身はビットという形のバイナリ情報であり、電気ケーブル、光ファイバー、無線ネットワークがこれらのビットをIPアドレス間で運んでいる――これこそが、インターネットの基本構造です。
次のステップへ
この記事が基礎の理解に役立ったなら、拍板やTwitterフォローで応援してもらえると嬉しいです。Happy coding!
ちなみに、freeCodeCampのオープンソースカリキュラムは無料で学べ、これまで40,000人以上の人々を開発者の仕事へと導いてきました。まずは無料で学習を始めてみましょう。
-
Gmailをオフラインで使う方法|設定手順とセキュリティ対策をわかりやすく解説
Gmailは、今やほぼすべての人が利用している定番のメールアプリです。「メール」という言葉がそのまま「Gmail」を指すほど広く浸透しており、多機能なメールクライアントとして高い人気を誇ります。 実は、少し設定を変更するだけで、Gmailはインターネットに接続していない状態でも使えるようになります。オフライン中でも既存のメールを閲覧したり、新規メールを作成したりでき、再びオンラインに戻ると自動的に送信されます。出張先や移動中など、通信環境が不安定なシーンで非常に便利な機能です。 オフラインGmailを有効にする手順 設定方法はとてもシンプルです。まず、ブラウザでGmailにログインし、画面右
-
ファイブアイズ、ナインアイズ、フォーティーンアイズとは?国際監視同盟の正体と活動内容
VPNユーザーなら「ファイブアイズ」「ナインアイズ」「フォーティーンアイズ」という言葉を耳にしたことがあるかもしれません。しかし、それ以外の場面では、映画『007 スペクター』を除けば、これらの用語が大きく取り上げられることはあまりありませんでした。とはいえ、映画の描写はかなり正確です。これらは政府間でデータ収集(スパイ行為)と共有を取り決める国際的な諜報同盟なのです。聞いたことがなくても心配いりません。チャーリー・チャップリンやジョン・レノン、ネルソン・マンデラも知らなかったでしょう。しかし彼らに関する情報は、この「目」たちの間で共有されていたのです。 ファイブアイズ(Five Eyes)