본문 바로가기
Network Infra 쉽게 이해하기/L4 & L7 Network 쉽게 이해하기

Port 쉽게 이해하기

by 네트워크 엔지니어 환영 2020. 4. 26.
반응형
항구(港口, port)는 자연 지형이나 인공 구조물로 풍랑을 방지하고 선박이 안전하게 정박할 수 있는 곳으로, 수륙 교통의 결절점(結節點) 기능을 갖는 장소·시설을 말한다.

-출처 : 위키백과-

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

항구 정의
<성격별 항구의 종류(출처 : 위키백과)>

생각보다 항구의 종류가 꽤 많습니다. 그리고 성격별 항구에 입항할 수 있는 선박도 정말 다양하군요. 항구라면 어떤 배든 아무나 정박할 수 있다고 생각했는데 말이죠.

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

 

Port

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

- 출처 : 나무위키 -

(물리적 케이블에 연결되는 포트가 아닌 소프트웨어 상의 포트를 설명하는 것입니다.)

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

 

포트의 정의
<Port의 사용목적(출처 : milestone-of-se.nesuke.com)>

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

포트 종류
<컴퓨터 네트워크에서의 포트(출처 : 나무위키)>

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

여기까지가 Port 이야기입니다. 다음 문서에서는 TCP/IP에 대해서 다루어 보도록 하겠습니다.

반응형

댓글