포트(port)

hoho·2025년 5월 15일

팀 업무 중 인프라 관련 업무가 늘면서 port 번호를 마주치는 경우가 점점 더 많아졌다.

팀원들이 했던 말들..

모든 노드 간 통신이 가능해야 합니다. (SSH, 6443 포트 등)

임시로 포트 열고 체크했고 통신 되는 부분 확인했습니다.

한번 개념을 잡고 가야겠다는 생각이 들어 간략하게 핵심만 정리해보고자 한다.

왜 22번 포트는 SSH인지? 왜 8080 을 자주 쓴느지? 등을 자연스럽게 이해하는 것을 목표로 한다.


Port란?

  • port는 네트워크 통신에서 어떤 서비스가 어떤 통신을 받는지 식별하는 번호이다.

  • 네트워크에서 하나의 IP 주소 내에서 여러 서비스(프로그램)을 구분하는 번호이다.

  • TCP, UDP 각각 별도로 포트 번호를 가진다. 즉 TCP80 ≠ UDP 80

참고로 TCP, UDP 란?

"TCP는 느리지만 신뢰성 있는 전송. UDP는 빠르지만 데이터 손실 감수."

TCP 는 택배

  • 주소 확인하고, 배달 상태 추적되고, 못 받으면 다시 보내줌
  • 사용 예 : 웹(http/https), ssh, ftp, 메일 등

UDP 는 우편함 전단지

  • 막 뿌리고 끝! 도착했는지 확인 안함. 대신 빠름
  • 사용 예 : 게임, 스트리밍, DNS

Port 번호 범위와 역할

0 ~ 65535 사이의 숫자를 사용할 수 있다.

범위이름설명
0 ~ 1023Well-known portsOS나 표준 서비스용 (예약됨)
1024 ~ 49151Registered ports일반 앱, 개발자가 자주 쓰는 포트
49152 ~ 65535Dynamic/private ports클라이언트나 일회성 통신용

자주 쓰이는 대표 port 번호 (필수로 알아두면 좋음)

HTTP status code처럼 실무에서 매우 자주 등장하므로 어느 정도 암기 필요

포트프로토콜서비스/의미용도 / 예시
22TCPSSH (서버 원격 접속)ssh 접속 시 사용. AWS EC2에 접근할 때, Git 서버에 SSH key 연결할 때
80TCPHTTP (웹. 비암호화)http://example.com 으로 웹 접속할 때 기본 포트
443TCPHTTPS (보안 웹)SSL 인증서를 적용한 웹사이트(https://...) 는 무조건 이 포트 사용
21TCPFTP (파일 전송)
25TCPSMTP (메일 발송)
53TCP/UDPDNS (도메인 네임 시스템)www.google.com 접속 시 내부적으로 이 포트를 통해 IP 주소 변환
3306TCPMySQL 데이터베이스mysql -h 127.0.0.1 -P 3306
5432TCPPostgreSQL 데이터베이스
6379TCPRedis캐시나 세션 저장용 Redis 서버 띄우는 경우
27017TCPMongoDBlocalhost:27017
8080TCP개발/테스트용 웹 서버 (HTTP 프로그래밍용 보조 포트)localhost:8080 에 Node.js 서버 띄울 때 사용
3000TCP개발용 웹 서버 (Node.js 등)React/Vue 개발 시 기본 포트. npm run dev 하면 localhost:3000
5000TCPFlask, FastAPI 기본 포트Python 백엔드 실습 시
9200TCPElasticsearch 검색엔진kibana로 로그 검색 시

결론

  • 포트는 "통신의 문" 이다.
  • 포트 자체보다는 그 포트를 쓰는 서비스와 맥락을 함께 이해하면 훨씬 기억에 잘 남는다.
  • 자주 쓰는 건 익혀야 실무에 지장이 없다.

필수 포트들을 외워둔다면, 회사에서 "방화벽/보안그룹 설정 시 22 포트 허용하겠다"라고 한다면 즉 SSH 연결 가능하게 하겠다는 뜻으로 이해할 수 있게 된다.

실무에서 이런 식으로!

  • 서버 접속 안될 때 : 22 포트 막힌건지 확인
  • 웹이 안 뜰 때: 8080 포트 외부 노출 안 됐나?
  • 프론트-백엔드 통신 안 될 때: 3000에서 5000으로 호출하면 CORS 에러 날 수도 있어
  • 도커 설정 시: -p 5432:5432 이런 식으로 호스트/컨테이너 포트 연결
  • AWS EC2 보안그룹 설정: 인바운드 규칙에 해당 포트를 열어줘야 함

초반엔 22(SSH), 80/443(웹), 8080/3000(개발 서버), 3306(MySQL) 정도만 익혀두기

참고

포트 열려 있는지 확인하기

telnet : 가장 오래된 방식

telnet 호스트 포트번호

nc (=netcat) : 포트 확인 + 더 많은 기능

nc -zv 호스트 포트번호
  - `-z` : 포트 스캔만 하고 데이터 송수신 안 함
  - `-v` : verbose(결과출력)

curl : HTTP 서비스 확인

curl -I URL
  # - `-I` : 헤더만 요청
  # - `-v` : 더 자세한 로그

리눅스 서버에서 포트 확인

sudo netstat -tuln
# 또는
ss -tuln

0개의 댓글