あらすじ
普段あたりまえのようにネットワークを使っていますが,「IPアドレスを持っている」とはどういったことか,本当に理解できているでしょうか。本書では,IPやUDP,TCPを自作し,ネットワークの仕組みを体験。pingのやりとりを行うプログラムを,DHCPクライアント機能の実装,TCPの送受信と切断を行うものへと拡張していくことで,RFCを眺めるだけでは見えにくいプロトコルの全体の流れをつかめます。ソケットライブラリに頼っていては得られない,問題の切り分けや問題発生の予防に役立つ力も身につきます。
...続きを読む感情タグBEST3
Posted by ブクログ
ARP, IP, UDP, DHCP, TCPをPF_PACKETを使いユーザプロセスで実装する本。
最初にプロトコルの概要を少し説明したあとは、ほぼソースコードで、最低限の解説を挟んでいく構成。
解説用に色々割りきったシンプルな構成のプログラムになっていてとてもわかりやすい。
プロトコル自体について知りたい人向けではなく、低レイヤに興味があって実装イメージを持ちたい人に最適な本だとおもう。
ところで久々にネットワークの本を読んだ。
やっぱりやってることはすごく単純。それだけに今これだけ多くの機器がインターネットにつながってそれなりに意志疎通できてる状況って奇跡的だなぁとあらためて感じた。
Posted by ブクログ
socket(2) に AF_PACKET/SOCK_RAW/ETH_P_IP を指定してリンクレイヤーに接続し、その上に ethernet から tcp までを自作していくというもの。
カーネルモジュールを書くお作法は勉強しなくて良いし、変に改造してもカーネルクラッシュする心配はないし、ユーザランドでこういう自作をするのは仕組みに集中できるので良いなと感じた。一方で、STREAMS みたいなフレームワークのありがたみも感じることができた。
さらさらと読みこなすには、それなりに知識が必要。
- Linux (or UNIX) で C プログラミングをしたことがある
- POSIX スレッドとか、reader-writer ロックとか
- TCP/IP の概要を知ってる(OSI 7 階層モデルとか、カプセル化とか)
紙面の幅とか色々制限が色々あったのかも知れないが、コード自体は読みにくい。