공인 IP
인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소. 공인 IP는 전세계에서 유일한 IP 주소를 갖는다.
사설 IP
일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다.
NAT vs Port Forwarding
NAT(Network Address Translation)
ip주소 개수의 부족으로 모든 기기들이 공인 ip주소를 다 할당받지 못한다. 그래서 나오게 된 개념이 NAT
NAT는 Network Address를 Translation하는 작업. Translation 작업은 서브넷을 관장하는 라우터가 맡는다.
NAT 라우터는 외부 인터넷 망과 연결되어 있으므로 공인 IP주소를 갖는다. 서브넷의 다른 디바이스들은 사설 IP 주소를 사용해서 NAT 라우터를 포함한 서브넷의 다른 디바이스들과 데이터를 주고받는다. (예: 디바이스들은 10.0.0.1부터 10.0.0.3까지의 주소를, NAT 라우터의 서브넷 쪽 인터페이스는 10.0.0.4의 주소를 갖는다).
NAT를 사용하게 되면 여러개의 ip주소가 필요없다. 위의 예를 보았을때 원래는 4개의 공인 IP주소가 필요하지만 1개의 공인 IP주소와 4개의 사설 IP주소로 해결하였다. 서브넷 내에서는 연결이 가능하지만 외부 인터넷 망에는 연결을 할 수 없의 NAT Translation으로 [디바이스의 사설 IP 주소, Port 번호]를 [NAT 라우터의 공인 IP 주소, Port 번호]로 매핑(mapping)시킨다. 그렇다면 외부의 디바이스들도 서브넷의 디바이스로 연결될 수 있다. 외부의 client와 서버는 [NAT IP 주소, port #]을 가지고 응답하게 된다. 즉, NAT 라우터는 외부세계에서 라우터처럼 보이지 않고 하나의 IP주소를 갖는 하나의 장비로 동작한다.
local network에서 바깥과 통신할때 한개의 IP주소를 사용한다. NAT를 사용하게 되면 여러 디바이스에 대해 1개의 ip주소를 갖게 된다. 즉, IPv4의 주소 고갈 문제를 해결할 수 있다. 그러나, 일견에서는 IPv6로 해결해야 한다고 얘기한다.
Port Forwarding
특정 포트(port)를 포워딩(forwarding)해주는 작업이다. 쉽게 생각하면 구멍을 뚫는 것.
NAT(Network Address Translation)의 기능 중의 하나로서 포트 매핑(port mapping)이라 불리우기도 한다.
게이트웨이 라우터의 특정 포트 번호(예: HTTP 프로토콜의 80번)에 구멍을 뚫어서, 어떤 서브넷 디바이스의 포트 번호(똑같이 80번이거나 다르거나)와 직통으로 연결시키는 것이다.
포트-포워딩을 설정할때는 외부 포트(라우터의 포트번호)와 내부 IP/포트(라우터 뒤에 숨어있는 디바이스의 사설 IP와 포트번호)를 묶어서 설정한다. 예를 들어 서브넷에 속한 사설 IP 주소 10.0.0.1인 디바이스의 1000번 포트에서 어떤 어플리케이션 프로세스가 가동중이라고 하자. 이 1000번 포트에 게이트웨이 라우터의 2000번 포트로 포트-포워딩을 해주도록 설정했다고 하자. 그러면 외부 인터넷 망에서 게이트웨이 라우터의 공인 IP 주소:2000번 포트에 연결하면 10.0.0.1:1000번 포트의 어플리케이션 프로세스와 연결할 수 있게된다.
둘의 차이점은?
서브넷에 속한 디바이스의 [사설 IP 주소, 포트번호]가 게이트웨이 라우터의 [공인 IP 주소, 포트번호]로 매핑된다는 점에서 NAT와 동일해보이지만, 차이점은 매핑관계가 유지된다는 점이다.
NAT는 동적으로 매핑된 정보가 생성된다. 포트포워딩을 사용하기 위해서는 미리 라우터(공유기)의 특정한 포트 번호와 사설 IP 주소를 매핑해 두어야 한다. 포트포워딩에서는 매핑정보가 장기적으로 유지된다.
ex)서브넷에 물린 서버 컴퓨터에서 HTTP 서버가 돌아가고 있다면, 보통 HTTP 프로토콜에 내어주는 80번 포트를 사용중일텐데, 게이트웨이 라우터에서도 80번 포트를 내어주는 것이다. 그러므로 게이트웨이 라우터의 공인 IP주소:80 을 대외적으로 알린다면 외부 인터넷 망에서도 이 HTTP 서버에 접속할 수 있게 된다.
HTTP
하이퍼 텍스트 전송 프로토콜(Hypertext Transfer Protocol)
서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜
HTTPS
- CA를 통해서 인증서를 구입 (인증서는 특정 기관에서 발급해주고 이 기업들이 CA(Certificate authority))
- 발급 받은 인증서를 설치
- 서버쪽 셋팅을 하여 SSL을 적용
데몬
- 멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.
- 일반적으로 프로세스의 형식으로 실행되며 데몬이라는 표시를 위해 뒤에는 d가 붙는다.
- 유닉스 계열에서는 데몬을 시스템의 기능을 제공하거나 백그라운드에서 항시 실행되는 프로그램으로 뜻하며 다른 운영체제에서는 '시스템 프로세스'라 불린다. 대부분 시스템의 시작과 끝을 함께한다. 그렇기에 대개 관리자 권한으로 실행되어 네트워크 요청이나 하드웨어 동작 등 여러 기능을 담당하며 다양한 목적으로 사용된다.
- 데몬은 일반적으로 자식 프로세스를 포크(fork)하여 자기 자신을 복사, 생성한 후 자기 자신은 삭제하여 해당 프로세스를 고아 프로세스로 만든 후 이를 init이 자신의 자식 프로세스로 받아들이도록 하는 과정을 통하여 만들어지며 이를 'fork off and die'라 표현한다.