netパッケージのコードを読む機会があったのでメモ。TCPのエコーサーバーを実行して、呼ばれているシステムコールとその引数を確認した。Go言語がシンプルなインターフェースを提供している裏側で、ノンブロッキングIOやIO多重化を駆使している様子がわかって面白かった。 動作確認用プログラムと実行環境 動作確認用に以下のエコーサーバーとクライアントを書いた。あくまで実験用。 TCP echo server/client to be used with strace 今回はこのエコーサーバーをstraceを通して実行することで、サーバー実行時に呼ばれるシステムコールを確認した。 実行環境はgolang:1.10イメージベースのdockerコンテナ。IPv6をenableにしている。また、コンテナ実行時に--security-opt=apparmor=unconfined --cap-add=SYS

