포트 번호란?
하나의 컴퓨터가 동시에 여러 네트워크 서비스를 운영할 수 있는 것은 포트(port) 번호로 각 서비스를 구분하기 때문입니다. IP 주소가 "어느 건물인지"를 가리킨다면, 포트 번호는 "그 건물의 몇 호실인지"를 가리키는 것과 비슷합니다. 접속은 보통 IP 주소 + 포트 번호 + 프로토콜(TCP 또는 UDP)의 조합으로 식별됩니다. 브라우저가 서버에 접속할 때 서버 쪽은 80이나 443처럼 정해진 번호를 쓰고, 내 컴퓨터 쪽은 운영체제가 비어 있는 동적 번호를 임시로 골라 쓰는 것이 일반적입니다.
번호는 누가 정하나: IANA 등록부와 세 구간
포트 번호의 배정은 IANA(인터넷 할당 번호 관리기관)의 「서비스 이름 및 포트 번호 등록부」에 기록됩니다. 등록 절차와 구간 이름은 IETF의 RFC 6335(BCP 165)가 정리했습니다. 이 문서는 포트를 아래 세 구간으로 나눕니다.
| 구간 | 번호 범위 | 번호 개수 | 다른 이름 | 배정 |
|---|---|---|---|---|
| 시스템 포트 | 0~1023 | 1,024 | Well-Known Ports | IANA가 배정 |
| 사용자 포트 | 1024~49151 | 48,128 | Registered Ports | IANA가 배정 |
| 동적 포트 | 49152~65535 | 16,384 | Private·Ephemeral Ports | 배정하지 않음 |
초기의 잘 알려진 포트들은 인터넷 초창기 담당자들이 하나씩 배정했고, IANA 등록부에는 FTP·Telnet 항목의 담당자로 존 포스텔(Jon Postel)이 기록되어 있습니다. 오늘날에는 새 서비스가 번호를 받으려면 등록 신청과 검토를 거칩니다. 아래 카드의 번호 대부분은 이 등록부에 같은 이름으로 올라 있는 서비스입니다.
등록부 이름과 현장 관례는 다를 수 있다
카드에 적힌 용도가 모두 IANA 등록부의 서비스 이름과 같은 것은 아닙니다. 아래는 IANA 등록부(조회 시점 2026년 10월)와 비교했을 때 차이가 있거나 참고할 만한 항목입니다.
| 포트 | 이 페이지의 설명 | IANA 등록부의 서비스 이름 | 해석 |
|---|---|---|---|
| 587/TCP | SMTP 제출 | submission (RFC 6409) | 일치 |
| 465/TCP | TLS SMTP | submissions (RFC 8314, 2017-12-12 등록) | TLS 위의 메일 제출로 등록됨 |
| 993·995/TCP | IMAPS·POP3S | imaps, pop3s | 일치 |
| 3306·5432·1433/TCP | MySQL·PostgreSQL·SQL Server | mysql, postgresql, ms-sql-s | 일치 |
| 6379·27017/TCP | Redis·MongoDB | redis, mongodb | 일치(각각 2015년, 2019년 등록 기록) |
| 2375·2376/TCP | Docker API | docker, docker-s (2014-04-17 등록) | 일치. 2375는 "plain text"로 표시됨 |
| 8080/TCP | HTTP 대체 | http-alt | 일치 |
| 8443/TCP | HTTPS 대체 | pcsync-https | HTTPS 대체 포트로 쓰이는 것은 관례 |
| 1521/TCP | Oracle 리스너 | ncube-lm | Oracle 기본값은 제품 관례이며 등록부 이름은 다름 |
| 3000/TCP | Node.js·React 개발 서버 | hbci 등 | 개발 도구 기본값 관례 |
| 5000/TCP | Flask 개발 서버 | commplex-main | 개발 도구 기본값 관례 |
| 8000/TCP | Django 개발 서버 | irdmi | 개발 도구 기본값 관례 |
| 4321/TCP | Astro 개발 서버 | rwhois (RFC 2167) | 개발 도구 기본값 관례 |
| 9200/TCP | Elasticsearch HTTP | wap-wsp | 제품 기본값 관례 |
이 차이가 말해 주는 것은 단순합니다. 포트 번호만 보고 "여기서 도는 것은 반드시 이 서비스"라고 단정할 수 없고, 반대로 같은 번호를 다른 프로그램이 쓸 수도 있습니다. IANA 등록부 1521번 항목에는 등록된 서비스 외의 용도로 쓰이는 것이 알려져 있다는 취지의 주석도 달려 있습니다. 또 143번(IMAP)·993번(IMAPS)은 TCP로만 등록되어 있고 UDP는 예약(Reserved) 상태로 표시됩니다.
실제 사례 두 가지: 열려 있던 포트가 문제가 된 순간
사례 1. 2017년 워너크라이: SMB(445) 취약점과 경계 차단
2017년 5월 12일, 워너크라이(WannaCry) 랜섬웨어가 전 세계에 퍼졌습니다. 미국 CISA(US-CERT) 경보에 따르면 이 악성코드는 윈도의 SMBv1 취약점(MS17-010, 속칭 EternalBlue)을 이용해 전파되었고, 마이크로소프트는 같은 취약점의 보안 업데이트를 이미 2017년 3월 14일에 내놓은 상태였습니다. CISA가 가장 먼저 권고한 것은 패치 적용이었고, 패치가 어려우면 SMBv1을 끄고 네트워크 경계에서 SMB 계열 통신(TCP 445, UDP 137~138, TCP 139)을 막으라고 안내했습니다. 같은 경보는 이 차단이 파일 공유 등에 지장을 줄 수 있으니 이득과 불편을 따져 보라고도 덧붙였습니다. 배울 점은 두 가지입니다. 포트 차단은 패치를 대신하지 못하는 임시 방어선이라는 점, 그리고 파일 공유용 포트를 인터넷 경계 밖으로 노출할 이유가 거의 없다는 점입니다.
사례 2. 2016년 미라이: 기본 비밀번호와 원격접속 포트
2016년 10월 14일 CISA가 발표한 경보(TA16-288A)는 미라이(Mirai) 같은 봇넷이 인터넷에 연결된 사물인터넷 기기를 끊임없이 훑어, 흔히 쓰이는 62개의 기본 사용자 이름·비밀번호 조합으로 로그인해 감염시킨다고 설명합니다. 이 경보는 대응책으로 감염된 기기의 네트워크 분리, 재부팅(미라이가 메모리에 상주하므로), 기본 비밀번호 변경 후 재연결을 안내했고, 점검 항목으로 Telnet 포트 23/TCP와 2323/TCP에 대한 무단 접속 시도 감시를 들었습니다. (경보가 감염 경로를 Telnet이라고 명시한 것은 아니므로, "미라이 = Telnet"이라고 단정하지 않는 편이 정확합니다.) 배울 점은 포트를 여는 것만큼 열린 서비스의 인증이 약하지 않은지가 중요하다는 것입니다.
직접 해보기: 내 장비의 포트 점검
- 듣고 있는 포트 보기: 윈도 명령 프롬프트의
netstat -an은 LISTENING 상태의 포트를 보여 줍니다. 조회만 하는 명령이라 설정을 바꾸지 않습니다. - 범위 구분하기: 0.0.0.0에서 듣는 포트는 모든 네트워크 인터페이스에서 접속을 받을 수 있고, 127.0.0.1에서만 듣는 포트는 내 컴퓨터 안에서만 접속됩니다.
- 모르는 포트는 프로그램부터 확인: 번호만으로 판단하지 말고 어떤 프로세스가 열었는지 확인합니다.
- 공유기 포트포워딩 목록 점검: 쓰지 않는 규칙은 지웁니다. 자세한 방법은 포트포워딩 가이드를 참고하세요.
- 원격접속은 암호화·인증·범위 제한: 같은 용도라면 평문 서비스(Telnet 23)보다 암호화된 서비스(SSH 22)를 쓰고, 접속 가능한 주소를 제한합니다.
가상 예시: 집에서 작은 서버를 돌리는 사람이 netstat 결과에서 3306(MySQL)이 0.0.0.0으로 듣고 있는 것을 발견했다고 가정해 봅시다. 같은 컴퓨터의 프로그램만 쓰는 데이터베이스라면 접속 주소를 127.0.0.1로 제한하면 외부에서 닿을 일이 없어집니다. 실제 설정 방법은 사용하는 소프트웨어 문서를 확인해야 합니다.
흔한 오해와 정정
- 오해: 포트 번호가 곧 서비스의 정체다. 실제: 번호는 약속일 뿐입니다. 웹 서버를 8443이나 2222 같은 번호에서 돌릴 수도 있고, 앞의 표처럼 같은 번호가 등록부와 현장에서 다른 뜻으로 쓰이기도 합니다.
- 오해: 80은 HTTP, 443은 HTTPS로만 쓸 수 있다. 실제: IANA 등록부에서 두 번호 모두 TCP와 UDP로 각각 등록되어 있고, 서버 관리자는 다른 번호도 지정할 수 있습니다.
- 오해: 1024 이상은 안전하고 낮은 번호만 위험하다. 실제: 3306·3389·6379처럼 1024 이상인 포트도 노출되면 공격 대상이 될 수 있습니다. 위험은 번호가 아니라 노출 범위와 인증에서 옵니다.
- 오해: ping이 되면 어떤 포트든 열려 있다. 실제: ping이 쓰는 ICMP에는 포트 개념이 없습니다. ping 성공은 해당 기기까지 도달한다는 뜻일 뿐 특정 서비스 포트가 열렸다는 뜻이 아닙니다.
한계와 더 알아볼 점
이 페이지의 목록은 자주 쓰는 포트의 일부이며, IANA 등록부에는 수만 개 항목이 있습니다. 소프트웨어의 기본 포트는 버전과 설정에 따라 바뀔 수 있어 실제 운영 전에는 해당 제품 공식 문서를 확인해야 합니다. 또한 동적 포트 구간을 운영체제가 어떻게 쓰는지는 운영체제와 버전마다 다릅니다. 이 글은 일반 정보이며 특정 환경의 보안 컨설팅을 대신하지 않습니다. 방화벽 설정을 바꾸기 전에는 현재 설정을 기록해 두세요.
유의사항
이 페이지는 네트워크·개발 학습을 돕는 교육용 콘텐츠이며, 실제 서비스 운영 시 포트는 보안 설정에 따라 다르게 지정될 수 있습니다. 방화벽에서 포트를 열거나 서버 설정을 변경할 때는 보안 위험을 충분히 고려하시길 권장합니다.
자주 묻는 질문
TCP와 UDP는 어떻게 다른가요?
TCP는 데이터 전달을 확인하며 순서대로 전송하는 신뢰성 높은 방식으로 웹·이메일·파일전송에 주로 쓰이고, UDP는 확인 절차 없이 빠르게 전송하는 방식으로 DNS 조회, 실시간 스트리밍, 온라인 게임 등 속도가 중요한 서비스에 주로 쓰입니다.
포트를 왜 막아야 하나요?
불필요하게 열려 있는 포트는 해커가 공격을 시도할 수 있는 통로가 될 수 있습니다. 실제로 사용하지 않는 서비스의 포트는 방화벽에서 차단하는 것이 보안상 안전합니다.
내 컴퓨터에서 어떤 포트가 열려 있는지 확인할 수 있나요?
이 페이지는 포트 번호별 용도를 설명하는 참고 자료이며, 실제 열린 포트를 확인하려면 별도의 네트워크 진단 도구(예: 명령 프롬프트의 netstat 명령어)를 사용해야 합니다.
포트 번호는 몇 번까지 있나요?
TCP와 UDP 각각 0부터 65535까지 총 65,536개입니다. 이 중 0~49151이 IANA가 배정하는 구간이고, 49152~65535는 배정하지 않는 동적 구간입니다(RFC 6335 기준).
SMTP 25번과 587번, 465번은 무엇이 다른가요?
25번은 메일 서버끼리 메일을 전달하는 기본 포트이고, 587번은 메일 프로그램이 인증을 거쳐 메일을 제출하는 submission(RFC 6409) 포트입니다. 465번은 RFC 8314에 따라 TLS 위에서 메일을 제출하는 submissions로 IANA에 등록되어 있습니다. 메일 서비스마다 안내하는 번호가 다르니 해당 서비스의 설정 안내를 따르세요.
개발 서버 포트(3000, 5000 등)는 외부에서 접속되나요?
개발 도구마다 기본 접속 허용 범위가 달라, 내 컴퓨터에서만 접속되게 하는 경우도 있고 같은 네트워크의 다른 기기에서도 접속되게 하는 경우도 있습니다. 공유기 포트포워딩이나 방화벽 예외를 만들지 않았다면 인터넷에서 직접 닿지는 않는 것이 일반적이지만, 설정은 도구 문서로 확인하세요.
UDP 포트도 방화벽에서 따로 막아야 하나요?
TCP와 UDP는 별개의 프로토콜이라 같은 번호라도 각각 규칙이 필요합니다. 방화벽 규칙을 만들 때 어느 프로토콜을 대상으로 하는지 확인하세요.
이어서 읽어 보세요
- 컴퓨터 포트 가이드: 포트의 개념을 다른 각도에서 정리
- TCP와 UDP의 차이: 같은 번호가 두 프로토콜에 등록되는 이유의 바탕
- 방화벽 기초: 포트를 열고 닫는 규칙의 원리
- 포트포워딩 가이드: 공유기에서 외부 접속을 연결하는 방법과 위험