nend・nex8のエンジニア・技術ブログ2018-07-19tcpdumpをGolangで作成しながら低レイヤに触れたはじめまして!F@Nでバイトをしている友人からの誘いにより4月から2ヶ月間インターンで来ていた島仲です。今回は、このインターン(通称:何でもインターン)でしたことの紹介とファンコミュニケーションズさんでインターンをしての感想を紹介します。制作物の紹介タイトルにもある通りtcpdumpというキャプチャツールをGolangを使用して再実装してみました。・低レイヤの実装について理解を深める具体的に行ったことは、外部パッケージの使用を極力控えて実装できる部分は最も低い部分から調べ、実装する形をとりました。Go側からシステムコールを叩いて実装しています。わからないところは外部パッケージのソースコードを読み、紐解いていきました。差別化ただtcpdumpを再実装するのは車輪の再発明なため、独自の機能を実装したりしました。・パケットの生データ(バイナリ)の扱い方に慣れた。・Wiresharkなどで扱われるpcapファイルの仕様について理解できた。システムコールカーネルの機能を使用したい時には、システムコールを発行する。同時期にDPDKを勉強していたのでカーネルを介した割り込み処理などに関しても詳しく知ることができた。キャプチャ・パケットをキャプチャする際のタイプやオプションがあることを知れた。・フィルタの実装がkernelに実装されていることを知った(BPF)。アライメント・他アーキテクチャへの対応は時間の都合上できませんでしたが、アライメントなどを実際に意識する部分をコード・リーディング中に見ることができた。Filter)を使用したパケットフィルタリングを実装するには、フィルタから写真のようなレジスタマシンの配列を生成しソケットにアタッチしなければならないのですが、このレジスタマシンの生成方法がわからず最終的にgithub.comを使用することになってしまいました。・BPFの実装を読む(カーネルコードリーディングになるのかも...)・UIの作成を行う今後の目標インターンを通して、ますます低レイヤ部分に興味が湧いてきたので、システムプログラミングとまでは行きませんが知識をつけ低レイヤ沼に溺れて行きたい所存です。技術的な感想このインターンを通して、改めて理解を深めるためには自分で実装してみるのが大事だと言うことを実感しました。全体的な感想オフィスを初めて見学させてもらった時は割と自分の想像してた雰囲気(人も含めて)だったのですが、2ヶ月間のインターンで社内イベントやランチなどに参加させてもらったりと想像を超えるアットホームさでした(笑)最終日には全体会議での発表にも参加させてもらい、このインターンを通して会社がどう動いているかなどを少しは感じ取ることができたと思っています。Word2Vec)こんにちは!5日間インターンに参加させて頂いた中島です。終えてどうも、僕です。え?知らない?それはそう。Are青山のアドテク会社。アドネットワークやDSPを開発・運用。サーバを止めてみたよ。インターン:実業務体験編インターンでCTR予測をしましたSearchArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。