(인터넷) 또는 network(네트워크) 또는 server(서버)
두 대의 컴퓨터가 있다면 노트북, 나의 컴퓨터이고 그리고 다른 한대의 컴퓨터는 어딘가에 있는 어떤 구글의 컴퓨터이다.
우리 컴퓨터에서 인터넷을 이용한다라고 했을 때
인터넷을 이용하는 여러 가지 프로그램들이 설치 된 것 중 하나가 웹 브라우저이다,
웹 브라우저는 주소창에 google.com 입력하고 엔터를 치면 중간에 인터넷이 있는데
google.com(구글닷컴) 에 해당되는 컴퓨터로 접속이 들어갑니다
그럼 google.com(구글닷컴) 내가 요청한 정보를 그 컴퓨터 안에서 찾아서 다시 나의 컴퓨터로 접속을 하는 거예요
구글에서 나의 컴퓨어에게 신호를 다시 쏘면 그 신호가 이 화면에 표시되는 구조이다.
핵심은 나의 컴퓨터는 지금 구글이라고 하는 회사의 서버회사에게 요청,'request' 를 했다.
그러면 google.com(구글닷컴)은 나에게 어떠한 정보를 보내주는데 그러한 행위를
응답한다'response' 라고 합니다
즉 '인터넷'은 request(리퀘스트)와 response(리스폰스)가 계속해서 왔다갔다 하는
컴퓨터들 간의 대화이다. 우리가 이걸 통신이라고 하죠
request(리퀘스트)를 한 컴퓨터를 구분해서 서버 클라이언트(Client)
그 request(리퀘스트) 를 받어서 respose 응답해주는 이 컴퓨터를 서버(Server)라 부른다
클라이언트는 요청하고 서버는 응답하는 것이 바로 인터넷이 돌아가는 원리이다.
우리가 구글닷컴 회사의 서버에 접속할 때 google.com을 이용하는데 이를 domain name 라고 부른다.
우리가 이 서버에 접속하는 또 다른 방법은 ip(internet protocol 인터넷 프로토콜) address이다.
172.217.25.78 이 구글의 서버에 우리가 접근할 수 있는 주소인 ip address입니다
즉 우리가 구글의 서버에 접근하기 위해서는 두 가지 방법[domain name]과 [ip address] 다 사용할 수 있다
두 가지 주소체계의 관계
전화번호 부에는 egoing(이고잉)은 바로 요기에 있는 도메인 네임에 해당되는 것 이라고 할 수 있고 이 사람의 실질적인 전화 를 걸 수 있는 방법인 전화 번호는 ip address 와 같은 것이다.
사람의 전화를 기억하는 것이 어렵기 때문에 우리는 이름을 기억하고 그 이름에 해당되는 전화번호를 저장했다가 전화를 할 때는 이름을 입력하면 전화가 걸리는 것이죠
컴퓨터도, 인터넷도 정확하게 똑같이 동작하는데 google.com 이라고 입력하면 구글닷컴으로
request(리퀘스트) 가 가는게 아닌 실제로는 어떤 현상에 의해서 ip address 로 변환되서 ip address 로 접속이 들어가고 응답이 되는 것이다.
어떻게 google.com이 172.21.25.78 인지 알 수 있을까? 그 이유는 바로 DNS (디엔에스) 라는 써버에 있다.
DNS (디엔에스) 라는 서버는 이세상에 있는 모든 도메인이 각각 어떤 ip 인지를 알고 있는
거대한 전화번호부이다.
google.com (구글닷컴) 이라고 입력하면 나의 컴퓨터는 연결된 dns 서버에 접속을 해 dns 서버에게 물어본다. google.com 의 ip 어드레스가 무엇인지 그럼 dns 서버는 자신이 갖고 있는 데이타베이스를 뒤져서 google.com 의 ip, 172.21.25.78를 알려줘서 ip로 접속을 해서 응답을 받을 수 있다.
이 컴퓨터는 서버로 사용할 컴퓨터로 서버로 쓴다는 것은 누군가가 이 컴퓨터의 접근할 수 있도록 해야한다 그러기 위해선 이 컴퓨터 주소를 알아야 한다
자신의 IP를 알아내는 방법은 ip 명령어에 옵션으로 addr 치면
inet이라고 적혀있는 10.0.2.15 이 ip address로 접속을 하면 이 컴퓨터에 방문할 수 있다.
쉘 환경에서 웹브라우저 없기에 curl에 구글닷컴이라고 치면 구글에 접속해서 구글의 html 파일을 다운로드 받아서 이렇게 화면에 보여준다.
접속했하려는 주소 ipinfo.io/ip 앞에 curl을 붙이면 자기 자신의 컴퓨터에 ip의 를 알려준다. 112.144.52.141이 나온다.
이상한 건, 한 대의 컴퓨터에서 똑같이 ip를 조회해 봤는데 이 두개의 결과가 다르다.
밑에 있는 ip addr이라고 하는 것은 이 컴퓨터가 실질적으로 가지고 있는 ip가 무엇인지를 알아내는 것이다. 즉 이 컴퓨터에 부여된 실제 ip이다.
그리고 curl이라고 하는 것은 그 뒤에 들어오는 ipinfo.io 라고하는 그 온라인 서비스 입장에서 자기한테 접속한 결과적인 ip가 뭔지를 확인하는 것이다.
이 컴퓨터를 여러분이 쓰기 위해서는 집에서 여러분이 컴퓨터와 인터넷을 쓸때는
보통, 통신사와 계약을 맺고 통신사는 집에다가 회선을 넣어준다.
그럼 인터넷을 쓰기 위해서는 이 컴퓨터와 그 회선이 연결이 되면, 그러면 컴퓨터는 인터넷을 쓸 수가 있다.
그때 통신사는 이 회선에 대해서 우리가 받았던 형태에 ip를 준다. 물론 ip는 집집마다 다르다. 그렇기에 나의 컴퓨터에 서버 소프트웨어를 깔면 사람들에게 이 ip를 알려주면 사람들은
나의 컴퓨터에 접속할 수가 있게 된다.
컴퓨터 한 대가 아니라 여러대가 있다면
여기에 Router(라우터)라고 부르는 장치를 붙여 뒤에다가 컴퓨터, 노트북, 티비 등을 연결할 수 있다.
그럼 통신사와 하나의 회선을 계약한 상태에서 하나의 사용료로 여러대의 컴퓨터를 쓸 수 있게 된다.
여기 있는, 이 통신사가 제공한 ip는 라우터라고하는 이 장치에 ip가 된다.
여기는 각각에 컴퓨터들도 통신을 하기 위해서는 반드시 ip를 가지고 있어야 되기에
사설 IP라고 하는 private IP 개념이 등장한다
가령 회사가 가진 대표번호와 각각의 전화이 가진 내선번호 구도를 그대로 인터넷으로 가저 오면 이 IP는 말하자면, 대표번호와 같은 것이며 각각에 컴퓨터를 식별하기 위해서는 가지고 있는 ip는 끝에만 달라지는 방식으로 내선번호와 같은 것을 가진다.
이러한 외부에 공개되는 IP라고 해서 public IP, public address 공인 아이피라고 하며, 맞은 편에 있는 IP들은 외부에 공개되지 않고 자체적으로는 사용할 수 의미에서 private IP, address 라고 부른다.
curl을 통해서 알아낸 IP는 컴퓨터가 이렇게 private IP를 통해서 라우터로 접속하면
외부에선 라우터가 갖고 있는 IP를 보게 된다. 그렇기 때문에 외부에 있는 ipinfo.io 서비스는 라우터의 주소를 보고 그것을 우리한테 알려준 것이다.
ip addr 명령은 이 컴퓨터에 실질적으로 어떤 IP가 붙어있는가 라는 것을 확인하는 것이기 때문에 private IP가 나온 것이다.
회사의 대표번호가 없더라도 이 회사안에 있는 이 부서들간에는 내선번호 통해서만 서로 통화를 할 수 있는데 마찬가지로
외부에 있는 컴퓨터가 나의 컴퓨터에 바로 접속할 수 는 없지만 라우터안에 묶여 있는 컴퓨터들 간에는 통신을 할 수가 있다.
그리고 여기에 있는 이런 라우터를 쓰고 있는 컴퓨터라고 할지라도 라우터가 갖고 있는 기능을 잘 세팅을 하시면 어떤 특정한 사용자가 IP를 통해서 들어와서 나의 어떤 특정 컴퓨터에 접속해서 서버활동을 할수가 있다.