どうもこんにちは、Infrabbitです。偉そうなタイトルつけていますが、中身はインターネットに転がる粗大ごみの一つです。たまにはバカな話もしたくなるのです。いつもしているような気もするんですが、気のせいだと思います。
一応ビジネスのサイトとしてやってるのにこんなこと書いていいのか、とは思いましたが、思いついちゃったんだからしょうがない。
なお、普通に書いたら荷物とかで例えるのが楽です。というかそれで例えるのが一番イメージとして正しいです。
さて、ネットワーク苦手なんだよね、というアプリケーションエンジニアの人はたまにまれにしょっちゅう出会うわけですが、話を聞いてるとやっぱりOSI参照モデルとかTCP/IPスタックで頭が沸騰しちゃうよおおおってなってるっぽいんですよね。IPアドレスのビットマスク計算では躓かなかったけど!みたいな。まあアレただの計算だからな。
でもスタックって普通にアプリでも利用しますし、デバイスドライバーなんてスタックの塊でしかありません。なので、スタック自体がわからない、というよりもパケットがわからない。ということなんでしょうね。
じゃあどうしよう。って考えて、TCP/IPとはセッ●スみたいなもの。という、下品極まりないアイデアが浮かんでしまい、ついうっかり書いてしまったのがこれです。同じようなネタで3ウェイハンドシェイクはナンパみたいなもの、とかも書こうとしました。頭悪すぎる。
つまり、誰がどう見ても粗大ごみです。タイトルに釣られた方、ご愁傷様です。
あ、あらかじめ言っておきますが女性の性商品化とかそういう悪意は皆無ですが、フェミ界隈の方は回れ右してブラウザバックしてください。
まず、通信とは何か、という話です。どこかとどこかがなんかやり取りする、それが通信。いや、通信とかいうからなんか構えるんです。これを片方のどこか、を「どこかに住んでる、エロティックな女性」ということにします。フェミニズム方面からぶん殴られそうです。
で、もう片方のどこか、にあたるあなたはこの女性とえっちしたい、というわけです。
うん、控えめに言って最悪なたとえでしゃべり始めてるな、私。気にしたら負けだけど。
あなたは家では裸族です。女性も裸族です。そういうことにしてください。
そして、えっちするにはどちらかがどちらかに会いに行かないといけませんね。なんでもかんでもリモートで済むわけじゃありません。さて、あなたが会いに行くことにしましょうか。あなたが家から出るには服を着る必要がどうしてもあります。じゃないとなんとか陳列罪で逮捕されます。
なので、服を着ますよね。パンツ履かないでズボン履く人はたまにいるかもしれないですが、普通はパンツ履いて、シャツ着て、上着とズボン履いて、寒かったらコートやジャケットも羽織るかもしれません。
これが、TCP/IPスタックです。何言ってんだ俺。
つまり、パンツなどの下着が、裸族一歩手前なのでOSIだとプレゼンテーションとかなんか名前ついてますけど、世の中TCP/IPなんだからここがTCP層としましょう。あなた本体はいわゆるアプリケーションです。えっちしに向かうわけなんで、いわゆるクライアント側、ブラウザなんかにあたりますね。上に羽織ってるシャツがIP層です。で、あなたの移動できる空間が物理層、と呼ばれる場所です。物理層はちょっと違うんだけど、まあ細かいこと言い出したら全部違うしw
通信、じゃなかったえっちしに行っているので、目的の女性の家まで向かいます。ここは物理層からつながっているので、最下層レイヤであり、ただの道路です。ただ、いろんな交通法規は存在します。そりゃまあそうだよね。道交法みたいなやつがあるんで、それ守って向かいます。守らなかったら留置所に到達して、二度と出してもらえません。やったことに対する罪が重すぎるかもしれませんが、この世界はそういうルールなので、あなたはもう二度とどこにも行けません。
また、いわゆるネットワークのケーブルの接続にあたるところで、あなたの家から女性の家までの道路がそもそも存在しなければあなたは一生たどり着けません。ざまあみろ。
このような通信、じゃなかったえっちしに行く通路のことをネットワークと呼んでいるわけです。
さて、会いに行く女性が家の外にいる人なら公共の道路を通っていくわけですが、会いに行く相手が自宅の二階にいる義理の妹とかだったら公共の道路を通らなくてもいいわけです。
なので、まあやろうと思えば裸族のまま会いにいってえっちできるかもしれませんが、恐ろしいことにこの公共の場のルールは、あなたの自宅内の空間もそのルールで支配されています。つまり、あなたは裸族なのですが、家の中ですら一歩でも動くためには服を着ないとだれとも会うことが出来ないのです。
そのため、家の中でも服着て会いに行ってえっちして帰ってくる、みたいなことをします。これを、ローカルエリアネットワーク、LANとか言います。お外に出るネットワークのことはワイドエリアネットワーク、WANなんて言います。ただ、WAN=インターネットではありません。ぶっちゃけLAN/WANって物理的な範囲の話をしていて、論理的なネットワークのトポロジーの話はしていません。
極端なことを言うと、一つの建物内に張り巡らすのがLAN、複数の建物(遠隔地含む)をつなぎ合わせたのがWANです。WANを作るのに、インターネットを使ってもいいし、使わなくてもいいんです。あんまり使いませんが、LANとWANの中間規模のネットワークをMAN、メトロポリタンエリアネットワークなんていうこともあります。一般にWANと言ったら国内の主要都市間を結んだり、北海道から沖縄まで散らばったネットワークだったりですが、一つの都市内に収まる程度のときに使います。が、そんなもんもWANって言っちゃいますね。わざわざMANって言う意味はそこまでないですし。
まあ全国でフランチャイズ展開してる風俗店か、単一店舗経営してる風俗店か、くらいの話です。まじめに聞かなくていいです。というかフランチャイズ展開してる風俗店とかあるんですかね?
さて、次に相手に向かう側を「クライアント」、待ち受ける側が「サーバ」と呼んでおり、これをわざわざサーバ/クライアントモデルとか呼んでるわけです。デリヘルモデルでいいだろこんなもん。
で、相手の家に向かう行為を「リクエスト」、向かった結果どうなったのかを持ち帰ってくるのが「レスポンス」です。
で、女性の家の住所と自分の住所が書かれているのがIP層、つまりあなたの上着に書いてあります。なので、家で裸族だからと向かってる途中で上着脱いだりしたら当然住所がわかんなくなるのでたどり着けません、ざまあみろ。そして家に帰ることもできません。逮捕です。二度とどこへも(以下略)
なので相手の家に着くまで上着は脱げないのです。脱ぐわけにはいかないのです。えっちするためにも。ちなみに、この時の上着に、自分の住所ではない住所を書いて相手の家に向かう行為をIPスプーフィングといいます。犯罪です。
相手の家についたら、チャイムを鳴らしてドアを開けてもらいます。まあ出会って五秒な人もいるかもしれませんが、普通はチャイムに出るのに裸族のまま出てくる人なんていないので、服を着た女性が出てきますね。
当たり前ですけど、服をきたままだとすけべなことはできません。せいぜいキスしたり手をつないだり、ペッティングしたりくらいしかできません。学生服デートしてる中高生みたいですね。うらやましい。
まあ着衣ものとかありますけど余計なこといわないでください。健全なサイトを目指しているんです。
さて、チャイムを鳴らしたはいいけど出てきた人が目的の人かどうかはわからないわけですし、相手もあなたがえっちしていい相手かどうかわかりません。そこで、まずは自分の上着を見せて、「ぼくはここの上着に書いてある人とえっちしにきました」と名乗るわけです。相手も、その上着はエッチしていい相手かどうかを確認します。
要するにデリヘルみたいなもんですね、健全サイト設定どこいった。
無事、えっちしてよさそうだ、ということになれば相手の家に上がり込み、上着を脱ぎます。相手も上着を脱ぎます。もう住所の情報は要らないからです。でもまだ下着を着てますね。ここはTCP層、と呼ばれるところで、ここにもいろいろ情報が書いてあります。
例えば、どんなことしたい、とか一回おいくら万円なのかとか書いてあるんじゃないですかね、ほんと健全サイト設定どこ行ったんだ。
ここで合意できなかったら住所あってるけどえっちできません。ポート番号間違ってるとか、TCP/UDPが違うとかまあいろいろです。が、えっちできないことに変わりはありません。基本締め出されます。
このときや上着の段階で拒否られたとき、あなたをぶっ殺して死体を外に放り投げて捨てることをDrop(破棄)、相手側に「お前とはえっちしない」と伝えて帰ってもらうことをReject(拒否)といいます。拒否は拒否られたことがあなたの家でわかりますが、破棄された場合行った先のお宅で何が起きたのかわかりません。完全犯罪です。恐ろしいことですが、この世界での殺人は比較的寛容です。パケットはだいたいいつもどこかで殺されています。というかまじめに拒否でお断りしていると、相手が「ああ、ここはお断りされるんだ、じゃあちょっと変えてみたらいいかな?」って試してきますので、拒否はあまりしたくないです。なるべく殺したい。
健全サイトなのかなぁ…。
さて、無事にお互いの合意がとれたようです。下着も脱ぎ散らかして、いよいよ本番ですね。ここが、要するにアプリケーションへのリクエストが成立した、という段階になります。アプリケーション層の仕事です。実際には本番をやらかす前にいちゃいちゃする時間、になります。いわゆるApacheとかftpとか、ミドルウェアと呼ばれている人たちの仕事場にあたります。ずいぶんエロいとこで仕事してるんですね。
ここで女性に拒否られることもあります。つまり、Apacheが仕事しようとしたんだけど、要求されたプレイはメニューにファイルがないですねぇ、とかの場合ですね。404 Not FoundとかのHTTPステータスコード、というのはここの話です。ここまで来てお預けとかマジでつらいですね。
さぁ、そうこうするうちにいちゃいちゃもいざ本番(なんの?)ともなれば、実際にプレイがおっぱじまっちゃった後ということになります。ここがすなわち、実際のアプリケーションプログラムの動作だったりするわけです。FTPとかだとその辺の区分もあいまいです。なので、まあアプリケーション層とアプリケーション自体はいっしょくたに扱われていることの方が多いです。というかいっしょくたなのが普通です。
なお、ここで女性にぶっ叩かれたとか拒否されたとかいうのが、いわゆるアプリケーションエラーと呼ばれるものです。挿れるところでも間違えたんじゃないですかね、知らないけど。インフラの仕事はあなたをそこに送り届ける送迎でしかないので、おっぱじまったあとのことなんか知ったこっちゃありません。おっぱじめたあとのことをやってるのがアプリケーション開発者さんたちなので、たぶんみんなエロいんだと思うんですよね。
ここまでが、いわゆる「リクエスト」で行われることです。さて、目的が達成したので家に帰らないといけません。そのまま女性の家に転がり込んでヒモとして生きていく人もいるかもしれませんが、普通は居座りません。なぜなら次の客もいるのですから。客ってなんだ。
居座ってたらたぶん怖いお兄さんにつまみ出されるんじゃないでしょうか、よく知りません。
家に帰るんですから当たり前ですが、パンツとシャツ着てください。上着も着てください。来る時と違って、帰るときは上着に書いてある自分の家の住所にむかって帰ります。当たり前だよな。おうちに帰ったらまた裸族に戻るために、上着->下着の順で脱ぎますね。これではじめて、あなたの家に女性とえっちした、という情報が届くわけです。よかったですね。
このように、順番に処理されていくもの、がスタックですね。入るときと出るときで逆順になる構造。
これが、パケットのやっていることです。ほんとかよ。
さて、実際にはあなたは一つのパケットではありません。あなたは実はセック●アンドロイドで、基本的にデカいのです。相手の家までの道は狭い場所も多いので、あなたは相手の家に行くのに自分を分解しておくらないと、どうも都合が悪くなることも多いようです。なので、あなたは部品にばらばらにされて相手の家まで送られ、組み立てられて、えっちして、またばらばらにされて送り返されてきます。
これが、パケットのフレーム、と呼ばれるものです。一般的には1500バイトのフレームサイズですが、ネットワーク機器ではこれを9000バイトといった大きなサイズのフレームで取り扱える機器もあります。もっとも、一台だけジャンボフレームに対応していても、ほかが対応していなければ非対応機器を通過する際にばらばらにされるので、ジャンボフレーム使うときは全体的に設定しなくてはいけません。
フレームが大きくて何がうれしいんだよ、って思うかもしれませんが、そりゃうれしいだろ、到着したアンドロイド組み立てるパーツ数が減るんだから。プラモデルだってパーツ数少ない方が作るのはさっさと作れるでしょう。パーツ数多い方がかっこいいのが出来るかもしれませんが、そこはそれ、やり取りされているのはデジタルデータな世界なのでパーツが多かろうが少なかろうが出来上がるアンドロイドは同じものが出来上がります。だったらパーツ少ない方がいいよね、って話です。
TCP/IPスタックだと、物理層、IP層(インターネット層)、TCP層(トランスポート層)、アプリケーション層、という極めてシンプルな四層構造なのでこんな感じです。
ちなみに、おそらく学生さんが学校でたたきこまれるOSI参照モデル、というのはそもそも理念の話です。OSIを忠実に実装した実装方式はそもそもが存在していないと思います、というか寡黙にして知りません。あれは哲学。だって、スタックですから同じ条件で実装された機器同士でないとお話しできないんですよ。
TCP/IPで実装していないOSI準拠モデルの実装機器が存在したとして、だれとつながれるかっていうとOSI参照モデルの準拠実装機器としか会話できないわけです。まあ、機器じゃなくてソフトウェアでもいいけれど、どのみち結果は同じかと。
で、まあ皆さんが最初に踏み込んでいくであろうTCP/IPの世界にはそんな実装存在しねぇ、というわけです。辺境の地とかにはあるかもしれませんが。それは辺境に赴くときに気にすればいいです。
では、カプセリングって何か、というと、あなたが下着や上着を身に着けたところで、トランクにあなたを詰め込んで、トランクの外側に別の上着を着せます。このトランクに着せた上着にはインターネット上の住所が書かれていますが、トランクに詰め込まれたあなたの上着にはあなたの家の中での場所が書かれているだけです。例えば現在地(発信元)はトイレで、行先は(女性の家の中の)風呂場。って書いてあります。女性の家の住所は記載されていません。
で、このあなたを詰めたトランクを送り付けることをカプセリング、というわけですね。相手はおうちでトランクを開けてみるとあらびっくり、中から出てきた人はなぜか風呂場に行きます。えっちしないんですか。
そして風呂場、という用事が終わったので、相手の女性はまたあなたをトランクに詰め込み、トランクが着ていた上着を着せて送り出す、という感じです。女性の家のトイレはあなたの送信元ではないので、女性の家のトイレに帰って行ったりするわけではありません。適当極まりない説明ですけど。
返ってきたトランクを開けると、出てきたあなたは自宅内の帰るべき場所としてトイレに帰っていきます。風呂の用事は済んだので。
これがいわゆる、「ごはんにする、おふろにする? それとも…」「飯。風呂は外で済ませてきた」ってやつです。修羅場です。うっかり発言には気を付けて。
ちなみに、あまりに当たり前すぎる話ですが、この本文をChatGPTに添削してもらおうとしたら全力で拒否されました。世知辛いわぁ…何がダメだったんですかね?(ほぼ全部