가정용 컴퓨터를 통해 server를 구축하여도 웹서버 응답이 안될 수 있다. 이러한 오류가 발생하는 가장 큰 이유가 바로 사설IP 때문이다.
일반 가정에서 SK통신사를 사용한다고 가정해보자.
기존 유선 방식을 통해 인터넷 접속을 시도한다고 가정한다면, 인터넷 접속에 필요한 개체 만큼 인터넷 케이블이 필요할 것이고, 그만큼 인터넷 연결 비용을 통신사에게 제공해야 한다.
하지만 통신사 회선을 하나로 하고, 이러한 인터넷 접속을 공유하는 여러 회선이 존재한다면 하나의 회선에 대한 비용지불 만으로도 여러 개체가 인터넷 접속을 할 수 있다.
이러한 공유 회선이 없고 무선이 된다면 바로 그것이 공유기(Wifi)이다. 공유기를 통해 각 개체(컴퓨터) 모두 인터넷 사용이 가능해졌으며, 지불 비용도 절약할 수 있게 되었다.
이때 각 개체뿐만 아니라 공유기도 고유의 IP address를 가지게 되고, 연결된 각 컴퓨터들 역시 IP address를 보유한다.
그러나 상대바의 전화번호를 모른다면 전화를 걸 수 없듯이, Web server의 IP주소가 아닌 공유기의 IP주소로 접속하게 된다면 해당 웹페이지/사이트 접속은 불가능할 것이다.
즉 접속이 안되었던 부분은 인터넷 연결이 안된것이 아니라 해당 공유기 IP address로 접속하였기 때문에 응답이 불가능하였던 것이다.
이때 공유기의 IP는 공인IP이고, 해당 공유기 영역에서 개체들이 할당받은 IP주소는 사설IP이다.
쉽게 말하면 공유기 IP 주소는 모든 사람이 접속 가능한 반면, 내선 컴퓨터들은 공유기 냅에서만 서로 접속/접근이 가능하다.
따라서 사설IP에 대한 개체들은 외부에서는 접근이 불가능하며, 이에 따라 웹서버를 구축하더라도 외부 접근이 불가능하다.
이러한 연결문제를 해결하기 위해 고안된 장치가 바로 포트포워딩이다.
최초 공유기 IP에 접속한 사람이 최종적으로 사설IP 개체(server 컴퓨터)에 접근할 수 있도록 포워딩하는 것이다.
포트포워딩을 사용하면 사설IP를 통해 구축된 server 컴퓨터라도, 외부의 개체가 접근할 수 있게 된다.
포트는 인터넷에 연결된 여러 프로그램들 중, 특정한 하나의 프로그램에 접속하기 위하여 설정하는 일종의 "문"이다.
우리가 인터넷에 접속하기 위해선 http://222.109.60.143
와 같이 IP주소를 입력하여 접속할 수도 있다.
이때 위 입력 방식은 끝에 port번호가 생략된 경우인데, http://222.109.60.143:80
과 같이 특정 포트번호를 입력하여, 인터넷 상에 존재하는 여러 프로그램 중 하나의 프로그램만 사용하겠다고 특정할 수 있는 것이다.
포트는 약 65000개가 존재하는데, 각 포트는 고유번호가 존재한다. 따라서 각 고유번호와 연결된 프로그램을 인지하고 정확한 포트번호를 입력해야 사이트에 접속하고 응답받을 수 있다.
포트포워딩을 진행하기 위해선 공유기 설정을 통해 외부/내부 포트 지정을 해주면 된다.
위와 같이 외부 포트(외부 -> 공유기)를 80PORT, 내부 포트(공유기 -> 개체)를 80PORT로 지정한다면 외부의 요청들을 자동적으로 80PORT를 통해 내부 개체로 전달할 수 있다(=server 접속 가능).
※ WAN : 통신회사가 제공하는 인터넷 연결 회선(공인IP)
※ LAN : 내부 개체가 인터넷에 접속하기 위해 사용하는 회선(사설IP)
생활코딩 - 인터넷
https://opentutorials.org/module/1514/9483