分12今回はプロトコルについて話してみます。インフラエンジニアをやっていると,「⁠プロトコルを知っているかどうか」というのが他のエンジニアと差がつく部分のひとつになります。そこで知っておきたいのが,まずtelnetについてです。「手動でプロトコルを送る道具」としてのtelnetssh以前はコンピュータに接続するにはtelnetが多かったわけですが(rloginとかrshとかもありましたけど⁠)⁠,telnet自体はtelnetサーバ(telnetdなど)とやりとりしてコンピュータと接続する(ログインする)ためのコマンドであると同時に,平文を無手順で送受信できるため,平文のプロトコルであれば手入力で再現することができる道具でもあります。[port]ではないのと,host自体も省略できます(その場合interactiveモードに入ります。helpと打つとコマンド一覧が出ます⁠)⁠。port(25や80)を指定して起動すると,それらのサーバと接続することができます。バイナリプロトコルには使えません残念ながら平文以外(バイナリプロトコルや暗号化するプロトコル)や,UDP上のプロトコルはtelnetでは扱えませんが,暗号化やUDPとのやり取りは,そういうツールを作れば平文でやりとりすることができるようになります。バイナリプロトコルは専用のツールを作るしかありません。いえ,バイナリプロトコルのためのツールを作るのはさほど難しいことではないので,チャレンジしてみるのもいいと思います。Perlだとバイナリプロトコルを扱えるCPANモジュールがたくさんあったりしますし,なくてもプロトコルフォーマットさえわかれば作れます。筆者は昔,PerlでNTPを扱えるモジュールがないので,そういうスクリプトを書いたことがあります。Perlの場合は,pack,unpackとビットシフト,あとはsocket操作ができれば自由自在です。UDPの扱いや暗号化するプロトコル,バイナリプロトコルについてはまた機会があれば紹介するとして,今回はTCP上の平文プロトコルに限定して解説してみます。プロトコルを知るところからです。プロトコルの原典「RFC」プロトコルはRFCに書いてあります。RFCについても近々この連載でとりあげたいと思いますが,RFCは誤解を怖れずに超簡単に言えば「インターネット上の各種の約束について書いてある文書」です。RFCにはInformationalやDraft,Standardなど各種の「状態」があります。本来であればStandardが「標準の」状態になるわけですが,RFCは法律ではなく「提案された約束事」なので,常にStandardを参考にして実装されているわけではなく,Draft状態で実装されているケースもありますから,そこは適宜使い分けましょう。RFCの公式な置き場所は以下になります。(RFC)URL:http://www.ietf.org/rfc.htmlただ,RFCは各所にコピー(ミラー)されていますので,手に入れやすいところを探しましょう。ミラーポリシー的に許されるのであれば,組織ごとにコピーを置いても良いと思います(いまのミラーポリシーは把握していませんすみません⁠)⁠。RFCは全部英語ですが,有志の方々による日本語化されたRFCもたくさんあります。最新のRFCは訳されていないことも多いので,そういう時は英語を頑張って読みましょう。RFCの読み方RFCで最初にぶつかる壁は「どれを読めばいいかわからない」という点です。検索することもできますが,執筆時点で6000を越えているので,適切なRFCに辿りつけない可能性もあります。facilities⁠”というタイトルなので,“⁠DNS⁠”で検索しても引っかかりません。このあたりは正直「慣れ」るしかない部分もあります。以下のURLに全RFCの一覧があるので,このファイルを検索したりざっと眺めてみるのも良いと思います(RFCトップページで検索フォームを使うより速いです⁠)⁠。INDEXURL:http://www.ietf.org/rfc/rfc-index.txtこの一覧(そして個々のRFCの文頭にもありますが)には「Status」という部分がありますが,ここがそのRFCの状態を表しています。by」という部分です。このどちらも書いてないRFCもたくさんありますが,「⁠Obsoletes」と書いてあるのは,他のRFCを「時代遅れにしている」という意味─つまり更新版であるということです。by」はその逆で,他のRFCによって「時代遅れにされている」という意味になります。by」のRFCは基本読む必要がありません(昔のRFC実装をしているサーバの挙動を調べるときなどは読む必要があるかもしれません⁠)⁠。by」という記述がある場合もあります。by」は文書の一部分について更新している,されているというケースになります。by」が付いていても,その文書は有効な部分がある(ことがある)ということになります。アスキー,So-netなどでネットワーク,サーバエンジニアを経験。オン・ザ・エッヂ(現ライブドア)のデータセンターである「データホテル」を構築,運営。ZETA株式会社)を設立,代表取締役就任(現任)。CX」シリーズとして検索エンジンやレコメンドエンジンを開発,販売している。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。業務を改善する情報共有の仕掛け~DevOpsの実現,RPAの導入に向けて~ソフトウェア開発の業務改善をテーマに,DevOps実現の手順やそれを助けるツールとの連携,RPAによる社内ドキュメントの管理や効率化について解説します。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。