HTTPサーバを作る
wwwの仕組み
- webページはHTMLを使って記述される
- webブラウザは対象サーバの指定ポートにTCPソケットをつなぎ、通信を試みる
- ソケット: ストリームをそこに接続することのできる口
- TCP接続が完了すると、HTTPサーバプロセスとHTTPクライアントプロセス(webブラウザ)の間にストリームが構築される
- HTMLの中身が全て渡された時点でTCPストリームが切断(close)される
HTTP
- クライアントだけ書いている部分: HTTPリクエスト
- このURL之データがほしい!と要求
- サーバだけ書いている部分: HTTPレスポンス
- 要求に対するレスポンス
HTTPサーバの概略
- HTTPの仕組みとファイルシステムはとても似ている
- URL <=> パス
- GET <=> catコマンド
- HEAD <=> stat(2)
- POST <=> コマンド実行
- 普通、サーバのファイルシステムが丸見えだと色々困るのでHTTPで公開されるのは一部だけ
感想
自分はお仕事としてデータ分析に携わっており、正直Linuxの仕組みは後回しでよいと思ってました(実際この本は1年以上前に購入して寝かせていた)。
が、この本に書かれていた内容、概念はこれまで何度も出会ったことがあるなぁと感じました。
例えば、、、
- ストリームという概念があるけど、AWSにもDynamoDB streamというサービスあったな。あれと一緒か〜
- コマンドをつなぐパイプ、プロセスとプロセスをつなぐストリームということか〜
- TCPが何か分からなかったけど、ストリームでやりとりしているように見せるためのプロトコルなのか〜
などなど。プロセス、ファイルシステム、ストリームの基本概念の組み合わせで様々な処理が表現されているのは面白いなと思いました。
演習はC言語かけないのでとてもしんどかったです。所々端折ってしまったのでC言語について調べてから再チャレンジしたいです(というか最初からそうすべきでした)。