업데이트:

포트는 무엇인가?

 포트는 TCP 혹은 UDP 통신(OIS 7계층 중 전송 계층)에서 사용하는 개념이다. 하드웨어와 하드웨어를 연결하는 물리 인터페이스(USB포트, LAN 포트 등)를 의미하는 경우도 있으나, 소프트웨어 개발자 관점에서 포트란 이보다는 네트워크 서비스 혹은 프로그램을 구별하는 일종의 단위 개념에 더 가깝다.

 이러한 전송 계층 네트워크 서비스 식별 단위를 포트라고 부르며 각각의 포트는 번호로 구별하여 부른다.

 따라서 포트 번호는 코딩테스트나 네트워크 통신이 없는 간단한 프로그래밍에서는 알지 못 하더라도 문제가 없는 개념이다. 하지만 웹 서비스 프로젝트를 하고 서버를 다루게 된다면 OIS 7계층과 함께 필수적으로 외워야 하는 일종의 상식이나 다름없다.

포트 번호 종류

 포트 번호는 크게 세 그룹으로 나눌 수 있다. 국제 인터넷 주소 관리기구와 인터넷 할당 번호 관리 기관이 분류하였으며 권고안에 가깝기 때문에 강제성을 띄지는 않는다.

  • 0 ~ 1023: 잘 알려진 포트 (well-known port)
  • 1024 ~ 49151: 등록된 포트 (registered port)
  • 49152 ~ 65535: 동적 포트 (dynamic port)

 잘 알려진 포트는 SSH, FTP, HTTP 등 널리 사용되는 특정 프로토콜 통신을 할당 한 포트들이며, 등록된 포트는 기업에서 등록하여 사용하고 있는 포트이다. 동적 포트는 특별한 용도가 지정되지 않은 포트이며, 어느 프로그램에서나 사용하는 포트 번호 구간이다.

잘 알려진 포트 목록

 다음은 잘 알려진 포트 중에서도 자주 사용되거나 알아두어야 하는 포트 번호와 프로토콜을 정리한 표이다.

포트 번호 프로토콜 TCP/UDP
20 FTP 데이터 TCP
21 FTP 제어 TCP
22 SSH TCP
23 Telnet TCP
25 SMTP(Simple Mail Transfer Protocol) TCP
53 DNS TCP/UDP
80 HTTP TCP/UDP
110 POP3 TCP
111 RPC TCP/UDP
139 넷바이오스 TCP
143 IMAP4 TCP
220 IMAP3 TCP
443 HTTPS TCP
445 SMB UDP

등록된 포트 목록

 등록된 포트 목록에서도 알아두어야 할 번호들이 있다. 주로 기업이나 단체에서 제공하는 서비스나 라이브러리, 프레임워크 등에서 사용하는 포트들이다.

포트 번호 프로토콜
3000 Node.JS
3306 MySQL
3389 마이크로소프트 원격 데스크톱
8000 많은 개발서버의 기본 포트번호
8080 HTTP Alt (80포트 대체), Tomcat

로컬호스트에서의 포트 번호 사용

 IP 주소 127.0.0.1, 호스트명 localhost인 루프백을 이용한 테스트 서버에서는 이러한 포트 번호를 준수해야 할 중요도가 떨어지는 편이다.

 그러나 서버 개발을 위해서는 웰노운포트는 어느정도 외우고 있는것이 좋으며 외부 배포용 서버에서는 포트 번호 권고안을 준수하는것이 중요할 것이다.