백엔드 개발하다 보면 서버 한 대에 api-server, admin, batch, db, redis 같은 프로세스를 동시에 올리는 게 흔하다.
이때 “서버 IP는 하나인데, 요청은 어떻게 정확한 서비스로 들어가지?”를 해결하는 게 PORT다.
IP와 PORT는 역할이 다르다
- IP: 패킷이 도착할 컴퓨터(호스트)를 찾는다. (어디로 보낼지)
- PORT: 그 컴퓨터 안에서 데이터를 받을 프로세스/서비스를 찾는다. (누가 받을지)
주소로 비유하면:
- IP = 건물 주소
- PORT = 건물 안 “호실/문 번호”
그래서 통신에서 흔히 말하는 대상은 보통 이렇게 표현된다.
- IP:PORT
예) 127.0.0.1:8080, 192.168.0.10:3306
PORT는 어디에 존재하나?
PORT 번호는 IP 헤더에 있는 게 아니라 TCP/UDP 헤더에 있다.
- IP는 “호스트까지 배송”
- TCP/UDP는 “호스트 안에서 어느 프로세스로 전달할지”를 결정
그래서 실제 연결은 다음 조합으로 식별된다.
- (출발지 IP, 출발지 PORT) ↔ (목적지 IP, 목적지 PORT)
서버 포트 vs 클라이언트 포트
서버는 “고정 포트”를 연다(Listen)
웹 서버는 보통 고정 포트로 요청을 받는다.
- HTTP: 80
- HTTPS: 443
개발 환경에서는 8080, 3000 같은 포트를 많이 쓴다.
클라이언트는 임시 포트를 쓴다
브라우저나 앱이 요청을 보낼 때는 OS가 남는 포트를 하나 잡아준다.
그래서 연결은 보통 이런 형태다.
- 클라이언트: 내IP:임시포트 → 서버: 서버IP:80(또는 443/8080)
이 구조 덕분에 같은 브라우저에서도 동시에 여러 요청/연결이 가능하다.
포트 번호 범위
- 범위: 0 ~ 65535
- 자주 보는 대표 포트
- 22: SSH
- 80: HTTP
- 443: HTTPS
- 3306: MySQL
- 5432: PostgreSQL
개발할 때 PORT 이슈
- 포트 충돌(Already in use)
이미 다른 프로세스가 쓰고 있으면 서버가 안 뜬다.
(예: 스프링 8080, 프론트 3000, DB 3306 등) - 방화벽/보안 그룹 규칙
운영 환경에서는 “열어둔 포트만 접근 가능”하게 제한하는 경우가 많다.
서비스 공개는 결국 “어떤 포트를 열어둘 것인가”랑도 직결된다.
'HTTP·Network' 카테고리의 다른 글
| URI란? URI/URL/URN 차이 정리 (0) | 2026.02.09 |
|---|---|
| DNS란? (0) | 2026.02.09 |
| TCP vs UDP(전송 계층) (0) | 2026.02.06 |
| IP(인터넷 프로토콜) (0) | 2026.02.06 |
| 인터넷 통신 (0) | 2026.02.06 |