#
ドキュメント

Document

自分のための備忘録です。

ソケット間通信

この内容は以下の書籍を参考にしています。
『Softwea Design [別冊] Linux ブートキャンプ』(p101)

Untitled

※ ソケットとは具体的にはソケットファイルのことです。

ソケットファイルはどこにあるか

lsof -P -n -i:8000
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 1382 root    4u  IPv4  30221      0t0  TCP *:8000 (LISTEN)
docker-pr 1388 root    4u  IPv6  30230      0t0  TCP *:8000 (LISTEN)

LISTENしているPIDを調べます。

↑で調べたPIDのFDは/proc/1382/fdディレクトリに格納されています。

ll /proc/1382/fd
total 0
dr-x------ 2 root root  0 Jul 16 16:48 ./
dr-xr-xr-x 9 root root  0 Jul 16 16:48 ../
lr-x------ 1 root root 64 Jul 16 16:48 0 -> /dev/null
l-wx------ 1 root root 64 Jul 16 16:48 1 -> /dev/null
l-wx------ 1 root root 64 Jul 16 16:48 10 -> 'pipe:[30570]'
lr-x------ 1 root root 64 Jul 16 16:48 11 -> 'pipe:[30571]'
l-wx------ 1 root root 64 Jul 16 16:48 12 -> 'pipe:[30571]'
l-wx------ 1 root root 64 Jul 16 16:48 2 -> /dev/null
lrwx------ 1 root root 64 Jul 16 16:48 4 -> 'socket:[30221]'
lrwx------ 1 root root 64 Jul 16 16:48 6 -> 'anon_inode:[eventpoll]'
lr-x------ 1 root root 64 Jul 16 16:48 7 -> 'pipe:[30222]'
l-wx------ 1 root root 64 Jul 16 16:48 8 -> 'pipe:[30222]'
lr-x------ 1 root root 64 Jul 16 16:48 9 -> 'pipe:[30570]'

ソケットファイルの実体は/proc/1382/net/tcpファイルです。

ref.

システムコール

代表的なシステムコールは以下のとおりです。

  • socket
  • bind
  • listen
  • connect
  • accept
  • read
  • write

システムコールは以下を参照してください。
SYSCALLS