포트(Port)는 하나의 IP 주소 안에서 여러 애플리케이션을 구분하기 위한 16비트 숫자입니다.
IP 주소는 특정 컴퓨터를 식별하지만, 그 컴퓨터에서 어떤 프로그램이 데이터를 받아야 하는지는 알 수 없습니다. 포트 번호가 있어야 운영체제가 패킷을 올바른 프로세스에 전달할 수 있습니다.
192.168.1.100:80 → 웹 서버
192.168.1.100:22 → SSH 서버
192.168.1.100:443 → HTTPS 서버
운영 체제 수준에서 관리하며, 관리자 권한이 있어야 바인딩할 수 있습니다.
| 포트 | 프로토콜 |
|---|---|
| 20, 21 | FTP |
| 22 | SSH |
| 25 | SMTP |
| 53 | DNS |
| 80 | HTTP |
| 443 | HTTPS |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 27017 | MongoDB |
일반 사용자 권한으로 사용 가능합니다.
클라이언트가 서버에 연결할 때 운영체제가 임시로 할당합니다. 연결이 끊기면 반환됩니다.
소켓은 IP 주소와 포트의 조합으로 표현됩니다.
[출발지 IP:포트] ↔ [목적지 IP:포트]
하나의 서버 포트가 여러 클라이언트를 동시에 처리할 수 있는 이유는 TCP 연결이 4가지 값(출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트)의 조합으로 식별되기 때문입니다.
같은 포트를 두 프로그램이 동시에 사용할 수 없습니다. 웹 서버를 두 개 실행하려 할 때 Address already in use 오류가 발생하는 원인입니다. 이 경우 한쪽을 다른 포트(예: 8080)로 변경해야 합니다.