netstat vs ss

declspec의 이미지

리눅스에서 netstat 명령을 치면
/proc/net/tcp 에 있는 정보를 기반으로
시스템에서 사용중인 소켓들에 대한 정보를 알려줍니다

그런데 버전 1.4 이상인가부터 netstat 대신에 ss 라는 비슷한
프로그램이 사용됩니다
man 페이지에 보면 netstat 은 obsolete 이니 ss 를 쓰라고 나와있습니다.

그런데 ss 는 /proc/net/tcp 에서 정보를 가져오는게 아닌거같더군요.
ss 는 어떻게 시스템에서 사용중인 소켓들에 대한 정보를 얻어오는걸까요?

bushi의 이미지

NETLINK_INET_DIAG 를 사용해서 커널의 inet_diag, tcp_diag 등의 드라이버와 직접 소통하는 것 같습니다.
ss.c::tcp_show_netlink()

declspec의 이미지

좋은 정보네요 감사합니다~

자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.