응용 프로그램에서 사용되는 포트

응용 프로그램에서 사용되는 포트

자체 포트를 여는 애플리케이션(이 포트에 대한 서버 역할을 하여 해당 포트에서 수신 대기)과 동일한 애플리케이션이 다른 애플리케이션에 의해 바인딩된 포트에 연결되는(이 포트에 대한 클라이언트 역할을 함) 애플리케이션을 테스트하고 있습니다.

애플리케이션이 어떤 포트를 생성하고 어떤 애플리케이션과 포트에 연결하는지에 대한 개요를 알고 싶습니다.

어떻게 해야 하나요?

답변1

이를 위해 사용할 수 있습니다 netstat. 예를 참조하세요(나는 을 찾았습니다 ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

설명:

나는 종종 매개변수를 사용합니다 -putan(기억하기 쉽기 때문입니다).

  • -p: 애플리케이션/프로세스의 PID를 표시합니다.
  • -u: UDP 포트/연결 표시
  • -t: TCP 포트/연결 표시
  • -a: 청취 소켓과 비청취 소켓을 모두 표시합니다.
  • -n: 숫자 출력(호스트 이름 등에 대한 DNS 조회를 수행하지 않음)

위 출력에서는 모든 네트워크 인터페이스( )의 포트에서 수신 대기하는 sshdPID가 있는 ssh 데몬 프로세스( ) 가 있음을 알 수 있습니다 . 또한 포트 번호의 IP 주소에 연결된 SSH 클라이언트 프로세스(PID)가 있습니다. 내 IP 주소는 이고 외부 포트는 입니다 . 연결이 설정된 것을 확인할 수 있습니다. 따라서 을(를) 통해 로그인했습니다 .1725220.0.0.024911.2.3.5221.2.3.445734ssh

답변2

이를 수행할 수 있는 또 다른 도구는lsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

사용된 옵션은 다음과 같습니다.

  • -i프로세스에 의해 열린 인터넷 포트를 인쇄하려면
  • -a모든 옵션을 AND로 연결하려면
  • -p 1981프로세스 1981의 출력을 표시합니다.
  • -n호스트 이름 조회를 금지하고 대신 IP를 표시합니다.
  • -P서비스 조회를 금지하고 대신 포트 번호를 표시합니다.

lsof더 큰 출력에서 ​​프로세스를 찾아내지 않고도 확인할 프로세스를 지정할 수 있다는 장점이 있습니다. 이전보다 더 표준이 되어가고 netstat있지만 시스템에서 더욱 안정적으로 사용할 수 있습니다 .lsof

답변3

우리는 이미 좋은 답변을 가지고 있지만 명령이 실행되는 순간 열려 있는 포트만 나열합니다.

strace애플리케이션 수명 동안 열린 연결을 모니터링하는 데 적합한 도구입니다.

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

출력에는 UDP 요청 및 열렸지만 닫힌 연결과 같은 추가 정보가 표시됩니다.

답변4

ss -a4 | less

IPv4에 대해 말씀하시는 것 같습니다... 그렇지 않은 경우 앞의 명령에서 4를 6으로 바꿀 수 있습니다. -a 매개변수는 모든 포트(수신 및 비수신)를 표시하는 것입니다. 디스플레이에서 이름을 확인하지 않으려면 매개변수에 -n을 추가할 수 있습니다.

관련 정보