공유기를 사용하는 환경에서 웹 서버를 구동하는 방법
공유기 (Router)
IP address
-
인터넷을 사용하기 위해 컴퓨터는 IP 주소를 가지고 있어야 한다.
-
IP 주소가 존재해야 다른 컴퓨터와 통신을 할 수 있다.
-
컴퓨터가 여러대로 늘어났을 시(스마트폰, 노트북 등) 인터넷에 연결될려면 IP 주소를 갖고 있어야 한다. 제일 쉬운 방법은 통신사와 회선을 두 개 더 계약하는 것이지만, 비싸기 때문에 공유기라는 기계를 이용한다.
사진출처 - https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aloloever&logNo=30166696913
-
컴퓨터 케이블을 공유기의 WAN에다 꽃으면 통신사로부터 발급받은 ip 주소가 공유기의 것이 된다.
-
IP 주소가 필요한 각각의 장치들은 LAN에 연결된다. 스마트폰과 같은 무선 기기는 안테나를 통해서 연결된다.
-
공유기를 중심으로 같은 네트워크로 묶어있는 것을 지역 네트워크라고 한다. (Local Area Network, LAN) 이는 전세계에서 가장 거대한 네트워크인 광역 네트워크(Wide Area Network, WAN)인 인터넷에 소속되어 있다.
-
공유기는 WAN이라는 네트워크와 LAN이라는 네트워크 사이의 중계자 역할을 한다.
-
각 각의 컴퓨터들(스마트폰, 노트북 등등)은 공유기에 연결되는 순간 자동으로 IP 주소를 부여받는다. 마찬가지로 공유기에도 IP 주소가 부여된다. 이것을 Gateway address 또는 Router address라고 부른다.
-
공유기는 WAN 안에서 접속할 수 있게해주는 IP를 가지고 있는데, 이것은 전세계 누구나 접근 가능하다는 뜻에서 public IP address라고 불린다.
-
각각 컴퓨터에 부여된 IP주소는 내선번호라고 볼 수 있다. 그런 뜻에서 사설 IP, private IP address라고 불린다.
NAT (Network Address Translation)
- NAT이라는 기술 덕분에 사설 IP를 쓰고 있는 각각의 컴퓨터들이 외부 인터넷에 접속할 수 있게 된다.
private IP address가 클라이언트 일 때
- 사용자의 컴퓨터가 요청을 보내면, 그 요청은 Gateway address에 해당하는 머신으로 이동한다. 공유기가 요청을 받으면 외부 요청인지 내부 요청인지를 판단하고 외부 요청일 시 WAN으로 전달한다. WAN은 요청을 보낸 컴퓨터의 IP 주소를 공유기 안에 기록하고 요청한 컴퓨터의 IP는 외부에서 접근할 수 없는 주소기에 NAT을 통해 private IP address를 public IP address로 변경해 변경된 데이터를 외부로 보낸다.
IP 주소 알아내기
제어판 - 네트워크 및 공유 센터 - 연결 - 자세히
- IPv4 주소 : 이 컴퓨터의 내부 네트워크 상의 IP 주소, private address
- IPv4 기본 게이트웨이 : 공유기의 IP 주소, Gateway address or Router address
PORT FORWARDING
Private IP address가 서버일 때
바깥에 있는 불특정한 사람이 접속을 해서 private IP address에 도달하려면 어떻게 해야 하는가? 하지만 public IP address로 외부의 접속이 들어왔을 때 공유기는 각 컴퓨터 중 누가 서버로서 응답해야 할지를 알 수 없다. 그래서 접속이 들어왔을 때 누가 서버로서 응답해야 하는지를 공유기가 연결해 줄 수 있는 방법이 PORT FORWARDING 방법이다.
PORT
우리의 컴퓨터에는 PORT라는 개념이 있다. 하나의 컴퓨터에는 게임 서버, 채팅 서버, 미디어 서버 등의 웹 서버가 여러개 설치되어 있을 수 있다. 이처럼 우리가 특정 컴퓨터에 접속했을 때 그 컴퓨터의 여러 서버 중 원하는 서버를 식별할 수 있게 해주는 것이 바로 PORT이다. 이미 서버가 연결되어 있는 PORT는 다른 서버가 사용할 수 없다.
사진 출처 - https://ipcisco.com/lesson/network-ports/
- 0-1023 (Well-known Ports) : 예약된 포트, 마음대로 쓸 수 없도록 막혀 있는 포트
- 22 (SSH)
- 80 (http) : 컴퓨터의 웹 서버가 기본적으로 연결(listening)되어 있는 포트
- 8080 : 80번 포트를 사용하고 있을 때 연결되는 포트
URL
우리가 어떤 URL(https://velog.io/@rimi0108)에 접속하면 그것은 80 포트(http)에 접속하는 것이다. 우리가 입력한 URL의 앞쪽 주소를 보면 http라고 적혀있는데, 그게 바로 우리가 http를 이용해 서버에 접속한다는 뜻이다.
port forwarding
외부 사용자가 public IP address를 통해 접속했을 때 private IP address로 접속하게 하는 방법이 바로 port이다.
- 공유기의 public IP address를 통해 사용자가 접속했을 때, 공유기는 그 사용자를 private IP address의 80번 포트로 보낸다.
- 공유기(라우터)는 안내자 역할을 한다.
Dynamic & Static IP address
- 부족한 IP 주소를 개선하기 위해 만든 방법 중 하나
- 우리가 인터넷을 쓰기 위해서는 통신사(ISP, Internet Service Provider)가 필요하다. 우리가 ISP와 계약을 맺어 집에 케이블을 설치하면 집에는 IP address가 생성된다. 어떤 이가 자신의 노트북 서버에 우리집의 IP 주소를 입력하면 우리집의 컴퓨터 서버로 접속할 수 있다. 문제는 모든 집집마다 IP 주소를 부여하면 IP 주소가 턱없이 모자라게 된다. 여기서 사용할 수 있는것이 유동 IP 이다.
Dynamic IP address, 유동 IP
- 우리집에 부여된 IP 주소가 계속 바뀌는 것
- 우리가 오랫동안 인터넷을 사용하지 않을 때 ISP는 우리의 IP주소를 회수한다. 그리고 새로운 가입자에게 우리가 쓰던 IP를 제공한다. 우리가 컴퓨터를 다시 켰을 때, ISP는 다시 우리에게 새로운 IP를 부여한다.
- 여기서 문제가 생긴다. 우리가 예전에 알려준 IP주소에 외부 사용자가 접속했을 때, 사용자는 엉뚱한 주소로 접속하게 된다.
Statice IP address, 정적 IP
- 통신사에게 돈을 더 준다면, 통신사는 우리에게 독점 IP를 제공한다.
- 독점 IP는 유동 IP와 달리 바뀌지 않는다.
DHCP, Dynamic Host Configuration Protocol
사진출처 - https://www.technipages.com/what-is-dhcp
- 우리가 새 컴퓨터를 샀을 때, 우리는 공유기에 그 컴퓨터를 연결한다.
- 같은 범위에서, 컴퓨터에는 다른 컴퓨터가 이미 사용하고 있는 IP 주소를 부여할 수 없다.
- 직접 IP를 부여하는 것은 매우 귀찮은 일이다. 그래서 우리는 자동으로 IP를 부여해주는 DHCP를 이용한다.
- 우리가 공유기에 컴퓨터를 연결하면 DHCP를 통해 동적으로 IP 주소가 자동으로 세팅된다.
- 공유기에는 DHCP Server가 깔려있고, 서버에는 DHCP Client가 기본적으로 깔려있다.
- 우리가 공유기에 컴퓨터를 연결했을 때, DHCP Client는 DHCP Server에게 IP 주소를 요청한다. DHCP Server는 DHCP Client에게 임대해 줄 수 있고 다른 컴퓨터가 아직 임대하지 않은 IP address를 제공한다. DHCP Client는 임대할 IP address를 골라 다시 DHCP Client에게 알려준다. DHCP Client는 그 정보를 저장하고 승인한다.
인터넷 작동의 전체적인 흐름
- 두 개의 컴퓨터가 존재할 때, 두 컴퓨터는 모두 ip 주소가 존재한다. 두 컴퓨터는 ip 주소를 통해 통신할 수 있다.
- 특정 공간 내에 있는 컴퓨터들은 공유기(라우터)를 통해 ip 주소를 공유할 수 있다.
- 라우터에도 ip 주소가 존재하기 때문에 라우터 끼리도 통신이 가능하다. 각 라우터들은 같은 라우터를 공유하는 지역 네트워크들을 서로 연결해주는 역할을 한다.
- 라우터 덕분에 정보들은 복잡한 길을 거치지 않고 목적지인 컴퓨터에 도달할 수 있게 되었지만 먼 나라같이 아주 거리가 먼 곳까지 라우터를 연결할 수는 없었다. 그걸 해결하는 것이 전화선이다.
- 모뎀을 이용해 네트워크 정보를 전화 시설에서 이용할 수 있는 정보로 바꾼다.
- 전화 시설은 먼 곳에 있는 네트워크로 도달하기 위해 ISP(Internet Service Provider)에 연결된다. (여기서 ISP는 우리나라의 통신사를 생각하면 된다.)
- ISP는 다른 ISP 라우터에도 연결이 가능하여 네트워크 정보는 ISP 네트워크를 통해 멀리 있는 다른 네트워크로 전송된다.
<참고>