
소프트웨어적 의미의 포트는 네트워크 통신의 종단점으로서 용도별로 앱을 구현하기 위한 논리적 통로입니다.
쉽게 말해서 하나의 IP 주소가 연결된 기기에 통신을 필요로 하는 여러 프로그램이 구동 중이거나 하나의 IP 주소에 공유기로 연결된 여러 기기가 물려 있을 경우 이를 구분하는 개념이 Port입니다.
또한 포트는 특정 프로토콜이나 서비스와 연관되어 있습니다. 예를 들어서 HTTP 통신은 일반적으로 TC 포트 80을 사용하고 HTTPS는 TCP 포트 443을 사용합니다.

웹 개발을 하면서 서버와 클라이언트를 다루는 경우, 집에 홈 CCTV를 설치하여 외부 인터넷 망으로 CCTV를 연결시켜 사용하는 포트 포워딩 (Port Forwarding)을 사용할 때 접하는 개념입니다.
포트 개념을 이해하면 한 IP 안에 연결된 수많은 기기와 프로그램을 구분해서 통신이 가능합니다. 집에서 홈 IOT를 구성할 경우에도 보통 공유기를 사용해서 여러 사물에 인터넷을 부여하는 경우가 많기 때문에 이런 경우에도 포트 개념을 접하게 됩니다.
웹 브라우저가 웹 페이지를 요청하는 과정을 살펴보겠습니다. 웹 브라우저를 켜고 주소창에 네이버 주소(www.naver.com)을 타이핑한 후 엔터 키를 누르면 우선 DNS 서버에 해당 DNS의 IP 주소로 변환하여 해당 IP 주소를 가진 서버 컴퓨터로 찾아가게 됩니다. 서버로 찾아는 갔는데 웹 브라우저가 만나야 하는 웹 서버는 어떻게 만날까요??
서버 컴퓨터는 웹 서버, 채팅 서버 등등 다양한 서버 프로그램을 실행 중일 수 있습니다. 서버는 사용자의 접속 목적을 모르기 때문에 어떤 서비스를 원하는지 알 수 없습니다. 이때 이정표 역할을 하는 것이 바로 포트입니다.
웹 브라우저에서 요청한 주소에는 사실 웹 서버 프로그램을 의미하는 포트 번호인 80이 생략되어 있습니다. HTTP 프로토콜을 사용할 경우 포트 지정을 따로 하지 않으면 웹 브라우저가 기본값으로 80번을 포함시켜 주기 때문입니다. 그래서 80번 포트는 서버로부터 웹 서버로 안내 받아 웹 페이지를 받아옵니다.
포트는 0번 ~ 65535번까지 총 65536개를 사용할 수 있습니다. 이 포트들은 이국의 비영리 사설기관 ICANN의 산하기관인 IANA에 의해 관리되고 있으며 INAN는 포트를 총 3가지로 분류했습니다. 65536개의 포트 별로 약속된 애플리케이션은 IANA의 공식 홈페이지를 통해 확인이 가능합니다.
포트번호는 0 ~ 1023까지의 포트는 잘 알려진 포트들입니다, 이 포트번호들은 주로 특정 서비스에 예약되어 있다고 할 수 있습니다. 1024 ~ 49151까지의 포트 번호는 등록된 포트로, 일반적으로 사용자가 애플리케이션을 개발할 경우나 서비스를 제공할 경우 사용합니다. 나머지 포트들은 동적 포트로, 임시로 할당되는 포트라고 할 수 있습니다.
휴대폰 충전기의 USB 포트, 전원 포트 등등 포트는 일상생활에서 굉장히 자주 접하는 단어입니다. 앞에서 언급한 예시들은 하드웨어적 포트인 것이죠. 그렇다면 소프트웨어 포트는 무엇일까요??
예를 들어서 프린터를 설치하려면 기본적으로 전원 선과 USB 선을 꽂아야합니다. 그런데 전원 선과 USB 선을 꽂을 포트의 생김새가 똑같다면 전원 케이블을 어디다 꽂아야 할 지 헷갈리게 됩니다. 전원 포트가 아닌 곳에 잘못 꽂으면 고장 날 것이 분명하니 곤란합니다. 여기서 우리는 포트의 역할을 알 수 있습니다. 사용하려는 각 케이블의 데이터가 모두 다르기 때문에 도달해야 할 목적지인 포트가 있습니다. 하지만 소프트웨어적 포트는 하드웨어적 포트와 달리 눈에 보이지 않습니다. 그래서 소프트웨어적 포트는 번호를 부여합니다.