IPv4와 IPv6의 등장
인터넷과 인터넷이 통신을 하기 위해서는 IP Address가 필요하다.
개발의 선구자들은 이 IP Address를 사용할 수 있도록 IPv4라는 주소체계를 개발했다.
IPv4는 0.0.0.0 ~ 255.255.255.255까지 42억개의 주소를 표현할 수 있다. 하지만 기술이 발전하고 IoT, 웹, 스마트폰, 클라우드 컴퓨팅 기술이 나타나게 되면서 인터넷에 연결되는 컴퓨터의 양이 기하급수적으로 증가하게 되었다.
그래서 IPv4의 주소 형식을 새롭게 바꾸어서 도입하기로 마음을 먹었고 결국 해결책을 내놓았다. 이것이 바로 IPv6이다. Ipv6의 등장으로 인류는 천년뒤에도 쓸수 있을 만큼 주소의 수를 넉넉하게 마련할 수 있게 되었다.
공유기의 등장
주소가 부족할 때마다 체계를 새로 바꾸는 것은 시간이 오래 걸리는 일이다. 그렇기 때문에 기존의 주소 체계인 IPv4를 아껴써야 한다. 사람들은 이 문제에 대해서 고민했고 그 노력 중의 하나가 공유기이다.
하나의 공유기에는 여러 대의 컴퓨터가 주소를 나눠 쓸 수 있고 개인의 통신 요금을 절약해 줄 수 있다.
그렇지만 공유기에 연결되어 있는 컴퓨터에 서버를 설치해서 사용하는 것은 쉽지 않은 일이기 때문에 먼저 배워야 할 것들이 많다.
- Network Address Translation
- Private IP Address
- Port forwarding
- Dynamic vs Static IP address
- Dynamic DNS
인터넷을 사용하기 위해서는 컴퓨터가 IP 주소를 가지고 있어야 한다. 그래야만 통신을 할 수 있기 때문이다.
인터넷에 접속되어 있는 컴퓨터들은 서로 정보를 주고받아야 하기 때문에 IP 주소가 필요하다.
현실에서 동작 과정
- 통신사랑 계약을 진행하여 회선을 받는다.
- 장치에 회선을 유선으로 연결하거나 와이파이로 무선으로 연결을 하면 자동으로 IP가 부여된다.
과거에는 컴퓨터 하나만 존재했지만 지금은 시대가 변화하면서 컴퓨터 뿐만 아니라 노트북, 스마트폰 등 다양한 전자 기기들이 나오게 되었다. 이 많은 장치들을 인터넷에 연결하기 위해서는 어떻게 해야할까?
첫 번째로 각 기기에 회선을 연결하는 방식이 있다. 하지만 이것은 비용이 많이 들기 때문에 그다지 효율적이지 못한 방법이다. 그래서 나온 방법이 바로 공유기를 이용하는 것이다.
공유기(Router)
공유기(라우터)는 하나의 회선을 가지고 여러 개의 기기에 IP를 부여할 수 있는 장치이다. 서로 다른 네트워크 사이에서 중계하는 역할을 하고 있다.
- 통신사에서 하나의 회선을 계약하고 공유기를 산다
- 통신사랑 계약하여 받은 케이블을 WAN 구멍에다 꽂는다.
- 각각의 기기들은 LAN 구멍에다 꽂는다.
공유기의 뒤를 돌려보면 구멍이 여러 개가 있는 것을 볼 수 있다. 여기서 구멍이 왼쪽에 혼자 떨어져있는 것이 WAN이고 오른쪽에 여러 개가 붙어있는 것이 LAN이다.
사용자가 케이블을 WAN에다 꽂는 순간 통신사로부터 발급받은 주소는 공유기의 것이 된다. 만약에 IP주소를 브라우저에 입력한다면 그 공유기에 접속할 수 있게 된다.
여러 개의 장치들은 LAN에다가 회선을 연결하고, 스마트폰과 같은 무선 장치들은 안테나를 통해서 무선으로 연결한다.
자! 이제 하나의 회선을 가지고 동시에 여러 개의 장치들에게 IP를 부여해줄 수 있게 되었다.
LAN과 WAN
- LAN(Local Area Network) : 기기들이 연결되어 있는 지역 네트워크 영역
- WAN(Wide Area Network) : 광역 네트워크. 즉, 인터넷
케이블 무선 연결되는 순간 자동으로 각각의 장치들은 IP를 부여받는다고 했는데 Lan쪽에서 공유기에게도 아이피가 부여된다. LAN에서 공유기에 부여되는 IP. 이것을 Gateway address 또는 Router address라고 한다.
Public IP adress vs Private IP address
- public IP address : 전 세계에 있는 누구나 접속이 가능한 IP address
- private IP address : 지역 네트워크 안에서만 사용이 가능한 IP address
IPv4 사설 IP
IPv4에서는 전세계에서 사설 ip로 쓰기로 약속해놓은 영역이 있다.
그림에서 표에 나와있는 주소들이 지역 네트워크 안에서 사용하도록 지정해놓은 IP들이다.
내가 대규모 네트워크를 구축하고 싶다! 그렇다면 10.0.0.0~10.255.255.255 범위 안에서 IP를 정하면 되고, 소규모 네트워크를 구축하고 싶다면 192.168.0.0~192.168.255.255 주소 중에서 IP를 설정하면 되는 것이다.
NAT
지역 안에서만 사용할 수 있었던 private IP가 전 세계인들이 모두 사용할 수 있는 Public IP 주소로 변경되어 다른 네트워크에 있는 사용자가 내 웹 사이트에 접근할 수 있게 해주는 기술
내 기기를 클라이언트로 사용했을 경우 NAT 동작
내 컴퓨터의 인터넷으로 위키피디아에 접속하여 어떤 작업을 수행한다고 가정하였을 때 NAT가 어떻게 동작하는지 알아보자!
- 내 컴퓨터는 Gateway address에 속하는 공유기의 IP에게 신호를 보낸다.
- 공유기는 이 IP가 지역 네트워크 안에 있는지 밖에 있는지 확인한다. 안에 있는 기기라면 바로 보내겠지만 밖에 있는 public IP라면 두 가지 일을 수행한다.
-
- 보내진 private IP 주소를 공유기에 기록함
-
- 공유기가 NAT라는 기술을 이용해서 요청한 데이터를 변경한다. 즉, private IP 주소를 public IP 주소로 바꾸어준다.
-
- 위키피디아가 그 정보를 받고 작업을 완료한 뒤 응답을 공유기로 다시 응답을 보낸다.
- 공유기는 이 응답이 192.168.0.4가 보낸 요청에 대해 응답받은 정보라는 것을 확인한 뒤 내 컴퓨터로 정보를 보내준다.
Port(포트)
하나의 컴퓨터에는 여러 가지의 형태의 서버가 설치되어 있을 수 있다. 과연 이 서버들을 어떻게 식별할까? 많은 서버들 중에 어떤 서버랑 상호작용 할 것인지 알려줘야 하는데 그 때 포트가 필요하다.
- 포트 번호는 0~65535 순서가 있음
- 0~1023 : Well-known port(예약된 포트)
- 사용하면 막혀있다
- 80 : http
- 웹 서버는 기본적으로 80번에 리스닝되도록 약속되어 있다.
- 1023~ 65535 : 이 범위에 있는 포트는 마음대로 사용해도 된다.
- 보통 웹서버를 관습적으로 8000 또는 8080 포트에 설치한다.
리스닝 : 포트에서 '연결한다'라는 의미이다.
Port forwarding(포트 포워딩)
지역 네트워크 안에 있는 내 컴퓨터에 웹 서버를 설치하고 사용자가 여기에 접속하려고 할 때 공인 IP 주소:설정한 포트를 입력하면 내부 IP 주소:설정한 포트로 변환하여 웹 페이지에 들어갈 수 있다. 이 기술을 포트 포워딩이라고 한다.
192.168.0.4에 웹 서버를 설치해 외부 사용자가 접속하게 한다면
- 사용자에게 public IP를 알려준다.
- IP 주소로 접속했을 때 192.168.0.4에 바로 접속하게 한다.
이런 방식으로 접속하게 할 수 있다.
이 때, 필요한 것이 바로 포트 포워딩이다.
포트 포워딩 기술로 59.6.66.238:8081번 포트로 누가 들어온다면 그 사용자는 192.168.0.4:80로 보낼 수 있다. 한마디로 라우터는 일종의 안내자 역할을 한다.
라우터가 안내자 역할을 하기 위해서는 약간의 설정을 바꿔주면 된다. 라우터마다 관리자 UI가 약간씩은 다르겠지만 전체적으로 비슷하다. 여기서는 ipTime 라우터로 설명하겠다.
ipTime
Q. 59.6.66.238:8081번 포트로 들어오면 192.168.0.4:80번 포트로 들어오게 하자.
- 고급 설정 -> NAT/라우터 관리 -> 포트포워드 설정
포트포워드 설정으로 간 뒤, 규칙이름과 내부 IP 주소, 설정할 외부 포트의 번호와 내부 포트의 번호를 입력해준다.
그러면 보는 것과 같이 이렇게 등록이 된다.
Public IP:8081번으로 들어오면 내부 IP 192.168.0.4에 해당되는 컴퓨터의 80번 포트로 들어온다.
포트 포워딩을 한 순간 Public IP는 공유기의 IP가 되고 설정을 8081로 했으니까 8081로 접속했을 때 192.168.0.4:80번 포트에 웹 페이지가 나오게 된다.
Dynamic IP Address
내가 통신사(ISP)와 계약을 한다면 하는 순간 IP를 지급받는다. 이 IP를 통하여 다른 사용자가 자신의 컴퓨터에 나의 IP를 입력하고 엔터를 치면 그 컴퓨터와 요청과 응답을 주고받을 수 있다. 이렇게 계속 된다면 참 좋겠지만 문제는 IP는 한정적이라는 것이다. 집집마다 하나의 고정적인 IP만을 계속해서 부여한다면 IP의 양이 부족해질 것이다.
그래서 나온 방법이 바로 Dynamic IP Address이다. 우리는 인터넷을 이용할 때 IP를 사용한다. 하지만 만약 일이 있어서 일정 기간 집을 비운다면? 집에 없는 기간동안 인터넷을 사용하지 않을 것이다. 이 때, ISP가 부여한 IP를 회수해서 새로운 가입자나 인터넷을 사용하고 있는 다른 집에 IP를 부여한다. 그리고 내가 다시 집에 돌아와 인터넷을 사용한다면 그 때 새로운 IP를 부여하게 된다. 한마디로 IP를 아껴쓰기 위해 계속하여 돌려쓰는 것이다.
한 가지 문제가 발생할 수 있는데, 바로 내 컴퓨터에 웹 서버와 같은 서버를 깔아놓은 경우이다. 내 IP가 계속하여 바뀐다면 다른 사용자가 내 과거의 IP 주소를 입력하여 엉뚱한 사람에게 접속할 수 있다.
Static IP Address
컴퓨터의 IP가 고정되어 있다. IP를 독점적으로 사용하기 위해 통신사에 요금을 더 내고 이 IP를 받을 수 있다.
Script
IP는 0.0.0.0~ 255.255.255.255 범위에서 42억 개의 주소를 표현 했다 이를 IPv4 라고 했지만 주소가 부족해져서 IPv6을 개발하여 더 많은 주소를 제공하는 기술을 만들었다. 공유기를 통해서 1개의 IP를 여러 대의 기기가 나눠 쓸 수 있게 되었고 사설 IP를 공인 IP로 변환해 인터넷에 연결 가능 하도록 되었다.
인터넷은 통시나와 계약 후 회선을 받고 그 회선을 유선 또는 무선으로 장치에 연결해 자동으로 IP을 부여했고 여러 장치를 연결하기 위해 공유기를 사용하기 시작했다. 여기서 Public IP는 전 세계 어디서든 접속이 가능하지만 Private IP는 내부 네트워크에서만 사요이 가능하다.
그렇다면 이 많은 IP와 서버가 존재하는데 어떻게 식별할까? 이 때 사용되는것이 포트이다. 포트 번호는 0 ~ 65535 으로 되어있으며 Well-known Port 는 0 ~1023 예약된 포트, 1024~65535는 자유롭게 사용이 가능하다. 외부에서 특정 포트로 접속 시 내부 네트워크의 특정기기로 연결해주는 번호는 8081(공인) -> 내부 80 으로 되어있다.