ネットワーク系読み物
新規作成 2020-11-1
このメモを意味ある単位で分割したい
に、以下アコーディオンで追加したい。ただ今の記事が一番スッキリ収まってる気がする
記事のDNSリフレクション攻撃か別のところに、自宅 → ルータ(SNAT) → アクセス回線 → ISP → ... → サーバ のような図(登さんの資料にアクセス回線辺りの図があった気がする)
上の図のどこで MACアドレス、IPアドレスの変換がされるか示す(なんのMACアドレスかとか、MACアドレスを解決するのはなにかとか)
Packemon で、どう設定してどこでルート変わるか、という説明も
ISP(AS) 同士で BGP で経路情報のやり取りが、AS 内で各種ルーティングプロトコルで経路情報のやり取りがあってルータのルーティングテーブルが更新された上で、パケットが目的地まで辿り着くというような記載を
XDP: 入力(受信)が eBPF プログラムのトリガー
tc: 入力(受信)と出力(送信)が eBPF プログラムのトリガー
packemon はこっちで、TCP RST パケットをドロップするようにしてる
その名の通り、Go でルータを作る本。大変面白い
syscall パッケージをどう使っているか参考になる
参考
はてな、きーたのブクマも
作りたいなと思ったもの
go使う予定だけど、phpでもサンプル書けないか試したい
Wiresharkの様なguiを使わず、簡単に自作パケット作れて目で確かめられるツール
tuiツール作ってみたい
Cisco Certified Network Associate (200-301)
読みやすく理解しやすかった。今後も基礎知識や設定コマンドの確認などで役立つはず
一度確認すると良いそう
全88問でシミュレーション問題も出た(各機器を設定してpingで疎通を確認するとか、ルーティングを設定するとか)
SOCKS5 Proxyをためす
このセクションは、別のところに移したい
Dante 導入と起動
WSL2 にて
「Ⅲ. 手順(ユーザー認証あり)」を実施(「4. ユーザーを追加する」以外)
「3. Dantedを起動する」 のコマンドは sudo で実行
端末に以下エラー
code:console
~/github.com/ddddddO/work
12:31:18 > systemctl restart danted
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: ホストが落ちています
~/github.com/ddddddO/work
12:31:30 >
Go で書く
動いた
次に、ブラウザ <-> ターゲットサイト 間でこのプログラムを介するようにするには?
ここで、やりたいことが出来なさそうと気付いた
上記のやったことは無視して、GoでSOCKS5サーバー機能があるpackageを使って、それっぽいものを試作
ネットワークプロトコル ハッカーズガイド
一旦、ネットワーク辺りの箇所は読んだので中断。次は、「シンボル情報を抽出する」(P138)から読む
パッシブキャプチャ・アクティブキャプチャの紹介で、アクティブキャプチャに興味が惹かれた
パッシブキャプチャ:WireSharkなどで、通信を覗き見る感じ
アクティブキャプチャ:エンドとエンドの間にプロキシを用意して、通信を覗き見るだけでなく変更を加えたりもする
ポートフォワーディングプロキシ:TCP or UDP
SOCKSプロキシ
フォワードHTTPプロキシ
リバースHTTPプロキシ
こちらが大変面白く読み進めている
このpdfが格納されているディレクトリにも面白そうな資料がありそう ちょこちょこつまみ食いのように読んでる
GNS3 インストールの参考にもなった。コンソール開けるし、Wiresharkで通信の様子も伺えて面白い
https://scrapbox.io/files/657d035110afb20024a9477b.png
https://scrapbox.io/files/657d036bd1d67700240c1a57.png
ただ、GNS3 でwpcap.dllが見つけられない、というエラーに遭遇し解決に時間を取られた。ファイルは存在していたし...明確な原因が分かっていないけど、多分、GNS3とWiresharkそれぞれで使うwpcap.dllがGNS3には合っていなかったのだと思う(GNS3インストール -> GNS3は普通に動作してるように見える -> Wiresharkでキャプチャできてない? -> Wiresharkアップデート -> GNS3で上記エラー -> GNS3再インストール で解消だったと思う)。
ピアリング戦記 ― 日本のインターネットを繋ぐ技術者たち
タイトルからして面白そうと感じた。読んでるところ
情報処理教科書 ネットワークスペシャリスト 2024年版
思うところがあってネットワークの勉強をしようと思い、ネットワークを体系的に学習できそうなのでネスぺ取得を目指す。その参考図書として購入
この本自体は初心者向けではない感じ。自分のレベルだとちょくちょくWebで調べたりしないといけない
金子勇、P2P・IoT・災害対策
「インターネットを介さずに独自のネットワークを形成する」
気になった。
なるほどナットク!P2Pがわかる本
一旦積読
ほんの少し読んでみたところ、かなりわかりやすく書かれている。まとまった時間に一気に読みたい。
SSHポートフォワーディング
SoftwareDesign ハンズオンTCP/IP
以下の記事に惹かれた。が、未読で、ちょっと読みごたえありそうなので、一旦寝かせておく。
ping自作
TCPソケットプログラミング
UDPソケットプログラミング
Dockerネットワークの仕組み
WEB+DB Web技術総整理
読んでよかった。特集1「Web技術総整理」で、引っかかったところをピック。
インターネット
インターネット以前の主な通信手段は電話の回線 -> ARPANET(パケット交換方式) -> OSI参照モデルの世界
「QUIC」:トランスポート層に位置するが、UDPの上位レイヤとして実装されている。TCPの速度のデメリットの克服・暗号化通信が可能、とされている。
HTTP
1.1が現在主流。
2は1.1と後方互換性を維持しており、クライアントが対応していれば2で、対応していなければ1.1で通信が可能。また高速な通信ができ、具体的には、ヘッダの圧縮・パイプラインと呼ばれる多重化技術を使うから高速化できるよう。
3は、TCPではなくQUICを使うため、2より高速に通信ができることが期待されている。
バーチャルホストとHostヘッダーフィールド
バーチャルホスト:1台のWebサーバ上に複数のWebアプリケーションを提供できる機能
IPアドレスで対象のWebサーバを、Hostヘッダーで対象のWebアプリケーションを特定
Webサーバ
prefork型とイベント駆動型
prefork型:1リクエストで1プロセス起動していた。そのためリクエストがかさばるとOSがプロセス切り替えの割合が増えて処理能力に限界が来る。これをC10K問題(クライアント1万台問題)
イベント駆動型:1プロセスで複数リクエストを処理する。代表的なWebサーバとしてnginxがある。
ブラウザ
レスポンスが返るまでのフロー
URLを解析して、名前解決してリクエスト作成して、、懐かしい気分になった。
ブラウザによってHTMLを表示するためのレンダリングエンジンが違う。
ブラウザによってJavaScriptを実行するためのJavaScriptエンジンが違う。
JavaScriptに新しい機能を追加して別言語として実装したものをAltJSと呼ぶ。
TypeScriptもその一つ。
AltJSは、最終的にJavaScriptとして実行されるよう。
Wasm
Webアプリケーション
GraphQL
Facebookが提案し、標準化が進んでいる。
RESTは複数リソースのデータを取得しようとしたとき、リクエストを複数回実行しないといけないので非効率。対して、GraphQLは、一度に関連するデータが取得できるよう工夫がされてるため、効率がいい。
特集2「はじめてのDjango」、特集3「作って学ぶRDBMSのしくみ」はざっと読んだけど、特集1を読んでベースの知識がわかった・深く知りたくなった、という人には自然に手が動くようなイメージを持った。蛇足。
海底ケーブル
東日本大震災から10年災害対策ITはここまで来た(日経コンピュータ)
レジリエンス(復元力)
HAPS
経済航海図 マゼランの羅針盤 ~初公開!“テレワーク”開発物語~
ネットワークはなぜつながるのか
ブラウザにURLを入力し、リクエストがWebサーバーまで到達・WebサーバーからのレスポンスをWebブラウザが受け取るまでの経路をL7~L1のレイヤを辿って解説
ブラウザの内部でリクエスト・メッセージを生成して、システムコールの呼び出しでOSのネットワーク機能を呼び出し、生成されたソケットに対してメッセージを書き込むことで、Webサーバー側に到達する。ここが面白いと思ったし、このあたりをGoで実装する際は、Goならわかるシステムプログラミング あたりが参考になりそう。 IPヘッダ、MACヘッダを付加してリクエスト先のWebサーバーを特定するまでの細かいやり取りが曖昧。