지난 글 [Web - Home Server(IP, NAT 쉽게 알아보기)💻]에서
PAT에 대해 알아보면서 '포트'를 언급했습니다.
오늘은 이 '포트'가 정확히 무엇인지 알아보겠습니다.
포트(Port)
포트는 우리말로 '항구'입니다.
여러 대의 배가 항구에 선박 하는 것처럼
인터넷에 연결된 다양한 네트워크 기기, 애플리케이션들도
네트워크 내에 자신들의 '정박지'가 있습니다.
앞선 글에서 IP 고갈의 문제로
하나의 공인 IP에 여러 가상의 사설 IP를 부여한다고 말씀드렸습니다.
즉, 하나의 IP에서 여러 개의 네트워크 기기
혹은 애플리케이션이 작동할 수 있는 것입니다.
하지만 연결된 네트워크 기기, 애플리케이션은
공인된 IP 하나만을 가지고 있기 때문에
외부에서 패킷이 전송될 때, 특정 기기나 애플리케이션에
접속하기 위해서는 정확한 목적지를 필요로 합니다.
이때 이용하는 것이 포트입니다.
예를 들어,
택배 회사에서 여러 개의 물품을
원하는 목적지에 배송하기 위해
주소를 사용하는 것처럼
네트워크 상에서는 포트를 사용합니다.
여기서 배송되는 물품은 '패킷' 즉, '데이터'이고
주소가 바로 '포트'가 되는 것입니다.
택배 회사에서 도로를 이용해 배송하듯,
네트워크 기기간에 가상의 연결 통로를 만들고
이러한 통로에 출입구 즉, 인터페이스에
'포트'라는 주소를 부여하게 됩니다.
포트는 번호에 따라 범위가 존재하고,
포트번호의 범위는 다음과 같습니다.
- 0~65535까지 사용 가능
- 0~1023 : 웰 논 포트(Well-Known Ports)
- 1024~49151 : 레지스터드 포트(registered Ports)
- 49152 ~ 65535 : 동적 포트(Dynamic Ports)
웰 논 포트와 레지스터드 포트는 서버용 포트 번호이고,
동적 포트는 클라이언트용 포트 번호입니다.
웰 논 포트(Well-Known Ports)
웰 논 포트는 서버 애플리케이션용으로
예약된 포트입니다.
웰 논 포트 번호는 HTTP(웹), SMTP(이메일 전송) 등과 같이
인터넷에서 주로 활용되는 서버 애플리케이션을
예약하기 위한 번호를 말합니다.
대표적으로는 HTTP 프로토콜을 사용하는 웹 서비스는
포트 80을 사용합니다.
레지스터드 포트(registered Ports)
예약된 포트는 아니지만
웰 논 포트 번호 이외에 자주 사용되는
서버 애플리케이션을 식별하기 위한 포트입니다.
동적 포트(Dynamic Ports)
앞서 IP를 설명드리면서,
고정 IP는 서비스를 계속해야 하는 서버 측에서
유동 IP는 그때그때 IP를 제공받아도 되는 클라이언트 측에서
사용하는 방식이라고 말씀드렸습니다.
포트도 이와 마찬가지로 앞선 두 포트 번호(웰 노운, 레지스터드 포트)는
서버 측을 위한 포트번호입니다.
따라서 동적 포트는 클라이언트를 위한 포트를 말합니다.
클라이언트 애플리케이션은 자신의 포트 번호를 정해 놓지 않고,
필요할 때마다 동적으로 임의의 포트 번호를 부여받습니다.
포트 번호를 부여하는 운영체제는 애플리케이션 별로
동일 값이 할당되지 않도록 포트번호를 관리합니다.
포트 포워딩(Port-forwarding)
포트 번호를 알게 된다면
우리는 포트 포워딩을 이해할 수 있습니다.
포트 포워딩은 쉽게 말해
포트를 연결하는 단축키와 같습니다.
특정 포트 번호를 단축키처럼 지정해두면
누군가 그 포트 번호를 입력했을 때
특정 기능을 수행하는 것입니다.
여기서 말하는 특정 기능은 '연결'이라고 볼 수 있습니다.
예를 들어 보겠습니다.
앞선 설명에서 웰 논 포트 중 80번은
HTTP로 사용된다고 말씀드렸습니다.
그렇다면 하나의 공인 IP에 여러 개의
네트워크 기기(A, B, C)가 존재한다면
공인된 IP에 80번 포트를 요청하게 된다면
응답하는 건 어떤 기기의 80번 포트일까요?
A 기기의 80번 포트일까요? 아니면
B나 C의 80번 포트일까요?
정답은 '응답하지 않는다.'입니다.
어떤 기기의 80번 포트인지 특정할 수 없기 때문입니다.
이런 문제를 해결하기 위해 '포트 포워딩'을 사용합니다.
특정 포트 번호를 단축키처럼 사용하는 겁니다.
특정 포트 번호를 A기기의 80번 포트를 요청하게 설정해두면
이 포트 번호를 요청했을 때 A기기의 80번 포트가 응답하게 됩니다.
이러한 포트 포워딩은 외부 포트와 내부 포트를 묶어서 설정합니다.
이러한 설명을 보고 나면 한 가지 의문이 듭니다.
포트 포워딩과 PAT
앞선 글에서 PAT를 설명했었습니다.
PAT는 외부에서 공인 IP로 내부의 IP에
접근할 때 포트 번호를 사용해
내부의 IP에 접근하는 기술이라 요약할 수 있습니다.
이런 설명은 포트 포워딩과 크게 다르지 않아
포트 포워딩과 PAT의 차이점에 대한 의문이 들 수 있습니다.
두 가지 기술은 비슷하나 차이점은 존재합니다.
차이점을 가장 짧게 요약하자면 '동적(Dynamic) 매핑'입니다.
PAT의 경우 동적으로 포트 번호를 부여해
임의의 포트 번호로 사설 IP와 공인 IP를 매핑합니다.
하지만 포트 포워딩의 경우 특정 포트 번호를
'정적'으로 부여해 특정 포트 번호를 이용해
네트워크에 속한 특정 기기나 애플리케이션의
포트가 응답하도록 매핑합니다.
따라서 포트 포워딩의 경우 설정 후
매핑 관계가 지속적으로 유지됩니다.
오늘은 포트와 포트 포워딩에 대해 알아봤습니다.
저도 공부하면서 요약하고 글을 쓰면서
헷갈리고 명확하게 이해되지 않는 부분들이 있었던 것 같습니다.
내용에 대한 오류를 발견하신다면
댓글이나 메일 부탁드리겠습니다.
읽어주셔서 감사합니다.🙇♂️
'내가 공부하려고 올리는 > web' 카테고리의 다른 글
브라우저 동작 원리(쉽게 알아보기) - 렌더링 엔진/DOM/노드(node)(3) (0) | 2021.09.26 |
---|---|
브라우저 동작 원리(쉽게 알아보기) -크롤링/파싱/토큰 (2) (0) | 2021.09.25 |
브라우저 동작 원리(쉽게 알아보기) -URI, 브라우저의 구조 (1) (0) | 2021.09.25 |
Web - Home Server(IP, NAT 쉽게 알아보기)💻 (0) | 2021.09.17 |
Web - Home Server(IPv4, IPv6 쉽게 알아보기) (0) | 2021.09.17 |
댓글