明日からちょっとイキれること間違いなし
枕詞に「あんま詳しくないんだけど、、」と付けるとより猛者らしくなりますね
もちろん言葉とナイフは使いようなので(後略)
インターネットって結局どういうものなんだ??
はじめに
ネットワークは色々種類があり、それを組み合わせて(いわばネットワークのネットワーク)できるのがインターネットです。ちなみにルータが組み合わせてくれています。
なので「まず、ネットワークとは?」を見ていきます。
ちなみに、↑から分かるようにインターネットも色々複数ありますが、今私たちが使っている世界規模のインターネットは「いわゆるインターネット」と言うことで、英語では”the Internet”とか”Internet”と書いて、一般名称として(「いわゆるインターネット」かもしれないし、そうじゃないかもしれない)インターネットという時は”internet”と書きます。
まず、ネットワークとは?
ネットワークとは、コンピュータを連結することによって構成されるシステムと言えます。
そんなネットワークを使って、コンピュータユーザはコンピュータからコンピュータへとデータを転送できる。
ラインみたいな一般ユーザが日常的に使うようなアプリケーションを実現するために必要なソフトウェアは様々。
単純なユーティリティ(例えば、データを圧縮・解凍するソフトウェアはユーティリティソフトウェア。ソフトウェアのシステムの中でもOSでない方がユーティリティ。)はもちろんだし、めちゃ大規模なシステムを支えるネットワークソフトウェアはネットワークのインフラと言えます(コンピュータにおけるOSみたいな立ち位置ですね)。
ず
ネットワークの分類
まず規模で分類した一覧を見ます。
PAN( personal area network )
PANスマホとワイヤレスイヤホンをBluetoothで繋ぐのがこれ。
個人の持つコンピュータ同士を数10cmから数mくらい繋ぐ規模。この到達距離によってLANと区別される。ウェアラブル利用を前提としている。
LAN( local area network )ローカルエリアネットワーク
ビル、大学のキャンパス内のコンピュータ、工場内のコンピュータとかがLANで接続するのに向いている。
MAN(metropolitan area network)
LANとWAN(※後述)の間の規模の通信のためのネットワーク。
光ケーブルによって実現する。
都市や市街地をカバーする規模感。狭義には、特定の光ケーブル(1000baseってやつらしいです)を乗りこなせるルーターを使用したネットワークだそう。
WAN(wide area network)
都市間や、地球の裏側まで離れたコンピュータを結ぶこともある規模のネットワーク。
規模以外にも分類する視点はあるので、他の視点から見ていきます。
開放型と閉鎖型(誰でも使えるかどうか)
今私たちが使っているインターネットは開放型。
プロトコル(※後述)などが開放されている(パブリックドメインと言って著作権がなく、使用料金がかからない)。こっちがメジャー。
閉鎖型も一応ある。使用するのにライセンスの契約が必要だが、インターネットから完全に分離されている(サービスによってはインターネットにアクセスできる)ので、自社内のみで安全に使いたい場合などがあるらしい。
開放型であるはインターネットでは、アクセスするポイントごとにファイアウォールというセキュリティを用意している。
バス型とスター型(構造の違い)
ず
スマホの4Gとか5Gの通信はスター型だ。
現在、スター型の通信手段は電波で、アクセスポイントと呼ばれるセントラルマシンが周辺のすべての通信を調整する無線ネットワークで使用されている。
プロトコル
https://kasanimaroblog.comみたいなURLに必ずある”http”はハイパーテキスト転送プロトコルの略です。今ではテキスト以外に動画とか色々転送しますが、昔はほとんどテキストの転送しかしなかったのでその名残です。ちなみにHTMLもハイパーテキストマークアップ言語の略。
プロトコルとは、ネットワークが上手く機能するために、動作に対して設けているルールのこと。(プロトコルという言葉に慣れてなくて気持ち悪いなら当面の間は脳内でルールと言い換えておけばそんなに問題ない)
インターネットを使うにあたって、メールでも電話でもウェブサイトでも同じルールに基づいて設計すればみんな便利だよね、ってことで標準となるルール(プロトコル)が開発されていった。
CSMA/CD(carrier sense, multiple access with collision detection
イーサネット(オンラインゲームガチ勢が言う「有線」のこと。Nintendo Switchとかに接続したりする)を使ったバス型ネットワークで使われていて、メッセージの送受信の制御をしている。
このプロトコルでは、すべてのメッセージはバス上のすべてのマシンに一斉送信される。しかし、メッセージを受け取るのは自分宛になっているコンピュータだけで、自分宛になっていない場合はコンピュータはメッセージを認知・監視はするが、中身を取り出せない。
バス上の通信が落ち着いたのを見計らってメッセージを送信するが、それでも別のコンピュータから同時に送信されたりして衝突(collision)する。その時は各コンピュータがランダムに選んだ休憩時間のあと、また送信を試みる。(人間も同時に話し始めたら、お互い一旦止まって、どっちかがまた話し始める時ありますよね)
お察しの方もいるかもしれないが、このプロトコルはスター型のネットワークでは機能しない。
なぜなら、衝突を検知できないからだ。アクセスポイントを経由しないとコンピュータ同士は通信できないからだ。
なので、無線ネットワークでは衝突は検知するのでなく回避(avoid)するように作られている。
CSMA/CA(~~~~ avoid)
CSMA/CA(~~~~ avoid)と言われる方式(プロトコル)は色々あるが、その中でもIEEE 802.11というプロトコルはWiFiとして知られている。
ただもちろん、全部回避するのは無理なので、衝突した時は人間がメッセージを再送信するしかない。
混雑時にはコンピュータに待機してもらうことで衝突を回避する。
通信チャネルが空いていたらCSMA/CDではすぐに送信していたが、そうではなく少し待って他のコンピュータが使わないことを確認してから送信する。待ち時間の間に他からメッセージが送信されたら、ランダムな時間待ってから送信する。
メッセージの前に短い送信要求を送ってアクセスポイント(セントラル)に他のメッセージを待機させる方式のWiFIもある。
TCP/IP(transmission control protocol/ internet protocol)
インターネットで実装されているたくさんのプロトコルの中でも代表というか有名な2つのプロトコル。
昔インターネットが普及し始めたくらいの時に、このTCP/IPの設定をするの仕事が結構儲かったとブロガーとしても有名なプログラマーの小飼弾さんとあと誰かも言っていた。
ちなみに小飼弾さんが書いた2008年の記事(書評)
https://dankogai.livedoor.blog/archives/51070862.html(文章の癖が強くて面白いですよ)
たまたま目にしたが、2022年に見るとタイムカプセルみたいで面白いなと思った。
後で話すが、インターネットは4つの階層で構成するのが主流。
・アプリケーション層
・トランスポート層(これを実装する方法の1つがTCP)
・ネットワーク層(これを実装する方法の1つがIP)
・リンク層
TCP(transmission control protocol)
配送業者を選ぶみたいなもんで、トランスポート層のプロトコルも選べる。
TCPはメッセージを送信する前に受取手がちゃんと受け取れるかどうかを確認してからメッセージを送信する。接続を確立してから送信する分、効率は下がるが信頼性が高いので、メール送信のように多少時間がかかってもいい場合に使われる。
UDP(User Datagram Protocol)は確認せず直接送るので早い。しかしTCPに比べると信頼性は劣る。とはいえ早いのでDNSルックアップやVoIPのプロトコルに採用されている。信頼性をアプリケーションで多少補える場合もあるそうだ。
IP(internet protocol)
ネットワークは混雑しているところ(ルータがバリバリ稼働中とか)もあるのでちょいちょい迂回しながら通信する。このような作業を実現するためのプロトコルがIPである。
ルータ(router)
rout とは
・(豚とかが)鼻先で地面を掘り返す
・探し出す
という意味で、目的の場所へとメッセージを転送してくれるのでrouterという名がついた。
例えばWiFiネットワークとイーサネットワーク(有線LANで繋ぐやつ)をルータによって連結してインターネットを形成したりする。
インターネット中のすべてのコンピュータには一意なアドレス(これがかの有名なIPアドレス)が割り当てられている。(ネットワーク内でも別にアドレスは割り当てられるので、家のWiFiネットワーク使っているスマホにはアドレスが2つ割り当てられている。)
異なるネットワークにあるコンピュータにメッセージを送る際は、必ず送り先のインターネットのアドレスがセットになっていて、ルータは元々内蔵している転送表をもとに正しい場所に届ける。(正確には、直接ゴールに1発で届けずに、複数のルータを中継するので、目的地のアドレスはずっと保持しつつ、中継するためのアドレスをルータはその都度付与して、届けていく)
家にあるルータ(雑談)
ちなみに、日常会話では(住宅用の)ルータは「WiFi使うためのやつ」くらいの意味ですが、家にあるそれは「(ホーム)ゲートウェイ」かもしれません。
一言で言うと、
ルータ + ONU = ゲートウェイ
家でインターネットにアクセスするには、ONUという光信号をデジタル信号に変換する装置が必要です。
ONUから有線でパソコンに繋げばインターネットが使えますが、普通はスマホとか複数の端末を無線で使いたいので、ルータにONUで変換したデジタル信号をスマホとかに飛ばしてもらいます。
ですが、2つも装置を置くより1つの方がいいので、一体となったものが結構使われていて、それがゲートウェイです。
家に「黒い四角いやつ」が1つしかなければそれはきっとゲートウェイです。(最近はこっちが多いらしいですね)
ゲートウェイという名前は「あるネットワークがインターネットに連結される地点」というとこからだそうです。ゲートウェイという用語は色々な使われ方をしますが、家庭用のWiFiの話をするときにゲートウェイといえば、↑ってことです。
モデム(雑談)
モデムというのを聞いたことがあるかもしれませんが、アナログ信号をデジタル信号に変換する機械のことで、光ファイバーでなくメタル線という金属を使って通信しています。公衆電話もこの回線です。
2024年にアナログ回線で構築されている固定電話網を2024年1月からインターネットを利用したIP網に切り替えるらしいです(NTT東日本・西日本https://www.ntt-west.co.jp/denwa/2024ikou/outline.htmlより)。このことからも分かるように今度はどんどん使われなくなる回線でしょう。ただ光回線と違って停電時も使えるというメリットがあるので使われる場所もあるかもしれません。(これを読んでる人は大丈夫と思いますが、「アナログ回線の工事が〜〜。料金の方が〜〜。」みたいな悪徳業者が現れるでしょうね)
ちなみに、夏はメタル線にセミが卵を産んでメタル線がダメになることがよくあるそうで、孫正義さんがその文句を言っている動画がニコニコ動画にアップされていました(アップされたのは2010年)
通信
ネットワーク中ではコンピュータ同士でめちゃ通信しあっていますが、コンピュータ上で実行するプロセス(OSの制御下でプログラムを実行する動作のこと。ボタン押す→プロセスが完了する→反応が帰ってくる、みたいな)は、お互い色々な動作を調整して目的の作業(メールを送るとか)を完遂するために通信しあう。
このような通信をプロセス間通信と呼ぶ。
その通信の方式を2つ紹介します。
クライアントサーバモデル
クライアント:サーバに要求を出す
サーバ:クライアントの要求に応える
例えば少し昔のオフィスでは、高性能なプリンタをネットワークに繋ぎ、パソコンとかで印刷要求を送っていたそうだ。つまり、プリンタがサーバであり、クライアント(パソコン)の要求に応えている。
↑のような形式で、オフィスのプリンタとパソコンを接続したネットワークはクライアントサーバモデルのアプリケーションと言えますね。
ピアツーピアモデル(P2P, peer-to-peer model)
インターネットメッセンジャー(ラインとか)や、オンライン対戦ゲーム(フォートナイトやクラロワ)はP2Pモデルのアプリケーション。
P2Pというのは、2つのプロセスがネットワーク(orインターネット)経由で通信しあうシステムのこと。なのでP2Pネットワークという言葉は誤用。
ゲームなら、画面をタップしてモンスターを召喚したら、相手はそのモンスターに攻撃して、、、というのを可能にしているシステムがP2Pだ。
P2Pというシステムを用いてネットワーク上で通信している、ということ。
無理やり例えるなら、野球のピッチャーが「カーブを投げる」のではなく「カーブという球種でボールを投げる」という感じか。(まぁ野球なら「カーブを投げる」で何の問題もないですけどね)
P2PとP2Pモデルは大体同じ意味。
「P2Pというシステム・技術を実現したらこんな感じ」というのがP2Pモデルなので、「P2Pモデルを用いて通信する」と言ってもいい。
P2Pモデルがクライアントサーバーモデルにとって替わろうとしている理由の1つは、負担が1つのサーバに集中せずに分散されることだ。
また、違法(コンテンツが著作権違反とか)な場合でも、特定に時間がかかるので、そういう悪用のために使われることも多い。(手間がかかるってだけで、ちゃんと取り締られています)
分散システム
1つのめっちゃすごいコンピュータが壊れたら泣いちゃうので、分散して管理する方法が色々生まれています。代表的なのを3つ紹介します。
クラスタコンピューティング
アメリカの軍が昔PS3買いまくってこれしていた。価格の割に性能がいいらしい。
https://www.gamespark.jp/article/2009/12/10/21258.html
コンピュータを一箇所に集めて協力させて、高い計算能力を実現する。大型のコンピュータに匹敵する計算能力を実現できる割には安く作れる。
複数のコンピュータによって構成されるので、負荷が分散されるし、どれか1つが壊れても全体としては稼働できるので、信頼性が高い。メンテナンスも安く済むらしい。
グリッドコンピューティング
「暗号通貨のマイニングするために、あなたのPCの処理能力貸してください!分前は、、、」的なやつありましたよね。
クラスタコンピューティングのように直接繋ぐわけではなく、沖縄にあるコンピュータと北海道にあるコンピュータでも協力可能。データやアルゴリズムを分散させやすくするために特殊なソフトウェアを含むこともある。
家庭や職場のPCを使っていないときに計算用力をボランティアで提供してもらって、数百万のコンピュータによるグリッドコンピュータがめっちゃ計算が大変な数学や科学の問題を解いているらしい。
クラウドコンピューティング
AWSとかが有名。
自社に高い計算能力のコンピュータがなくても、課金してクラウドコンピューティングを使えば済むので最近(2022)流行っている。
めっちゃ大規模なら自社ですごいコンピュータ買った方が安く済むが、大抵はクラウドでレンタルした方が安く済むからだそう。
クラウドの発展と発電所の発展(雑談)
1776 | 平賀源内が長崎で手に入れたまさつ起電機を修理してエレキテルと名付けた |
1831 | 電磁誘導がファラデーにより発見される |
1870 | 強い電力を生み出せる実用的な発電機が実現した |
1881 | 変圧器が発明されて交流電配が始まった |
1882 | 直流大好きなエジソンが発電機が6台・出力540kWの直流火力発電所を建設 一方ニコラ・テスラは交流モーターのアイディアを実現(テスラの技術が発電所に応用されたのは1896年にできたアメリカのナイアガラの滝による水力発電所で200V,25Hzの発電機を3台使い、35km先まで送電できた。建設のリーダーはウェスティングハウス) |
1887 | 交流火力発電所がロンドンに建設される(10000Vの電圧。10km以上離れた場所に送電できた) 日本で最初の火力発電所が建設される |
1996 | ピカチュウが10万ボルトを出す(ポケモン赤・緑) |
2017 | ピカチュウが1000万ボルトを出す(アニメ) |
現在 | 発電所では27~50万Vで、だんだん減圧していって100Vか200Vで家庭へ届いている |
「10万ボルトって平気なの?」このブログ面白かったです
https://ebisudenryoku.com/blog/1571/
さて、大規模な発電所の誕生よりも昔は、工場や事務所には小型の発電機があり、それぞれの施設で必要な電力を発電していたそうです。
発電所ができて電線が通っていれば大量の電気でも使えるようになりました。
クラウドの発展を類推すると(というか、実際それと似ています)
2010~20くらいは、会社や個人がデータ容量や計算能力の高いコンピュータを持っていて、
クラウドが使えるようになると、ネット環境があれば大量のデータ保存や計算をしてもらうようになるかも。(というか、部分的にそうなってますね)
インターネット
インターネットとはネットワークを連結した集合(いわばネットワークのネットワーク)。
インターネット接続事業者(internet service provider, ISP)(いわゆるプロバイダーってやつ)がネットワークを構築している。
ISPという単語事態はネットワークそのものを指す時もある。
インターネットの階層構造
インターネットには階層構造があり、
ティア1ISP・ティア2ISP・アクセスISP・エンドシステム の4層がある。
ティア1はWAN(世界規模のネットワーク)で構成されている。
めっちゃデカい企業が運営している。
このティア1に接続されているのがティア2だ。
ティア1とティア2は厳密に分けられているわけではないが、こちらは接続範囲は地域的・限定的で、中小企業が運営していることが多い。
これらティア1・2にアクセスするのがアクセスISPだ。
こっちは独立したインターネットであり、イントラネットとわざわざ名前がついているくらいだ。
個別に企業が提供している。
最近のセルラー(スマホの4Gとか)とかモバイルWiFiを提供する企業は、プロバイダーと回線業者が一体化していることもあり、あまり意識しないが。
回線業者はNTTとかフレッツ光とかで、アクセスISP(プロバイダー)はOCNって会社が多分最大手で、他にも100社以上あるが、一般人には馴染みがない。(そりゃそう)
大学も学生にインターネットアクセスを提供するので、大学もアクセスISPを運営しているといえる。(おまけとして、メアドくれたりVPN接続のソフトとか使えたりしますよね)
IPアドレス
IPという名前はインターネットプロトコルに由来している。
インターネットにおいてコンピュータが一意なアドレス(住所)を持っていると便利(というかないとヤバそう)なのでIPアドレスという一意なアドレスが割り当てられています。
ICANN(internet corporation for assigned names and numbers)(アイキャンって読む)というインターネットの運営を調節するための非営利団体がIPアドレスを割り当てている。(2016年に民営化されたらしい)
IPアドレスは現在(2022/6)32ビットの大きさで192.168.0.1みたいに表記されるIPv4と呼ばれるバージョンだ。32ビット→8ビットが4セット→28=256なので0(00000000)~255(11111111)の数字が4つ並んでいる。
これは今(2022/6)も使われているが、数字列のパターンが足りなくなりそうなので、128ビットが普及してきている。IPv6と呼ばれるバージョンで、2025年までに全部切り替わる予定だそう。
(232 ≒ 43億 なので、確かに足りなくなる訳ですね)
しかし、人間は数字の羅列を見てもピンとこないので、ドメインを割り当てる。
ドメイン
例えば、グーグルのドメインはgoogle.comで、IPアドレスは142.250.206.206だ。
人間にとってはドメインの方が見やすいが、インターネット中で通信する時はネームサーバがドメインをIPアドレスに変換する。逆に人間にドメインを見せるときはIPアドレスをドメインに変換する。
こうした変換してくれる仕組み全体をDNS(domain name system)と呼ぶ。
ちなみに、グーグルのIPアドレスを、URL入力するところに直接入力したのでもgoogleのページに飛ぶ。
フェイスブック(31.13.82.36)もできる。
しかし、「阿部寛のホームページ」には飛べない。(222.158.205.72)
楽天(133.237.16.234)もできなかった。
アンパンマンのサイト(121.95.99.5)は「メンテナンス中です」と出た
最近はIPアドレスでアクセスできるサイトは少ないっぽい。
ひとつのサーバーでサイトを複数運営している(マルチドメイン)場合などは、ドメインに対応するIPアドレスのみでは指定のサイトにアクセスできない。(ちなみにカサニマログログも現在(2022/6)IPアドレスでアクセスできません。)
www
https://www.google.co.jpみたいなやつについてるwww
World Wide Webの略。
インターネットの1つの特徴として、ハイパーリンク(私たちは「リンク」って言ってるやつの正式名称)をクリックすれば他の記事に飛ぶことができる。
ハイパーリンクで他のページに文章があるが、その文章をハイパーテキストと呼ぶ。なのでこのページの文章もハイパーテキスト。最近はテキスト(文章)だけでなく動画や画像もたくさんあるので、ハイパーメディアと呼ぶこともある。
ハイパーリンクによって、ハイパーテキストは連結しまくって網のようになる。なのでウェブ(Web)と呼ぶ。
インターネット上で連結しまくると、世界中のハイパーテキストは世界中のハイパーリンクで繋がりまくる。なのでwww(world wide web/ ワールドワイドウェブ)と呼ぶ。
www上のハイパーテキストはウェブページ、(このページも一応ウェブページ)
関連するウェブページの集まりをウェブサイトと呼ぶ。(このサイトも(以下略))
httpとhttpsについて(雑談)
https://www.google.co.jpみたいなやつについてるhttpはハイパーテキスト トランスファー プロトコル(Hypertext Transfer Protocol)の略です。セキュリティを強化したのがhttps(~~~ secure)。
今でもhttpは使われていて、ちょっと探したら今でもhttp://www.ritsumei.ac.jp(立命館大学のHP) やhttp://www.chiseki.go.jp(国土交通省の地籍調査サイト)など、httpsでないサイトもありました。
ちなみに、日本の上場企業のサイトは9割がhttpsで1割がhttpだそうです。(常時SSL化調査レポート
https://www.feedtailor.jp/report_aossl/より)
httpとhttpsはセキュリティが違うというのは、httpsは通信が暗号化されているので通信を傍受し情報を抜き取るのが困難で、httpでは暗号化されていないという点です。
httpのサイト経由でパスワードや住所、電話番号を送るのは気をつけたほうがよさそうです。
公衆の無料WiFiはセキュリティが不十分な場合が多いと言われていて、そのようなWiFiを使ってhttpのサイト経由でパスワードや住所、電話番号を送るのは特に危険でしょう。
もちろんhttpsのサイトならフィッシング詐欺などはゼロというわけではないです。
httpsにするにはSSLサーバー証明書が必要なのですが、誰でももらえるもの(ドメイン認証)もありますし、まぁしょうがないでしょう。
基本的には、明らかに広告が半端ないサイト・ページ遷移しまくるサイト・なんかポップアップしてくるサイト・機械翻訳したような日本の文章のサイト・・・などを避けたのでいいと思いますが、パソコンのブラウザなどならば🔒マークから、詳細な情報を見て、会社名のチェックなどができるので、そういったやり方でも安全性を判断できそうです。
サーバ
なんとなくデータを保存してて、私たちに情報提供してくれるやつでしょ?くらいの人が多いと思います。
色々な種類のサーバを見てみます。
ネームサーバ
ニーモニックアドレス(ドメイン)をIPアドレス(数字の羅列)に変換するためのサーバ。
ニーモニックアドレスとIPアドレスの対応表を保持している。
ネームサーバ全体でDNS(Domain Name System)と呼べばれていて、DNSによって変換するプロセスはDNSルックアップという。
メールサーバ
ドメイン(アクセスISPが管理している)のユーザにメールサービスを提供するためにメールサーバが設定される。
ドメイン内の特定のマシンがメールサーバとしての役割を担う。
ユーザが自分のマシンからメールを送る手順
・メールがユーザ(送り主)の(送り主が利用しているアクセスISPの会社の)メールサーバに送られる
・メールが宛先のメールサーバに転送される
・受取人が(宛先の)メールサーバにアクセスして取り出す(取り出されるまではサーバがメールを保持している)
メールサーバ間でメールを転送したり、ローカルマシンからメールサーバへ新しいメッセージを送信するときのプロトコルはSMTP(Simple Mail Transfer Protocol)と呼ばれる。ただ、SMTPはASCIIコードで符号化されたテキストを送るために設計されている。他のいろんなデータを送信するためにMIME(Multipurpose Internet Mail Extensions)が追加で開発された。
サーバに蓄積されているメールにアクセスするためのプロトコルはPOP3(Post Office Protocol version 3)とIMAP(Internet Mail Access Protocol)のどっちかが使われる。
POP3の方が単純。メッセージをローカルマシンにダウンロードして自由に操作(編集とか)できる。
IMAPはメールサーバ上でメッセージを保存して操作できる。アクセス可能なら誰でもメッセージを読める。
unkoburiburi@gmail.comというメアドの人にメール送ったら、文字列unkoburiburiで識別される個人が受取人で、ドメインgmail.com中のメールサーバに届けられる。
ウェブサーバ
そもそもユーザ(私たち)がインターネット上にハイパーテキストにアクセスできるようにするソフトウェアパッケージは2種類に分けられる。クライアントの役割を演じるパッケージ(ブラウザ※後述)と、サーバの役割を演じるパッケージの2つ。
このサーバ側のやつがウェブサーバ。
ウェブサーバ(サーバパッケージ)は、アクセスされるハイパーテキストを含むコンピュータ上にある。
クライアントからの要求に従って、ドキュメントへのアクセスを提供する。
実際の例だと、飛行機の予約サイトなら、
「日にちと出発地・行き先を指定」(クライアントサイドアクティビティ)
「その日のフライトを表示」(サーバサイドアクティビティ)
ブラウザ
クライアント側のやつがブラウザ。
ユーザが要求する資料を獲得してまとまった形でユーザに提示してくれる。
ブラウザ(クライアントパッケージ)はユーザのコンピュータ上にあり、ユーザがウェブを探索するためのUIを提供するソフトウェアだ。
インターネット全体に散在するウェブサーバにサービスを要求することによってドキュメントを得る。
つまり、ユーザはユーザのコンピュータ上にあるブラウザ(※後述)を使ってハイパーテキストドキュメントへのアクセスを獲得する。
メッセージ転送方法
ここでいうメッセージというのは、とりあえずメールと思ってください。
インターネットを通じてメッセージを送るには、インターネット中の全てのコンピュータに(同じメッセージ転送プロトコルに基づいた)同じソフトウェアが搭載されている必要がある。
具体的にソフトウェアはどんな作りなのかを見ていきます。
ソフトウェアは4層の階層構造
アプリケーション層
トランスポート層
ネットワーク層
リンク層
の4層でできている。
7層で作るやり方も考えられたが、後発なのでこっちより普及していない。ただ、国際機関のISO(国際標準化機構)によって開発されたので、権威があり、割と引用されたりする。
メッセージの「送り」「受け取り」作業に分けて見てみよう。まずは、「送り」だけ見て、4つの「送り」を見たら「受け取り」を見たら分かりやすいです。
アプリケーション層
ここでいうアプリ(アプリケーション)は、いわゆるLINE、Googleカレンダー、ポケモンユナイトのような「アプリ」に限らず、より多くのユーティリティパッケージ(OSに標準搭載されている基本的なソフトウェア。例えば、アンチウイルス、データ圧縮)を含む概念。
メールなら、まず文章を書いて、メールの送り先を人間が指定する。つまり(ニーモニックな・~~~~@gmail.comみたいな)メールアドレスを指定する。
送り この層で、そのアドレスをインターネットで使用されるIPアドレスに変換する。そして、トランスポート層に渡す。渡す際に、トランスポート層で使用するプロトコルを選ぶ。(例えば、速さ重視のプロトコルor信頼性重視のプロトコル)
受け取り メッセージを受け取る。
トランスポート層
アプリケーション層から受け取ったメッセージは長い(データが大きい)。多くのメッセージが行き交うインターネット中では、メッセージが長いと他のメッセージを阻害してしまう。(めっちゃ胴体長い車が交差点とか曲がる時に、他の普通車が待つみたいな)よって、この層ではまずメッセージを分割する。
送り この層でメッセージを小さなセグメントに分割します。各セグメントは、個別にインターネット中へと転送される。セグメントが到着地で再構成できるように一連番号を割り振る。これで、セグメントはパケットに進化し、ネットワーク層に渡される。(ざっくり言うと↓。細かく言うと、再送機能とかも付け足されるけど) セグメント + 一連番号 = パケット
パケットは別々の経路を辿ることも普通にあるが、番号があるので問題ない。
受け取り パケット集めて、一連番号をもとに再構成する。
ネットワーク層
いきなり目的地には到着しない。つまり、友達にメールを送っても、全然知らん人の家のルータを何件か中継して、友達の家のルータに到着する。
ネットワーク層とリンク層はパケットの「送り」「中継」「受け取り」に分けて見てみよう。
送り パケットに中継用のアドレスを割り当てて、リンク層に渡す。この層はルータの転送表を保持しているので、それをもとにパケットの転送先を決めている。
中継 リンク層からパケットを受け取り、また中継アドレスを割り振る。(いつかは最終目的地のアドレスを割り振る)
受け取り リンク層からパケットを受け取り、最終目的地についたことを検知して、トランスポート層に送る。
リンク層
送り パケットを(ネットワーク層が割り振った中継アドレス先のリンク層に)送信する。
中継 パケットを(ネットワーク層が割り振った中継アドレス先のリンク層に)送信する。
受け取り パケットを受け取る。
セキュリティ
色々な攻撃方法を見ていきます。なりすましメールとかたまに来ますよね(私も受け取ったことあります)。
攻撃の種類
マルウェア
悪意のあるソフトウェア全般をマルウェア(malware)と呼びます。(英語でmalは「悪」を表す接頭語ですね。malicious/悪意のある とか聞いたことあるかもです)
マルウェアはそれぞれの性質によって名前が付けられている。
ウイルス
マシン上に既にあるプログラムに侵入してコンピュータに感染する。大抵コンピュータ中の他のプログラムに感染する。OSの機能が低下したり、データやプログラムが破壊されたりする。
ワーム
ワームはネットワーク中で自分自身の複製を作り転送する自律的なプログラム。複製だけするものから、破壊もしてくるやつもある。爆発的に増殖して、正規のアプリの機能を低下させたり、極端な場合、ネットワークやインターネット全体に異常な負担をかけて麻痺させることもあり得る。
トロイの木馬
有名なマルウェアで、マルウェアの80%(ソース:https://cybersecurity-jp.com/column/17899)がトロイの木馬とも言われている。
ゲームや便利なユーティリティパッケージに偽装して、クリックしてもらおうとする。大抵メールに添付されて侵入を試みる。即座に有害行動を取ったり、決まった時間に行動したりする。なので、見たことない送信元のメールは絶対に開けない方がいい。
スパイウェア(スニッフィングソフトウェア)
何かしらの方法でコンピュータに潜入して、個人や企業に個人情報を送るプログラム。
例えば、キーボード上でタイプされるキーを記録して、暗証番号やクレカ番号を探索したりすることも。
フィッシング(phishing)
例えば、「**急便です。なんやかんやなので、ログインしてください」みたいな感じで、パスワードとかの入力を求められる。(公式サイトよりhttps://www2.sagawa-exp.co.jp/whatsnew/detail/721/)
郵便以外にも通販サイトとかにもなりすましてメールとかSMSをよこしてくる。
ちなみに、スペルはfishingではないんですよね。
phはphreak(不正に電話かけて料金をごまかす)から来てるっぽいです。
phishing = ph(↑の不正な感じ) + fishing
おまけ:
phreak = phone+freak(「熱狂者」「ある事柄に異常に心酔する人」。ポケモンで有名なゲームフリークもこのフリークですね。)
DoS攻撃(Denial of service/サービス拒否攻撃)
f5(更新ボタン)攻撃とかが有名です。(f5押しまくって、更新しまくって、アクセス数増やしまくるやつ)
大量のメッセージを送って相手のサーバを落としたりするやつです。マジで捕まるかもしれないので加害者にならないように(まぁ普通にしてれば大丈夫ですが)しないとですね。
例:https://ja.wikipedia.org/wiki/岡崎市立中央図書館事件
DDos攻撃(Distributed Denial of Service/分散型サービス拒否攻撃)
攻撃者は複数のコンピュータ(パソコンなど)を利用して、特定のサーバーなどに一斉攻撃をしかけます。 このとき、悪用されるコンピュータには関連性がないため、攻撃を受けた側は犯人を特定しにくいと言われています。
保護・予防
予防法としてまず上がるのはファイヤウォールと呼ばれるプログラムです。
ファイヤウォール
ネットワーク中のある点を通過するデータにフィルタをかけることができます。送られてくるパケット(データのかたまり)の情報から判断します。
例えば、
・企業や大学のイントラネット(独立したネットワーク)のゲートウェイ(インターネットとの出入り口)に置かれて、問題があると知られているアドレスからのメッセージを遮断したする。(これでDoS攻撃を予防できる)
・社内のイントラネットに社員になりすまして侵入してくる(スプーフィング攻撃)のを防ぐ(これは個別に設定がいるらしい)(社内のアドレスを使って(社内のPCのふりをして)ゲートウェイを通過していたら怪しい)
他にも、個別のコンピュータを保護するのにも使われるが、詳しい話は省略する。
特定の目的のために設計されたファイアウォールもあり、例えば、迷惑メール分類。
強化学習などによって、迷惑メールかどうかを分類できるようにしている。
プロキシサーバ
サーバの有害な行動からクライアント(私たち)を守る。
クライアントとサーバの仲介になっているソフトウェアユニットで、これがなければクライアントはサーバと直接通信することになり、サーバはクライアントの情報を取りやすい。
イントラネット内のクライアントが遠隔地のサーバとやりとりする(例えば、企業がAWSを使うとか)場合、サーバがイントラネットの内部構造の情報を集められないようにしている。具体的には、クライアントがサーバに接続したいときは、クライアントは接続をプロキシサーバに依頼し、プロキシサーバが実際のサーバと接続する。
これによって、
・サーバはクライアントなのかプロキシサーバなのか見抜けない
・サーバからイントラネットへ送られるメッセージにフィルタをかけられる(ウイルスの検知とか)
法的問題
インターネットは国を跨いでいるので、ある国では合法だが、ある国では違法、と言うケースもある。
国境を越えるインターネット上の知財侵害への 対応について(内閣官房_2016年の記事)
https://www.kantei.go.jp/jp/singi/titeki2/tyousakai/kensho_hyoka_kikaku/2016/jisedai_tizai/dai5/siryou2.pdf
海外で運営していたら「違法じゃない」は無根拠(ねとらぼ_2018年の記事)
https://nlab.itmedia.co.jp/nl/articles/1802/20/news065.html
著作権違反コンテンツに対する日本の対処の特徴とか
https://www.j-cast.com/2013/10/03184951.html?p=all (j-cast_2013年の記事で古いけど)
暗号
RSA暗号が使われています。
RSA暗号の仕組みを簡単に書いてみます。
インターネット通信は傍受を防ぐような仕組みはないので傍受できちゃいます。しかし、解読できないように暗号化することで「傍受され放題だけど、傍受したところで普通は内容がわからない」という状態になっています。
暗号化・解読するための鍵は、2種類ある。秘密鍵と公開鍵で、秘密鍵は知られてはならないが、公開鍵は誰もが手にすることができる。直感に反するが、公開鍵で暗号化した文は、公開鍵では解読できない。秘密鍵でのみ解読できる。
例えば、銀行が秘密鍵を持っていて、利用者が公開鍵で自分の暗証番号とかを暗号化して送る。他人がその通信を傍受しても、公開鍵では解読できない。銀行は受け取った暗号を秘密鍵で解読する。
参考文献
入門コンピュータ科学
https://amzn.to/3xBKG2D
ドコモ安心サポート
https://nettrouble.docomo.ne.jp/pages/article107/
電気の歴史(日本の電気事業と社会) 電気事業連合会
https://www.fepc.or.jp/enterprise/rekishi/
西暦1832年~1873年: 発電機とモータの進化 NoeMag
https://www.neomag.jp/mag_navi/history/history_13.html
千葉県立現代産業科学館
https://www.chiba-muse.or.jp/SCIENCE/doc/research/hp/denki_02_01.html
ラジオ空想科学研究所
http://www.allnightnippon.com/kagaku/index.cgi?line=444
日本語と英語をつなぐ_フィッシング;phishingとfishing、phone
https://je.at.webry.info/201508/article_5.html
コメント