ISBN 9784274065194

TCP/IPソケットプログラミング(C言語編)

TCP/IPソケットプログラミング(C言語編)
出版社
オーム社
刊行
2003-05

概要

ソケットAPIを通じてTCP/IP通信の仕組みを実装レベルで理解する

想定読者

Cの基礎を持ちネットワーク通信機能を実装したいエンジニア・学生、またはシステムコールレイヤでのTCP/IP動作を理解したい人

こんな人には向いていない

  • ネットワークプログラミングの実務経験が豊富なエンジニアには、184ページのコンパクトな構成では網羅性・深度ともに物足りない
  • PythonやJava等の高水準言語でのサーバ開発を主とする人には、C言語特有のシステムコール操作の比重が高く実務への直結度が低い
  • TCP/IPプロトコルの設計原理や仕様を深く学びたい読者には、実装側のAPI解説に特化しているためプロトコル理論の学習としては不十分

読了後にできるようになること

  • TCP/UDPソケットを使ったクライアント/サーバプログラムをC言語で実装できる
  • send()/recv()呼び出し時のカーネルバッファの動作を説明できる
  • I/O多重化(select/poll)や非ブロッキングI/Oを用いた並行接続処理を実装できる
  • ドメイン名からIPアドレスを取得する名前解決APIの仕組みを理解して使いこなせる

本書のキー概念(章解説)

  • 第 1 章 第1〜4章:クライアント/サーバの基礎構築 — シンプルなecho通信を動かしながらソケットAPIの全体像をつかむ導入部
  • 第 5 章 ソケットのさまざまな利用方法 — マルチタスク・非ブロッキングI/O・シグナルなど実務で必要な技法を概観
  • 第 6 章 ソケット操作の内部メカニズム — send()/recv()のカーネルバッファ動作など隠れた仕組みを解説する最重要章
  • 第 7 章 ドメイン名解決(DNS) — getaddrinfo()等の名前解決APIの基礎となる仕組みを扱う

ハイライト

  • 第1章から第4章では、シンプルなクライアント/サーバの構築を目指します。ここでの経験は課題に取り組むのに役立つはずです。第5章では、ソケットのさまざまな利用方法を紹介します。(クライアント/サーバ構築という明確な到達点を示しており、読者が自分のゴールと照合しやすい箇所)
  • 第6章では、ソケット操作の基本に立ち返り、隠れたメカニズムを取り上げ、気をつけなければいけない点などを詳しく説明します。第7章では、ドメイン名からIPアドレスを取得する、いわゆる名前解決について解説します。(他の入門書が触れにくいカーネル内部の隠れたメカニズムを扱う章の説明。Qiitaの読者レビューで最も評価された内容に対応する)

外部からの言及

  • CでのソケットAPIチュートリアル記事が本書を参考文献として挙げるパターンが複数あり、C言語ソケットプログラミングの入門教材として定着している(qiita)
  • エンジニアのキャリア読書リストに登場する際は、ネットワーク組み込み系の業務が必要になった2年目エンジニア向けに推薦されることが多い。Java中心の開発者には必須ではないと明示されており、対象読者の絞り込みが正直(qiita)
  • 2024年の読書振り返りレビューで最高評価を与えた記事では、send()/recv()呼び出し時のカーネルバッファ動作の説明が極めてわかりやすいという点が特筆されており、TLPI等の大著とは異なる切り口で理解を与えてくれるという評価がある(qiita)

編集メモ

Qiita引用11件 / 累計likes 385 / 最高likes記事(237)のC言語ソケットチュートリアル連載が参考文献として掲載 / 2024年に新規★★★★★レビュー有

読む前に押さえておきたいこと

  • C言語の基本構文(ポインタ・構造体・メモリ管理)を扱える実力
  • TCP/IPのレイヤ構造(IP/TCP/UDP)についての概念レベルの理解
  • Linux/Unixのコマンドライン操作とgcc等でのコンパイル環境

学習のコツ

  • 第6章(ソケット操作の内部メカニズム)を最重要章として先に目を通しておくと、第1〜4章のサンプルコードの挙動がより深く理解できる
  • 第1〜4章のサンプルをターミナル2つで実際にコンパイル・実行しながら読むと、クライアント/サーバの通信フローが体感的に把握できる
  • 184ページのコンパクトな構成を活かして通読後に重点章を繰り返し読む往復読みが効果的。特に第6章は実装で詰まるたびに参照する使い方が多い
  • 第7章(名前解決)は現代のgetaddrinfo()API利用前の理論的背景として読むと、ライブラリの設計意図の理解につながる
出版社による内容紹介

第1章から第4章では、シンプルなクライアント/サーバの構築を目指します。ここでの経験は課題に取り組むのに役立つはずです。第5章では、ソケットのさまざまな利用方法を紹介します。第6章では、ソケット操作の基本に立ち返り、隠れたメカニズムを取り上げ、気をつけなければいけない点などを詳しく説明します。第7章では、ドメイン名からIPアドレスを取得する、いわゆる名前解決について解説します。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。