포트의 정의
소프트웨어적 의미의 포트는 네트워크 통신의 종단점으로서 용도별로 앱을 수분 짓는 논리적 통로이다.
하나의 IP 주소가 연결된 기기에 통신을 필요로 하는 여러 프로그램이 구동 중이거나 하나의 IP 주소에 공유기로 연결된 여러 기기가 물려 있을 결우 이를 구분하는 개념이 포트이다.
포트는 어디서 접하게 될까?
포트 포워딩(Port Forwarding)을 사용할 때 접하는 개념이다.
포트 개념을 이해하면 한 IP안에 연결된 수많은 기기와 프로그램을 구분해서 통신할 수 있다.
공유기를 사용해서 여러 사물에 인터넷을 부여하는 경우가 많은데 이런 경우에도 포트 개념을 접할 수 있다.
포트의 개념
www.naver.com의 주소로 들어간다고 가정해 보자.
우선 DNS 서버에 해당 DNS의 IP 주소로 변환하여 해당 IP 주소를 가진 서버 컴퓨터로 찾아가게 된다.
서버로 찾아갔는데 웹 브라우저가 만나야 하는 웹 서버는 어떻게 만나면 될까?
서버 컴퓨터는 웹 서버 이외에 채팅 서버 등 다양한 서버 프로그램이 실행 중일수 있다.
사용자의 접속 목적을 알고 이정표 역할을 해주는 것이 포트이다.
웹 브라우저에서 요청한 주소에는 사실 웹 서버 프로그램을 의미하는 포트 번호인 80이 생략되어 있다.
그래서 80 포트는 서버로부터 웹 서버로 안내받아 웹 페이지를 받아온다.
포트번호의 약속
포트는 0번부터 65535번까지 65536개를 사용할 수 있다.
이 포트들은 미국의 비영리 사설기관 ICANN의 산하기관인 IANA에 의해 관리되고 있으며
IANA는 포트를 총 3가지로 분류한다.
*ICANN: 국제 인터넷 주소 관리기구
*IANA: 인터넷 할당번호 관리기관
1. Well Known Ports
0번 ~ 1023번
잘 알려진 앱의 사용을 위해 표준과 같이 약속된 포트이다.
포트번호 | 앱 |
22 | SSH |
53 | DNS |
80 | HTTP |
2. Registered Ports
1024번 ~ 49141번
특정 앱 제작사가 IANA에게 포트 등록을 요청하여 사용하는 포트이다.
포트번호 | 앱 |
1433 | MsSql |
3306 | MySQL |
8080 | HTTP 대체 사용 |
3. Dynamic Ports
49142번 ~ 65535번
특정 용도로 지정하지 않고 동적으로 자유롭게 사용 가능한 포트이다.
포트를 사용하는 이유
사용하려는 각 케이블의 데이터가 모두 다르기 때문에 도달해야 할 목적지인 포트가 있다.
하지만 소프트웨어적 포트는 하드웨어적 포트와 달리 눈에 보이지 않기 때문에
소프트웨어적 포트는 형태 대신 번호를 부여해서 구분한다.
포트포워딩
포트를 포워딩한다.
포워딩은 전송 또는 전달의 뜻을 가지고 있다.
즉 포트를 전달하는 것이 포트 포워딩이라는 뜻이다.
예를 들어 포트 포워딩을 사용해서 타지에 사는 친구에게 우리 집 프린터를 빌려준다고 해보자.
먼저 공인 IP를 알아야 한다.
단순히 프린터 IP를 알려주면 될 것 같지만 해당 IP는 내부 IP이기 때문에 외부에서는 의미가 없는 IP이다.
따라서 진짜 IP는 공유기에 있으며 공인 IP로 불린다.
ipconfig의 결과가 내부 ip, 네이버 검색 결과 IP가 공인 IP이다.
공유기를 걸쳐 각기 다른 IP를 가진 3대의 단말기가 연결되어 있다.
공유기 IP로 접속하더라고 3대의 컴퓨터 중 어디로 가야 할지 알 수 없다.
이를 가능케 하는 것이 포트 포워딩이며, 전해진 포트로 접속하면 프린터의 포트로 연결시키도록 포트포워딩을 설정할 수 있는 것이다.
이렇게 포트포워딩이 완료되면 친구집의 컴퓨터에서 네트워크 프린터 세팅을 공인 IP의 전해진 포트로 설정하여 내 방에 있는 프린터기를 사용할 수 있게 되는 것이다.