22. Rust を使用してフォワード プロキシとリバース プロキシを最初から書き込む、データ パケットの魔法の HTTP アドベンチャー!

wmpプロキシ

wmproxyプロキシ、プロキシ、リバース プロキシ、静的ファイル サーバー、4 層 TCP/UDP 転送、イントラネット ペネトレーションのRust実装に使用されています。プロキシは将来実装される予定です。実装プロセスは共有されます。ご興味がある場合は、一緒に車輪を組み立てることができます。http/httpssocks5websocket

プロジェクトアドレス

国内: https://gitee.com/tickbh/wmproxy

github: https://github.com/tickbh/wmproxy

データパケットの告白

私はデータパケットが小さいので、今日は伝説の HTTP の旅を体験するためにほとんどの手順を実行します。先輩からは素晴らしい旅だったという話を聞きました。

旅行の準備

  まず出発地点に来ましたが、公共交通機関(HTTP1)か自動運転(HTTP2)を選択するか、自家用車(H2C)があるかどうかなど、プロジェクトごとのデータを整理していました。目的地の部屋(Path)、人々が隣り合って歩くのを防ぐかどうか、人々の覗き見(TLS)、身軽に旅行するかスーツケースを持って旅行するかの選択(GET または POST など)、その他のさまざまなこと(圧縮サポート、データ長など)。

  私は「ツアーガイドさん、いつ出発できますか?」と尋ねました。

  ガイドさんは「心配しないでください。この道はよく知っています。今回のデータはちょっと重要です。相手から暗号化された情報をもらっています。これが覗き見を防ぐ秘訣です。もしそれなら」と答えました。途中で阻止されれば多大な損害を被るだろう。」

  しばらくして、私はもう一度尋ねました。「もう行ってもいいですか?」

  ツアーガイドは「わかりました。交換を通じて合意された暗号化信号が完成しました。まずは処理させてください。」と答えました。

  ガイドに従って加工場に行き、中に入って稼働させ、加工場から出た瞬間、自分がまるで別人のようになっていることに気づきました。私はほとんど自分自身を認識していませんでした。

  私たちはバス停 (ブラウザー) に来ました。彼は私たちの到着を見て、すぐにバスに乗れるように手助けしてくれました。それから私たちはバスの後を追って歩き続けました。周りを見回しました。周りを見回しました。誰かを見ても私と同じように変装していた人は誰だか分かりませんでしたし、変装していない人を見るとはっきりと分かりましたが、他人の覗き見を恐れていないのでしょう(TLSは使用していません)。

旅行送迎

突然バスが止まり、「wmproxy へようこそ」とアナウンスされました。

  私は少し混乱してツアーガイドに尋ねました。「私たちの目的地はここではなかったのを覚えていますが、なぜここに立ち寄ったのですか?」。

  経験豊富なツアーガイドは私にこう言いました。「目的地の家を破壊から守るため、目的地は隠されているようです。ここを通る専用ルートを通らないと目的地に到達できません。」

  それから私は心配そうに尋ねました。「それでは、ここで何をするつもりですか?」

  ツアーガイドはこう答えました。「次に私たちが行くのはプライベートエリアです。道で会う人は全員オーナーの友人で、私たちの秘密を漏らすことはありません。だから、乱れた服装を元に戻す必要があります」で。"

  後を追って加工工場へ行くと、加工工場では着ぐるみの乱れた衣装を特定の方法(TLSの削除とHTTPへの変換)で修復してくれ、加工工場から出ると、またイケメンな自分に出会えました。「それで、次は何をしましょうか?」と私は尋ねました。

  ツアーガイドは「当初の情報によると、柔軟に対応できるよう専用車(HTTP2)を手配してくれるそうです。ほら、もう車が到着しました。一緒にバスに乗りましょう。」と答えました。

  自家用車に乗ったところ、私が持ってきたものがいくつか奇妙な部分に切断されていました。私は運転手に尋ねました。「以前は完全な人間だった私が、なぜいくつかの奇妙な部分に変わったのですか?」

  運転手は微笑んでこう答えた。「この車では、副操縦士は通常、ヘッダーに座っています。つまり、あなたが持ち込むすべての属性がここにまとめられています。後部座席には、通常、追加のデータパケットが含まれています。もちろん、たくさんのデータパケットがあるかもしれません」データパケット兄弟の、腕を見てみろ、同じツアーガイドについていく人たちはみんな赤い布で覆われているよ。」

  初めて加工工場に到着したとき、ツアーガイドと私に特別なマークが付けられていたこと、そして各人の頭に特別な帽子をかぶっていることも発見しました。カラーと一連の特別な番号が含まれます。私の身長と体重(実際の長さ)の情報が付いているようです。

旅行到着

美しい部屋の前に停まった専用車、ここが旅の目的地だと思います。この時、ようやく自分の使命を理解しました。重要なファイルを入手するためにここに来る必要があることが判明しました。このファイルのデータ量は、当時のデータの数万倍 (Content-Length) で、少し誇張されていました。ここに来た。

  この時、私は慌ててガイドさんに「持って行かなければならないデータがたくさんあって、とても重要なものなんです。どうすれば安全に持ち帰れるでしょうか?」と尋ねました。

  このときツアーガイドはこう言いました。「最初に持ってきた工具セットリスト( )をまだ覚えていますかAccept-Encoding?」

  私は「覚えています。そのとき名前をメモしたようです。家に真空機(​​gzip)とコンプレッサー(brotli)があったそうですよね?」と言いました。

  ツアーガイドはこう答えました。「はい、はい、あそこに大きな山(gzip)が見えます。後でデータ兄弟を連れてその山に登ります。その頃にはかなり体重を減らすことができるでしょう。そうすれば、使用されるリソースははるかに少なくなります。」

  私たちは膨大なデータ軍団を引き連れて山に登りましたが、確かに全員がはるかに少ないことに気づきましたが、この軍団の数は当初言われていた数万倍よりもはるかに少ないと感じました。

  「この軍隊の数字が間違っています。迷っている兄弟はいますか?」と尋ねました。

  ツアーガイドは笑顔で答えました。「ここの家はとても大きいです。すべてのデータが一度に別の次元から呼び出される(ファイルから読み取られる)と、この小さな家は完全に詰まってしまいます。上のものを参照してください。何かありますか?」兆候は?」

  「現在の部屋は4096/4096人収容可能です。」という看板が見えました。この時、前にいた100人の兄弟が部屋から出て行き、部屋が になり、その後、3996/4096別の次元から新たな100人の兄弟が召喚されるのが見えました。

  このとき、「どうやらこれが拡張を制御する秘密だった(メモリバッファがいっぱいだった)」と気づきました。

帰路

減量が終わると、次から次へと車が私たちを家まで送り届けてくれます。

  その時、車の群れが順調に進んでいたのですが、突然速度が落ちたので、運転手に「さっきはすごくスピードを出していたんじゃないですか?なぜここに来て急に速度が落ちたのですか?」と不思議そうに尋ねました。 ?「?」

  運転手は前方を指差し、「前方に狭い道があります。両側の交通に注意してください。全速力で運転すると、この道では誰もが妨げられるでしょう。だから上を見てみると、100という標識があります」と言いました。車両/分。つまり、1 分あたり 100 台の車両しか通過できません。そうしないと、前の狭い道路に押し込まれてしまうため、速度は遅くなりますが、それでも、1 分あたり 100 台の車両が通過できます。遅い。 "

  そこで両側を見てみると、両側の車がほぼ同じ速度で通過していました。ゆっくりと比較的狭い道に出ました。確かにここを通る車はそれほど多くありません(イントラネットから公衆ネットワークへの転送) 、伝送容量(減少)、私は考えました:「高負荷状況では、この方法でのみ制限できます。そうでなければ、この時点でトラフィックが麻痺するはずです。より多くの人が急いで詰め込むほど、通常のトラフィックは減少します」 。」

  その直後、私たちは乗り換え駅に戻りましたが、私は突然不思議そうに考えました。「もし兄弟全員が乗り換え駅に押し込められたら、彼は直接混雑するだろうか?」

  このとき、ツアーガイドが「ボーッとしないでください。バスが来ます。出発の時間です。」と言うのが聞こえました。

  私は少し混乱しました。「私たちの後ろにたくさんの兄弟がいるでしょう?彼らが集まるのを待ってから出発する必要はないのですか?」

  ツアーガイドは微笑んでこう言った、「出発するために全員が集まったら、立ち止まって待たなければなりません。そして出発するとき、後ろの兄弟たちは前の兄弟たちが終わるのを待ってから出発する必要があります。こうすることでスピードが速くなります。」はるかに遅くなります。これが理由の 1 つです。それに、この乗り換えプラットフォームでは、同時にここに滞在する多くの兄弟を収容することはできません。彼は私たちのためにバスを帽子の色に応じて分類してくれました。 「バス上です!」 (この時点では、エージェントはヘッダー データのみを処理しました。ボディ データは単純に転送されるだけです)

  私たちが今公共エリアにいることに突然思いつき、ツアーガイドに尋ねました。「データのセキュリティを確保する必要がありますか? これで私たちは全員、公共エリアに属しています。」

  添乗員さんは我に返り、「それでは、まず加工工場へ行きましょう。そこが私たちの専属加工工場です。」と言いました。幸いなことに、あなたが私に警告してくれました。そうしないとデータは安全ではなくなります。(TLS暗号化)

  加工場から出てバスに乗り、順調に出発台(ブラウザ)に到着 この時は一人ずつ加工場から出てきました(TLS復号化) たくさんの兄弟がいて、ブラウザのプラットフォームが少し遅かったので、立ち止まったときに「目的地に着かなかったの?なぜ迎えに来てくれなかったの?」と尋ねました。

  ツアーガイドは笑顔でこう言いました。「今回持ち帰った情報量は少し多かったので、スリム化しました。処理のために gzip とマークされた部屋に行くのを待ちます。すると、 」

  続いて辿り着いた異次元空間は何もなく、とても広い空間でした。たくさんの兄弟が整然と並んでいたのです。最後の兄弟が到着するまで、目の前に出口が見えたので、私はこう尋ねました。ここを出たら任務は完了するのか?」

  ツアーガイドは「そこの出口から来てください。ごちゃごちゃしないでください。今は兄弟たちがここにいて、それぞれの立場を知っているので、ごちゃごちゃすることはありません。みんな整列して前に進みます。ごちゃごちゃしないでください。」と答えました。

  一人ずつ出てくると、ゆっくりと体が元に戻り、私が大きくなり、とても完成されたハンサムな人間になっているのを見て、この仕事はもうやり遂げるべきだと思いました。

この時点で、ブラウザはデータ送信が完了し、完全でエラーがないことを報告し、タスクが完了して表示されます。

結論

これはインターネット上で毎日起こるデータの冒険であり、その急速かつ安定した普及により、私たちに美しい世界を構築してきました。

<font color=green>[フォロー]</font><font color=green>[見る]</font><font color=green>[いいね]</font>をクリックしていただくことが作者への最大の応援です

IntelliJ IDEA 2023.3 と JetBrains Family Bucket の年次メジャー バージョン アップデート 新しいコンセプト「防御型プログラミング」: 安定した仕事に就く GitHub.com では 1,200 を超える MySQL ホストが稼働していますが、8.0 にシームレスにアップグレードするにはどうすればよいですか? Stephen Chow の Web3 チームは来月、独立したアプリをリリースする予定ですが、 Firefox は廃止されるのでしょうか? Visual Studio Code 1.85 リリース、フローティング ウィンドウ Yu Chengdong: ファーウェイは来年破壊的な製品を発売し、業界の歴史を書き換えるだろう 米国 CISA はメモリ セキュリティの脆弱性を排除するために C/C++ の廃止を勧告 TIOBE 12 月: C# がプログラミングになると予想30年前 雷軍が書いた論文「コンピュータウイルス判定エキスパートシステムの原理と設計」
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/tickbh/blog/10321141