レスポンスの記述
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 24/47。
たくさんのレスポンスを読んできました。今度は自分で1つ書いてみましょう。
nc -l はポートをリッスンし、そこに入力として与えたものを、最初に接続してきたクライアントへ送信します。つまり、Webサーバーをまったく使わずに、あなた自身がサーバーになります。
printf 'HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhand written' | nc -l -p 9114 &これが何なのか見てみましょう。ステータス行、1つのヘッダー、空行、そしてボディです。これまで読んできたものとまったく同じ形を、手で入力したものです。
これで、HTTPを話すものなら何でも受け付けられます。curlをポートに向けると、text/plain のボディを持つ、ごく普通の200が返されたと報告されます。Webサーバーが行っていることは結局、常にこの形でテキストを書き出すことだからです。
この手法は、実際の仕事でも本当に役立ちます。何かがあなたに何を送信しているのか確認したいときは、その通信経路に nc -l を置き、相手が行うリクエストを読み取ってみましょう。
チャレンジ
上級者手動でサーバーになりましょう。
ポート 9114 で nc -l を使用し、ステータス行が HTTP/1.1 200 OK、Content-Type: text/plain ヘッダー、本文が正確に hand written となるレスポンスを提供します。その後、curl で取得して本文を出力します。
期待される出力:
hand written
printfを\r\nの行末で使用し、本文の前に空行を入れることを忘れないでください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド