[생활코딩] Home Server

OROSY·2021년 5월 23일
0

TIL

목록 보기
10/18
post-thumbnail

IPv4에서 IPv6로 통신규약이 변경될 정도로 양이 많아졌습니다. 이러한 IP 주소를 절약하기 위한 대안으로 공유기는 활용되게 되었습니다. 그러나 공유기로 연결된 컴퓨터로 웹서버를 운용하는 것은 어려운 일입니다. 이에 대해 알아보도록 합시다.

생활코딩의 강의 내용을 정리한 내용이므로 자세한 사항은 꼭 해당 강의를 참고하시기 바랍니다.

Router

인터넷을 사용하기 위해 컴퓨터는 IP 주소를 가져야한다. 그래야 컴퓨터가 서로 통신을 할 수 있게 된다. 그리고 여러 기기를 한 번에 이 IP주소와 연결하게 하는 것이 공유기이다.

공유기에는 WAN, LAN 선이 있는데 인터넷 회사에서 받은 케이블 선을 WAN과 연결하게 되면 IP 주소를 부여받게 됩니다. 그리고 그 주소는 공유기의 것이 됩니다.

LAN이 각각의 기기와 연결을 하는 포트이며, 이는 지역 네트워크 Local Area Network의 약자입니다. 공유기는 인터넷이라는 광역 네트워크에 소속되어 있고 이것이 Wide Area Network 입니다.

이렇게 공유기는 WAN과 LAN 사이에 있는 중개자 역할을 하는 교환원 같은 기계, Router라고 부릅니다.

그리고 인터넷에 연결을 하게 되면 공유기는 IP 주소를 부여받게 되고 이것이 Gateway address, Router address입니다. 그리고 이를 통해 연결된 각각의 기기들 또한 IP 주소를 부여받고 이것이 Private IP address입니다.

추가적으로 Router address를 내부 IP 주소라 부르며, 외부 IP 주소가 네트워크의 Public IP address(공인 IP 주소)인 것입니다.

NAT

예를 들어, 노트북에서 위키피디아로 검색을 한다고 생각해봅시다. 이렇게 되면 요청을 하게 되는 노트북의 사설 IP 주소를 공유기에서 기록을 하게 됩니다. 그래야 이후 요청한 응답을 전달해줄 수 있을테니까요.

그러나 해당 주소는 외부에서 접속하지 못하는 주소입니다. 그러면 공유기에 Network Address Translation라는 기술이 해당 요청을 한 데이터를 공인 IP 주소로 변경한 뒤 위키피디아 서버에 보내는 것입니다.

그리고 서버에서 응답이 오게 되면 기록한 사설 IP 주소로 보내게 되는 것입니다. 이는 노트북이 클라이언트 역할을 하는 과정에 대한 이야기이고 반대로 내 노트북이 서버로 동작하기 위한 과정을 알아봅시다.

Port

그렇다면 과연 내 노트북에서 어떻게 웹서버를 운영할 수 있을까? 공인 IP 주소로 연결한다하더라도 어떤 기기와 통신을 해야하는지는 알지 못하기 때문입니다. 이를 위해 필요한 것이 Port Forwarding이라는 기술입니다. 그리고 이전에 알아두어야 하는 개념이 Port입니다.

하나의 컴퓨터에도 굉장히 여러 서버를 갖게 됩니다. 게임 서버, 채팅 서버 등이 있습니다. 이를 구분하게 하는 것이 바로 Port 번호입니다.

포트 번호는 65,535개가 있으며 이중에 1023번까지의 포트는 예약된 포트라고 하여 Well-known 포트라 부릅니다. 이 번호는 마음대로 사용할 수 없습니다. 예를 들어, http라는 웹의 포트 번호는 80번입니다. 그리고 웹서버를 깔게 되면 기본적으로 80번 포트에 연결되도록 약속되어 있습니다. 추가적으로 포트가 필요하다면, 8080 등이 사용되는 것입니다.

결국 하나의 컴퓨터 안에 서로 다른 서버가 설치되어 있고 포트 번호에 따라 컴퓨터가 다른 서버를 제공하게 되어주는 것입니다.

Port Forwarding

나의 웹서버로 접속하도록 하기 위해서는 공인 IP 주소로 들어와서 나의 사설 IP 주소로 연결하게 하면 되는 것입니다. 이를 가능하게 하는 것이 포트 번호입니다.

59.6.66.238:8081 ➡ 192.168.0.4:80
59.6.66.238:8080 ➡ 192.168.0.3:80

이렇게 포트 번호 별로 각각 다른 컴퓨터로 연결하게 되는 것입니다. Router가 안내자 역할을 하는 것이죠. 이러한 역할을 하게 하기 위해서는 Router의 설정을 바꿔주면 됩니다.

Dynamic 🆚 Static IP Address

이렇게 모든 집에 IP 주소를 주게 되면 턱없이 부족하게 될 것입니다. 이를 위해 유동 IP 주소라는 개념이 등장하게 됩니다. 한 마디로 말해 우리의 IP 주소가 계속해서 바뀌게 되는 것입니다.

내가 만약 나의 IP 주소를 오랫동안 사용하지 않는다면, 통신사(Internet Service Provider) 이 주소를 회수하여 다른 집에 주는 것입니다. 내가 다시 돌아오면 다른 IP 주소를 받게 되겠죠? 이렇게 IP 주소가 바뀌는 것을 Dynamic IP Address, 동적 IP 주소인 것입니다.

이러한 상황에서 이전에 내가 사용했던 웹서버의 주소는 달라지지 않았을테고 그러면 외부에서 이전과 동일한 주소로 접속을 하게 되면 엉뚱한 주소로 접속을 하게 되는 상황이 발생하게 됩니다. 이러한 문제가 발생하는 것을 해결하기 위해서는 통신사에 금액을 지불하면 Static IP Address, 고정된 IP 주소를 발급받을 수 있게 됩니다.

DHCP

내 컴퓨터에 랜선을 연결하거나 와이파이를 잡게 되면, 그 순간에 각자의 기기에는 동적으로 IP 주소, DNS, 서브넷, 게이트 주소와 같은 복잡한 정보들이 자동으로 세팅이 됩니다.

이를 가능하게 하기 위해서는 DHCP 서버라는 것이 필요합니다. 그리고 공유기는 DHCP 서버라는 기능이 내장되어 있고 각각의 기기에는 DHCP 클라이언트라고 하는 프로그램이 역시나 기본적으로 설치되어 있습니다.

그리고 우리가 사용하는 기계는 공장에서 부여한 고유한 식별자가 있으며, 이를 Media Access Control Address 혹은 Physical Address라 불립니다.

이렇게 클라이언트가 라우터 즉, DHCP 서버에게 IP 주소를 요청하면, 이에 대해 위와 같이 응답을 하게 됩니다. 그리고 클라이언트가 이 서버를 사용하겠다고 응답하면 DHCP 서버는 본인 컴퓨터 안에 MAC 주소와 IP 주소를 매치하여 어떠한 기기가 해당 IP 주소를 사용하고 있는지 기록하는 것입니다.

profile
Life is a matter of a direction not a speed.

0개의 댓글