리눅스: 인터넷, 네트워크, 서버
인터넷, 네트워크, 서버라는 것에 대해서 이야기해보자.
일단 이런 것들에 대한 기초적인 소양을 먼저 확인해보자.
2대의 컴퓨터가 있다고 생각해보자.
1대는 내가 사용하는 컴퓨터이고 1대는 google회사 서버 컴퓨터라고 하자.
이제 내가 사용하는 컴퓨터에서 웹브라우저에 접속하여 google.com에 접속하려고 한다.
우편을 보내면 편지가 친구한테 갔다가, 그대로 돌아오는 것이 아니라 친구가 글을 써서 다시 돌려보내는 느낌.
구글 회사에 request
회사는 응답해서 다시 보내준다. response
이러한 것들을 컴퓨터들의 대화, 통신이라고 한다.
클라이언트는 요청하고 서버는 요청한 것에 대해서 보내준다.
이전까지는 클라이언트의 입장에서 배워왔다. 하지만 이제는 서버의 입장, 정보를 제공하는 생산자의 입장에서 배워볼 것이다.
서버에 접속하려면 2가지 방법을 사용해서 접속한다.
하나는 ip (internet porotocol), domain name 이다.
ip, 도메인을 이용해서 해당 주소에 접속할 수 있다. 그렇다면 어떻게 2가지를 이용해서 접속할 수 있을까? 2가지의 관계는?
아주 적절한 예시로 전화기에 있는 전화번호부가 있다.
전화기에서 전화하는 방법은 2가지다. 해당 전화번호를 직접 입력해서 전화를 방법과 해당 전화번호와 일치한 전화번호부의 이름을 찾아서 전화하는 방법이 있다. 인터넷의 ip와 도메인의 구조도 이와 동일하다.
이런 방법을 사용하는 이유는 전화번호나 ip는 숫자로만 이루어져있어서 기억하기가 힘들다. 그래서 도메인이라는 개념을 도입한 것이다.
그렇다면 내가 사용하는 컴퓨터에는 해당 ip가 domain인지 어떻게 알고 접속할 수 있는 것인가??? 컴퓨터에 미리 저장되어 있는건가?
실제로는 dns라는 서버가 있다. dns라는 서버는 이 세상에 모든 도메인의 ip주소를 알고있는 거대한 전화번호부라고 생각하면 된다. 그래서 해당 도메인에 접속할 때 dns서버에 빠르게 접속을 해서 해당 ip를 찾아주고 컴퓨터는 해당 ip에 접속한다고 한다.
이제 서버를 운영을 한다고 가정하면 먼저 클라이언트와 서버의 구조를 알아야 한다. 그리고 다른 사람이 찾아올 수 있도록 내 ip주소를 알려줄 수 있어야 한다.
서버를 운영하기 위한 조금 더 구체적인 이야기를 해보자.
서버를 운영하고 싶으면 일단 상대방이 내 서버프로그램이 깔려있는 컴퓨터의 주소를 알아야 접속이 가능하다. 이는 ip를 알아야 접속이 가능하다는 뜻이다.
ip를 알아내기 위해서는 몇가지 방법이 존재한다.
자신의 ip를 알아내는 명령은 ip이다.
ip를 알아내는 다른 방법. ipinfo.io/ip라고 치면 ip주소가 나온다.
보면 curl 과 ip 명령어를 쳐서 나오는 ip주소가 다를 수 있다.
이 원리에 대해서 생각해보자.
보통 일반 가정집은 인터넷 회선을 설치해서 이를 컴퓨터에 연결해서 쓴다. 하지만 만약에 한 집에 인터넷을 사용해야하는 컴퓨터 수가 많다면 하나씩 회선을 설치해야 하는가? 가능은 하지만 비싸다.
그래서 조금 더 저렴하게 사용하기 위해서 라우터, 공유기를 사용한다. 공유기를 사용하면 외부 ip, 내부 ip로 나뉘게 된다. 외부 ip는 말 그대로 외부에서 ip를 사용했을 때 볼 수 있는 ip주소이다. 내부 ip는 회사 내선번호와 같은 개념으로 보면 된다.
이렇게 ip에 대해서 구체적으로 알고 있어야 서버를 운영하는 것에 있어서 용이하게 운영할 수 있다.