Port란 ?

GonnabeAlright·2022년 3월 7일
0
post-thumbnail
post-custom-banner

항구(port)는 자연 지형이나 인공 구조물로 풍랑을 방지하고 선박이 안전하게 정박할 수 있는 곳으로, 수륙 교통의 결절점 기능을 갖는 장소, 시설을 말합니다.

'항'은 배가 안전하게 정박하고 물품을 실어 나르는 곳을 의미하며 '항구'는 항의 입구를 뜻합니다. 항은 다수의 항구로 이루어져 수많은 선박들이 정박할 수 있도록 합니다. 또한 용도에 따라 다양한 성격을 띠게 됩니다. 대형 화물선들이 다니는 항구에 어선이 같이 있을 수는 없고 군함이 정박하는 곳에 민간선이 정박할 수는 없으니까요.

인터넷 프로토콜에서 사용되는 'Port' 역시 동일한 의미와 역할을 갖습니다. 'Port'는 컴퓨터 혹은 서버(항)내 운영체제에서 목적별로 나뉘어진 하나의 '정박지(항구)'처럼 행동합니다. 우리가 네이버에 접속하기 위해서는 네이버의 웹서비스를 제공하는 서버(항)의 HTTP Port(항구, 80)으로 접속하는 것처럼 말입니다. 이처럼PortTCP/IPOSI 7 Layer의 Layer 4, 서버 부하 분산(로드밸런싱)에서 중심적인 역할을 하며 빠지지 않고 등장합니다. 그러므로 정확한 이해가 필요한 요소입니다.

Port

TCP나 UDP에서 어플리케이션이 상호구분을 위해서 사용하는 번호이다. IP 내에서 프로세스 구분을 하기 위해서 사용한다. 쉽게 말하면, 각 프로토콜의 데이터가 통하는 논리적 통로이다. 컴퓨터의 물리적 포트(랜선)에서 데이터가 통해 오는것처럼, 컴퓨터 안에서 각 프로토콜의 데이터가 컴퓨터 내부의 논리적 포트에 따라 흐른다. 윈도우 명령 프롬프트에서 netstat-an 명령을 통해 살펴볼 수 있다.

Port는 컴퓨터 내에 어플리케이션(용도별 항구)를 구분하고 필요한 어플리케이션에 접속하기 위해 사용합니다. IP는 하나인데 서버가 제공하는 서비스는 다양하니 그 서비스를 구분하기 위해서 사용하는 것입니다. 만약 웹서비스를 사용하려는 의도로 포트를 입력하지 않고 특정 IP 만을 목적지로 잡아 접속을 시도한다 한들 그 서버는 사용자가 접속한 목적과 용도를 모르기 때문에 서비스를 제공할 수 없습니다. (웹 브라우저는 포트를 자동으로 잡아주기 때문에 IP만 입력하여도 원하는 웹사이트에 접속합니다.) 하지만 IP와 함께 Port(80)를 명시하여 접속한다면 서버는 사용자의 접속 목적을 알게되므로 해당 서비스를 제공하는 애플리케이션으로 안내하게 됩니다. 이것이 Port의 존재 이유이자 목적입니다.

우리가 회사 내의 서버에 접속한다고 가정해봅시다. 그 서버는 웹 서비스뿐만 아니라 MySQL, DNS, SMTP, SSH, Telnet 등의 서비스를 제공합니다. 그리고 서버의 IP는 10.10.10.1/24입니다. 저는 서버에 직접 접속하여 일부 설정을 변경하고자 합니다. 그렇다면 SSH(22 port)나 Telnet(23 port)을 통해 접속하면 되겠군요. 그런데 만약 10.10.01.1 + Port 80으로 접속을 시도한다면 어떻게 될까요 ? 서버는 웹서비스로 안내하게 됩니다. 그렇기 때문에 사람들이 누구나 알고 있는 Port를 서비스에 맞게 지키고 사용하는 것이 중요합니다.

  1. 잘 알려진 포트 (0 ~ 1023) - 국제 도메인 관리기구에 통제
  • FTP - 20, 21 (TCP)
  • SSH - 22 (TCP)
  • 텔넷 - 23 (TCP)
  • SMTP - 25 (TCP)
  • DNS - 53 (TCP/UDP)
  • DHCP - 67 (UDP)
  • HTTP - 80 (TCP)
  • HTTPS - 443 (TCP)
  • RDP - 3389 (TCP/UDP)
  1. 등록 포트 (1024 ~ 49151) - 국제 도메인 관리기구에 등록
  • MySQL - 3306
  • PostgreSQL - 5432
  1. 동적 포트 (49152 ~ 65535) - 임시 포트들, 어떤 프로세스들에게 임의로 사용가능

위 내용은 프로토콜에 의해 규정된 Port 목록입니다. 따라서 1번 항목에 보시면 '잘 알려진 포트'라고 되어있습니다. 해당 프로토콜에서 그 Port를 쓰기로 합의했고 사용자들이 그 규칙을 지키고 있기 때문에 기록한 것입니다. 그렇다고 해서 그 Port를 반드시 써야하는 것은 아닙니다. 웹 서비스로 예를 들면, 웹 서비스 내에서도 종류를 나눌 필요가 있다면 첫 번째 웹서비스는 80 port, 두 번째 웹서비스는 8080 port, 세 번째 웹서비스는 8888 port로 제공할 수 있습니다. 또한 80 port가 싫다면 80 port로 제공하지 않고 8080 port만으로 제공할 수 있습니다. 다만 이 경우에는 별도의 설정이 필요합니다. '잘 알려진 포트'이기 때문에 대부분의 사용자들은 80포트로 접속을 시도하게 될테니까요.

post-custom-banner

0개의 댓글