「ポートとソケットがわかればインターネットがわかる」を書きました
11月21日に拙著「ポートとソケットがわかればインターネットがわかる」が発売予定です。 これまで私が書いてきた本よりもさらに踏み込んだ「わかりやすさ」を目指して、インターネットに関連する通信技術などを紹介しています。
本書が想定している読者は、「これまでさまざまな形でインターネットを使ってきたけど、通信技術を詳しく調べたことがない」とか、「これまでさまざまな形でインターネットを使ってきたけど、インターネットを使った通信を行うプログラムを書いたことがない」とか、「いろいろな形でネットを使った情報発信をしてきたけど、サーバ運用まではやったことがなく、漠然とやってみたいと思っている」といった方々です。
コンピュータやネットワークに限らず、何かに関して最初の一歩を踏み出すのはたいへんなものです。まったく何もわからない状態だと、「プログラミング」「通信技術」「TCP/IP」といった単語を見ただけで「難しそうだ。無理!」といった感想を持ちがちです。そもそも、どこで何をすることで勉強を開始して良いのかもわからないという状態にもおちいりがちです。
しかし、最初の一歩から二歩目に行くのは、比較的容易であることが多いのです。なにごとも、最もハードルが高いのは最初の一歩ではないでしょうか。
そこで、本書では、まず最初の一歩としてインターネットを使ったプログラミングを行う際の概観を感じていただくことを目指してみました。たとえば、山を登ろうとするときに目指す先がどこにあるのかがまったく見えない状態よりも、おぼろげながらであったとしても全体像が見えたほうが登りやすくなります。
では、どうやって読者の方々に最初の一歩を踏み出していただくかですが、まずは本書に対して興味を持っていただかないと意味がありません。そこで技術評論社の池本さんが思いついたのが、「小悪魔女子大生のサーバエンジニア日記」のaicoさんとのコラボ企画です。
aicoさんは、「小悪魔女子大生のサーバエンジニア日記」という本を書かれていることもあり、通信技術などのイラストを描かれるための引き出しを多く持たれています。しかも、絵が「かわいい」のです。「かわいいは正義」という言葉がありますが、「かわいい」というのは強いのです。たとえ、筆者がアラフォーのオッサンだとしても、そこに掲載されている挿絵が楽しげであれば許される場合もあるかもしれません。
内容が多少ディープになる部分があったとしても、「かわいい」からこそ読んでいただける、そんなこともあるかもしれません。そのうえで、その「aicoさんの個性」を崩さないように噛み砕いた読みやすい文章をどこまで書けるのかというのが、今回の筆者の大きな挑戦でした。かわいい、読みやすい、多少マニアックな部分を含む、という3つの要素をどこまで入れることができているのかは、読んでくれた読者の方々の判断に委ねる形になりますが、本書が、「自分でもインターネットを利用する何かを作ってみたいけど最初の一歩を踏み出す方向性がわからない」という方々の助けになれば幸いです。
イラストサンプル
こんな感じのイラストが入ってます!
目次
目次は、次のようになっています。拙著、よろしくお願いいたします!!!
- はじめに
- 謝辞
- 第0章 インターネットの仕組みをわかりたいあなたへ
- 0.1 なぜインターネットが普及したのか?
- 0.2 ソケットとポートで説明する理由
- 0.3 「ソケット」や「ポート」という概念は「インターネット」よりも古い
- 0.4 UNIX的な視点
- 0.5 ネットワークという視点
- 0.6 読んでほしい読者像
- 1.1 スマホでWebサイトを見るとき、何が起きているのか?
- 1.2 Webの住所、URL
- 1.3 URLを指定されたWebブラウザの動作
- 1.4 IPアドレス
- 1.5 TCPの80番ポートに接続する
- 1.6 HTTPのリクエストメッセージを送信する
- 1.7 HTTPメッセージを受け取り、表示する
- 1.8 www.example.comからコンテンツを取得してみる
- 1.9 Webサーバからデータを取得するプログラムはこう書ける
- 1.10 「HTTPだから簡単にできる」という側面も
- 2.1 ソケットとは何か?-その仕組みを探る
- 2.2 パソコンの中の執事、「カーネル」
- 2.3 さまざまな作業を並行して実行!
- 2.4 プロセス間通信
- 2.5 UNIXにおける抽象化
- 2.6 通信の「入り口」となるソケット、何と通信するかを指定する「ポート」
- 2.7 次はインターネットそのものの話です
- 3.1 データがどうやって届くのか?
- 3.2 パケット交換方式の仕組み
- 3.3 パケットを転送するルータ
- 3.4 ルーティングテーブルに掲載される「ネットワーク」
- 3.5 小規模なネットワークでの静的なルーティングテーブル生成例
- 3.6 デフォルトゲートウェイ
- 3.7 小規模ネットワークでの動的なルーティングテーブル生成
- 3.8 ネットワーク内のルーティングとネットワーク間のルーティング
- 3.9 AS(Autonomous System)とルーティング
- 3.10 BGP(Border Gateway Protocol)
- 3.11 IPv4パケットの形
- 3.12 層に分かれるネットワーク
- 4.1 パケットが届く、その裏側では何が起きているのか?
- 4.2 複雑な処理は末端に任せる
- 4.3 到達性を保証するTCP
- 4.4 セッションの識別と「ポート番号」─ 複数の通信を同時にできる仕組み
- 4.5 TCPパケットを扱うカーネル
- 4.6 TCPによる接続の確立
- 4.7 TCPによる輻輳制御機構
- 4.8 UDP(User Datagram Protocol)
- 4.9 投げっぱなしジャーマンスープレックス!
- 4.10 分身の術!
- 4.11 UDPパケットのフォーマット
- 5.1 名前解決とは何か?
- 5.2 DNSの仕組み
- 5.3 キャッシュDNSサーバによる反復検索
- 5.4 ルートサーバ
- 5.5 リソースレコード
- 5.6 キャッシュの有効時間
- 5.7 ネガティブキャッシュ
- 5.8 名前空間とも関連があるインターネットガバナンス
- 6.1 誰がルールを決めているのか、ご存じですか?
- 6.2 インターネットの通信プロトコルを作るIETF
- 6.3 IETFによる標準化とは何か?
- 6.4 RFCには何が書かれているのか?
- 6.5 番号や名前などの資源を管理するIANA
- 6.6 IPアドレスやAS番号の割り振り
- 6.7 インターネットのプロトコルを作るIETFと番号資源を管理するIANA
- 6.8 ルートゾーンとIANAとICANN
- 6.9 レジストリ/レジストラ
- 6.10 ccTLDのレジストリ
- 6.11 次はプログラミングです
- 7.1 C言語でネットワークプログラミング
- 7.2 C言語を使える環境を用意しよう
- 7.3 ソケットを利用したTCPプログラミング例
- 7.4 TCPの送信元ポート番号を設定する
- 7.5 UDPのプログラミング例
- 7.6 UDPでの返信の例
- 7.7 getaddrinfo
- 7.8 IPv6とIPv4のどちらを使うべきか-Happy Eyeballs
- 7.9 TCPやUDP以外のソケット
- 8.1 pingとtracerouteを使ってみよう!
- 8.2 ping/ping6
- 8.3 traceroute/tracert/traceroute6
- 8.4 tracerouteの仕組み
- 8.5 最後の1ホップ
- 8.6 digコマンドを使ってみよう
- 8.7 Wireshark
- 8.8 TCPストリームの追跡
- 8.9 次はIPv6の紹介
- 9.1 IPv4とIPv6のデュアルスタック
- 9.2 IPv4とIPv6の両方を使う場合のソケットとポート
- 9.3 IPv4とIPv6による「2つのインターネット」
- 9.4 IPv4とIPv6はまったく別のプロトコル
- 9.5 そのほかにもいろいろと違いが
- 9.6 名前空間は共有している
- 9.7 IPv4とIPv6とDNS
- 9.8 IPv4とIPv6のどちらを使うのか判断するのはユーザ側
- 9.9 次はNATの話です
- 10.1 とても重要なNAT
- 10.2 一般的な家庭内LAN
- 10.3 NATが使われるようになった理由
- 10.4 プライベードIPアドレス
- 10.5 IPアドレスとポート番号を変換するNAT
- 10.6 NATの動作例
- 10.7 NATテーブルに含まれるエントリの削除
- 10.8 TCP以外のプロトコルも
- 10.9 増える大規模NAT
- 10.10 IPv6とNAT
- 10.11 次はサーバの仕組みです
- 11.1 インターネット上でサーバを運用する話
- 11.2 TCP接続を受け付けるWebサーバ
- 11.3 Webサーバの限界と対処
- 11.4 スケールアウト
- 11.5 Webサイトの裏側をスケールアウト
- 11.6 Web 3層構成
- 11.7 Webサイトの受付口をスケールアウト
- 11.8 ロードバランサ
- 11.9 大規模な配信を手伝うCDN
- 11.10 物理サーバ、仮想サーバ、仮想ネットワーク、クラウド
- 11.11 日進月歩の世界です
最近のエントリ
- 「ピアリング戦記」の英訳版EPUBを無料配布します!
- IPv4アドレス移転の売買価格推移および移転組織ランキング100
- 例示用IPv6アドレス 3fff::/20 が新たに追加
- ShowNet 2024のL2L3
- ShowNet 2024 ローカル5G
- ShowNetのローカル5G企画(2022年、2023年)
過去記事