네트워크 포트(Port)란?

포트란 일반적으로는 ‘항구’를 말한다. 그러나 IT 업계에서 듣는 포트는 의미가 다르다. IT에서 말하는 포트란 데이터가 밖으로 나오거나 들어가기 위한 출입구와 같다. 이 페이지에서는 포트에 대해 잘 알 수 있도록 설명한다.

포트란?

포트는 항구

포트(Port)란 원래 ‘항구’를 말한다. 항구는 배가 마을에 들어가기 위해 필요한 공간으로 바다와 마을과의 출입구가 된다.

포트

IT 업계에서 사용되는 포트도 비슷하다. 항구에서는 어떤 수하물을 어디에서 내릴 지 결정된다. 번호를 붙여 사용하면 더 명확해 질 것이다. IT에서도 동일하게, 인터넷 전체를 바다로, 컴퓨터를 마을이라고 하면, 인터넷에서 오는 데이터를 내리는 곳이 정해져 있다. Web 페이지 열람의 데이터는 OO번항, 메일은 OO번항 등과 같은 식이다.

네트워크

이것이 “포트"에 해당한다.

실제 TCP나 UDP로 통신을 행할 때는 컴퓨터 1대를 단위로 하는 것이 아니라 “프로그램 단위” 즉, “프로세스나 쓰레드 단위"로 통신이 수행된다. 그러기 때문에 프로세스간에 올바르게 전달을 해야 한다. 이 때 통신하는 프로세스에는 “포트 번호"라는 것이 할당된다. 프로세스나 쓰레드는 이 포트 번호를 표시하여, 어느 어플리케이션과 어느 어플리케이션이 통신을 해야 할지 판단하게 된다.

건물에 비유

포트는 건물로 비유하면 알기 쉬울 것이다.

네트워크 통신에 필요한 ‘프로토콜’, ‘IP 주소’와 ‘포트 번호’가 필요하다.

IP 주소를 건물의 주소에 비유한다면, 포트 번호는 “호실"로 비유된다. 컴퓨터 네트워크에서 프로토콜, IP 주소, 포트 번호를 비유하자면, “어떤 방법(프로토콜)“으로 “어느 건물(컴퓨터, IP)“의 “몇 호실(몇번 포트)“에 연락(통신)을 할 것인가? 와 같은 형태로 바꿀 수 있다.

통신에 중요한 포트 번호이기에, 포트를 여는 것은 특정 방의 문을 열지 않은 상태와 같기 때문에 서비스를 제공하는 서버가 아닌 한 기본적으로 불필요한 포트는 열리지 않도록 설정해 두어야 한다.

좀 더 정확하게 말하면 포트는 서비스 창구

포트는 “서버 어플리케이션을 특정할 때 사용하는 번호"이며, “서버에서 제공되고 있는 서비스의 창구"이다. 예를 들어, http 프로토콜은 80번을 사용하는 것이 일반적이다.

포트가 개방된 경우 방의 창구는 깨끗하게 된다. 서버로서는 상대에게 서비스를 제공하기 위해서, 창구를 항상 열어 두어야 한다. 예를 들면, http 일반적인 웹 서비스를 제공할 경우 80번 포트를 개방할 필요가 있다. http 통신으로 필요한 창구를 여는 작업이 된다.

그렇다면 포트가 닫힌 채로 있으면 어떨까? 서버의 창구는 버려지고 있다. 즉, 영업 정지이므로 서비스를 제공할 수 없게 된다. 그래서 “서비스에 따라 필요한 창구를 여는 작업"이 포트 개방이다.

대표적인 포트 번호 및 프로토콜

각각 “어떤 프로토콜이 어떤 포트 번호로 운용되는가?” 대표적인 예를 들면 다음과 같다.

  • TCP 20 : FTP(데이터)
  • TCP 21 : FTP(제어)
  • TCP 22 : SSH
  • TCP 23 : Telnet
  • TCP 25 : SMTP
  • UDP 53 : DNS
  • UDP 67 : DHCP(서버)
  • UDP 68 : DHCP(클라이언트)
  • TCP 80 : HTTP
  • TCP 110 : POP3
  • UDP 123 : NTP
  • TCP 443 : HTTPS
  • WELL KNOWN PORT NUMBERS 0~1023

포트와 IP 주소와 프로토콜의 예를 들면 웹 서버 등일 것이다.

특정 IP 주소상에서 공개되고 있는 서버상에서, HTTP라고 하는 프로토콜에 따른 어플리케이션, Apache 등이 80번 포트로, 클라이언트와의 통신을 대기해, 요구에 따라서 Web 페이지의 정보를 송신한다고 한다 흐름이다.

다른 서비스는 마찬가지로 특정 서버에서 프로토콜을 구현하는 응용 프로그램을 임의 포트 또는 Well Known Port를 열어 서비스를 제공한다.

웰노운 포트 번호(WELL KNOWN PORT NUMBERS)

실제 포트 자체는 0에서 65535까지 존재하지만, 그 중에서도 0~1023까지를 “웰노운 포트 번호"라고 한다. 문장 그대로 ‘잘 알려진 포트 번호’라는 의미이다. 이 번호들은 IANA라는 단체에 의해 관리되고 있다.

TCP/IP나 UDP에 있어서 통신에서 이용되는 포트 번호 중, 메이저인 서비스나 프로토콜이 이용하기 위해서 예약되고 있는 포트 번호이다.

80이 HTTP, 22가 SSH인 것처럼, 메이저 서비스는 포트 번호가 일반적으로 정해져 있다.

이 번호들은 서비스마다 설정 파일을 편집하고 대기의 포트 번호를 변경하는 것도 가능하다. 보안 관계상 의도적으로 포트 번호를 변경하는 경우도 있지만, 기본적으로 웰노운 포트 번호를 사용하도록 하자.

등록된 포트 번호

1024~49151 이 번호들도 IANA에서 관리되고 있다.

특정 애플리케이션 등이 사용하도록 되어 있는 포트 군이다. IANA가 등록을 받아 공개하고 있다.

그 외에 포트 번호

49152~65535는 사용자가 자유롭게 사용할 수 있는 포트 번호이다. IANA에 등록할 필요도 없다.

포트 번호에 관해서는 “실제 어느 서비스를 어느 포트로 움직이는 것인가?“라고 하는 것은 절대적인 결정이 존재하는 것은 아니기 때문에, 임의로 관리, 비교해 사용할 수도 있다.

포트 개방 및 보안

창구를 비워 둔다는 것은 창문에 열쇠를 걸지 않는다는 것이다. 당연히 정보를 훔치려고 하는 도둑, 즉, ‘크래커’ 등에 휘말리기 쉬운 상태에 있다는 것이다.

이 상태는 매우 좋지 않기 때문에 어둠 속에서 포트를 열어서는 안 된다. 보안 대책을 제대로 세워 최소한의 포트를 개방하도록 해야 한다.

최근의 컴퓨터는 처리력이 매우 높아 퍼스널 머신 위에서도 서버로서 상주하는 애플리케이션도 증가하고 있다. 서버로서 기능하는 어플리케이션의 경우, 로컬내 뿐만 아니라 외부로부터의 정보에도 응답하게 되어 있는 경우가 대부분일 것이다. 이 서버로서 기능하는 애플리케이션, 서버 애플리케이션은 서비스를 제공하기 위해 필연적으로 포트를 개방하게 된다.

그러나, 서버 애플리케이션에 보안 취약점이 있을 경우 최악의 서버가 탈취되거나 서비스를 제공할 수 없게 되는 경우도 있다. 서버로서 기능하는 애플리케이션은 신중하게 검토할 필요가 있다. 그 외에도 서버로서 동작하고 있는 컴퓨터의 경우 “어느 포트가 개방되어 있는가?”, “의도하지 않은 포트는 열려 있지 않은가?“등을 확인할 필요가 있다, 실제 작업 전에 페니트레이션(penetration, 침투) 테스트를 하여, 실제로 포토 스캔해, 상태를 파악하는 것이 중요하다.




최종 수정 : 2024-01-18