서버와 클라이언트 간 통신이 가능하도록 개발을 하다 보면 네트워크와 관련된 내용을 디버깅할 일이 많다. 두 컴퓨터를 연결하는 길목에는 수많은 장애물들이 가로막고 있기 때문이다.

네트워크를 통한 데이터 송수신이 정상적으로 동작하는지 확인할 수 있는 대표적인 도구로 netstat(참고6:netstat은 레거시이므로 ss 사용을 고려하라), ping, telnet 등이 있다. 디버깅에 사용하기 유용한 도구들을 알고 적절히 사용한다면 문제를 올바르게 정의하는 일에 도움이 될 수 있다(참고5).

sudo apt update
sudo apt install -y net-tools
sudo apt install -y iputils-ping
sudo apt install -y telnet

서버 컴퓨터에서 netstat 을 이용하면 어떤 포트가 개방되어 있는지 확인할 수 있다(참고1).

netstat -tnl *
# t: tcp 소켓 보여주기
# n: 숫자로 보여주기
# l: 서버 소켓 보여주기

포트가 개방되어 있음을 확인했다면, 클라이언트 컴퓨터에서 ping 명령을 실행해 인터넷에 연결되어 있는지를 확인한다(참고2,3,4).

ping {서버의 ip 주소 / 도메인 이름}

그 다음으로 telnet 명령을 이용해 특정 포트에 접속 가능한지를 확인한다(참고3,4).

telnet {서버의 ip 주소 / 도메인 이름} {포트 번호}

ICMP 패킷이 무엇인가?

주소 개방과 주소의 포트 개방은 다른 개념인가?

ping 과 telnet 이 OCI 7 layer 과 가지는 관계가 무엇인가?


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.

  1. None

from : 과거의 어떤 생각이 이 생각을 만들었는가?