[Day52] Node.js - 포트(Port)

Validator·2023년 8월 28일
0

Port

인터넷 프로토콜에서 사용하는 'Port' 역시 동일한 의미와 역할을 갖는다.
'Port'는 컴퓨터 혹은 서버 내 운영체제에서 목적별로 나뉘어진 하나의 정박지(항구)처럼 행동한다. 우리가 네이버에 접속하기 위해서는 네이버의 웹서비스를 제공하는 서버(항)의 HTTP Port(항구, 80)으로 접속하는 것처럼 말이다. 이처럼 Port는 TCP/IP의 OSI 7계층의 L4에서 중심적인 역할을 한다. 이 부분은 반드시 숙지하고 넘어가야하는 이유이다.

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

Port는 컴퓨터 내에 어플리케이션을 구분하고 필요한 어플리케이션에 접속하기 위해 사용한다. IP는 하나인데 서버가 제공하는 서비스는 다양하니 그 서비스를 구분하기 위해서 사용하는 것이다.
만약 웹서비스를 사용하려는 의도로 포트를 입력하지 않고 특정 IP만을 목적지로 잡아 접속을 시도한다고 한다면 그 서버는 사용자가 접속한 목적과 용도를 모르기 때문에 서비스를 제공할 수 없을 것이다.

(보통 웹 브라우저는 포트를 자동으로 잡아주기 때문에 IP만 입력하여도 웬만하면 원하는 웹사이트에 접속이 가능하다)

하지만 만약 IP와 함께 Port까지 명시하여 접속한다면 서버는 사용자의 접속 목적을 알게되므로 해당 서비스를 제공하는 어플리케이션(Port 80)으로 안내하게 된다. 이것이 Port의 존재 목적이다.


우리가 회사 내의 서버에 접속한다고 가정해보자. 그 서버는 웹서비스뿐만 아니라 MySQL, DNS, SMTP, SSH, Telnet 등의 서비스를 제공한다. 그리고 서버의 IP는 10.10.10.1/24 이다.
만약 내가 서버에 직접 접속하여 일부 설정을 변경하고자 한다면 SSH(22port), Telnet(23port)를 통해 접속하면 될 것이다.

근데 내가 만약 10.10.10.1 + port 80 으로 접속을 시도한다면 어떻게 될 것인가?
서버는 웹서비스로 안내하게 될 것이다. 그렇기 때문에 port를 정확히 알고 그에 맞게 사용하는 것이 중요하다는 것이다.

일반적으로 잘 알려진 포트(Well Known Port)는 다음과 같다.

위의 내용은 프로토콜에 의해 규정된 Port 목록이다. 그래서 1번 항목에 보면 잘 알려진 포트라고 나와있는 것이다. 해당프로토콜에서 그 port를 쓰기로 합의했고 사용자들이 그 규칙을 지키고 있기 때문에 기록한 것이다. 그렇다고 해서 반드시 그 port를 써야하는 것은 아니다.

웹 서비스로 예를 들자면, 만약 종류를 나눌 필요가 있다면 첫 번째 웹 서비스는 80포트로 쓰고, 두 번째 웹서비스는 8080 포트, 세 번째 서비스는 8888 포트를 쓸 수 있을 것이다.

또한 80 포트가 쓰기 싫다면 8080 포트만 제공할 수 있다. 다만 이럴 경우에는 별도의 설정이 필요할 것이다. 잘 알려진 포트를 기준으로 사람들이 접속하기 때문이다.
(왠만하면 사람들 사이의 규약, 약속은 지키는 것이 좋다)

0개의 댓글