오늘은 네트워크 기초 개념에 대해 포스팅하고자 한다.
host는 guest를 맞이하는 주인이다. 이 의미가 그대로 적용되어 IT에서의 호스트는 무언가를 받아주는 객체다. 굉장히 추상적인데 이건 웹의 흐름을 보면 이해할 수 있다.
웹에 대한 여러가지 프로그램들이 있지만 결국 웹은 요청과 응답 이 두가지로 이루어져 있다. 응답에는 동기와 비동기가 있다. 여기서 요청을 하는 쪽이 클라이언트고 응답을 하는 곳이 호스트다.
내가 태블릿pc로 검색엔진에 'luaaw'를 검색한다면, 검색을 요청하는 내 테블릿pc가 클라이언트가 될 것이고, 검색 결과를 보여주는 검색엔진이 호스트가 될 것이다.
네트워크는 정보를 전달하기 위해 만들어졌는데, 이 정보를 어디에서(누가) 어디로(누구에게) 보낼 지 정해야 한다.
우리가 택배를 보낼 때 보내는이, 받는 이 주소를 모두 입력하듯이 클라이언트가 요청을 보내기 위해서는 요청 주소와 응답 주소가 있어야 하는데 그게 ip주소다. ip주소는 컴퓨터가 인식할 수 있도록 3개의 마침표로 나뉘어진 숫자로 이루어져 있다(000.000.000.000).
즉, ip는 네트워크에 접속하기 위한 공간의 주소이다. 여기서 공간은 서버pc의 하드디스크 주소다. 해당 위치는 ip로밖에 지정이 안 되기 때문에 네트워크에 접속하기 위해서는 반드시 ip주소를 할당받아야 한다.
컴퓨터가 처리할 수 있는 숫자로 된 인터넷 주소가 IP주소고 IP주소를 사람이 기억하기 쉽게 문자로 바꾼 인터넷 주소가 도메인이다.
결국 호스트는 네트워크에 연결되어 있고 IP를 가지고 있는 시스템을 의미한다. 네트워크에 연결되어 있다는 것은 쌍방향 통신이 가능하다는 의미이며, 시스템이기 때문에 운영체제와 상관없이 기본적으로 모두 가지고 있다.
클라이언트에게 호스트는 반드시 리퀘스트를 주기 때문에 호스트는 리퀘스트를 줄 수 있는 곳이 된다.
참고로 도메인은 영어 소문자, 숫자, 하이픈의 조합으로만 표현되어야 한다. 대문자/소문자 구별은 없지만 소문자로 쓰는 것이 약속이며 하이픈으로 시작하거나 끝날 수 없다. 당연하지만 고유한 값이어야 한다.
서버를 만든 후 네트워크에 띄워서 서비스하는 일련의 과정으로 ip와 서버를 연결하는 작업이다.
요즘엔 호스팅 업체가 많다. 서비스를 하려면 서버가 24시간 돌아야 하는데 로컬에서 하기엔 금액이나 물리적으로 한계가 있기 때문에 이를 대신해주는 업체들이 등장한 것이다. 그 예로 가비아, 후이즈, 카페24 등이 있다.
도메인은 루트를 제외한 3단계로 구성되어 있다.
표시 순서가 마지막(.com) → 첫번째(www)로 가기 때문에 자식 → 부모 관계로 가서 역트리구조를 띈다.
참고로 1단계 도메인의 분류값이 2단계 도메인이기 때문에 1단계 도메인과 2단계 도메인은 함께 쓰이지 않으며, 1단계 도메인은 반드시 분류값을 가지지 않는다.
루트 도메인(root, ".")
1단계 도메인(Top Level Domain, TLD) = 최상위 도메인
마지막에 쓰이는 도메인으로 www.google.com의 .com 쪽이다.
최상위 도메인은 인터넷에서 도메인명의 가장 마지막 부분을 말한다. 종류는 크게 3가지로 나뉜다.
1) 국가코드 최상위 도메인 (Country Code Top Level Domain, ccTLD)
국가/지역을 나타내는 도메인으로 기본적으로 해당 국가지역에 거주하는 단체 및 개인만이 취득할 수 있다.
현재 250여개의 도메인이 존재하며 한국에서 많이 사용하는 도메인은 다음과 같다.
kr - 한국 / jp - 일본 / cn - 중국 / in - 인도 / us - 미국
ca - 캐나다 / uk - 영국 / fr - 프랑스 / de - 독일 / it - 이탈리아
2) 일반 최상위 도메인 (Generic Top Level Domain, gTLD)
인터넷 초창기부터 사용된 도메인들이다. 전 세계 누구나 사용가능하다.
.com은 예전에 한 번 열풍이 있었어서 거의 포화상태일 정도로 많은 곳에서 사용 중이다.
edu - 미국 교육기관 / gov - 미국 정부기관 / mil - 미국 국방기관 / biz - 비즈니스
com - 영리기관 / org - 비영리 공공기관 / int - 국제기구 / net - 네트워크 관련기관
3) 신규 일반 최상위 도메인 (New Generic Top Level Domain, New gTLD)
일반 최상위 도메인의 수량적 한계로 만들어졌다. 현재 가장 활발하게 늘어나고 있다. 특징은 일반 최상위 도메인과 동일하다.
2단계 도메인(Second Level Domain, SLD) = 차상위 도메인
1단계 도메인에서 분류값이 필요할 때 사용한다.
예를 들어, 정부 사이트를 접속한다면,
1단계 도메인은 국가/지역을 구분하는 .kr이 될 것이고
2단계 도메인은 kr의 국가 내에서 존재하는 정부의 도메인 .go가 될 것이다.
3단계 도메인 (Domain Name, 도메인명)
도메인 가운데에 표시되는 이름이다. 해당 단계는 자율적으로 지정할 수 있다.
FQDN은 전체 도메인명을 의미한다. 사람들이 많이 알고 있는 FQDN은 www.google.com, www.daum.net 등이 있는데, 명확하게 말하자면 www는 호스트명이며 google.com, daum.net은 도메인명이다.
(도메인)네임서버라고도 불리며, 인터넷망 통신규약인 TCP/IP 네트워크 상에서 도메인을 IP로 바꿔주는 시스템 혹은 이런 역할을 하는 서버 컴퓨터를 의미한다.
옛날엔 내가 하는 컴퓨터 게임을 친구에게 주려면 디스켓에 게임을 넣어서 디스켓을 직접 전달해줬어야 했었다.
그러다 미국에서 컴퓨터망의 연동망이 생기면서 '네트워크'라는 개념이 생겼다. 서로의 주소를 알아야 데이터를 전달할 수 있으므로 개인pc는 서로의 식별값인 ip를 할당받게 되었으며, 이제는 컴퓨터 게임을 디스켓에 전달하지 않아도 인터넷으로 전달할 수 있게 된 것이다.
다만 초기에는 모든 사람들이 동일한 네트워크를 사용하지 못했다. 내부 네트워크에서 할당받은 ip끼리만 사용할 수 있었는데 이게 인트라넷이다.
인터넷은 인트라넷에서 역사가 시작되었으며, 폐쇄망이 커지면서 모두가 사용할 수 있게 된 것이다. 인터넷이라는 거대 개념이 생긴 후 인터넷과 다른 개념으로 불리기 위해 '인트라넷'이라는 인터넷과 비슷한 용어로 분류된 것이며 현재 인트라넷은 군대, 청와대, 북한 등 폐쇄적인 곳에서 사용 중이다.
인트라넷을 사용할 때에는 사용자pc에 할당받은 ip들을 다 저장했는데, ip를 할당받는 사용자가 몇백, 몇천으로 늘어나면서 저 정보를 pc에 다 저장하기 힘들어졌다.
그래서 나온 개념이 DNS다. DNS는 이전에 사용자 pc에서 저장하던 ip정보들을 저장하여 사용자에게 제공한다. 덕분에 사용자는 ip주소들을 저장하지 않고 도메인만으로도 다른 주소에 접속을 할 수 있게 되었다.
우리가 많은 사람들의 전화번호를 스마트폰 전화번호부에 이름으로 저장하는 것과 비슷하다. '통화' 버튼을 누르면 전화번호부는 이름에 매칭된 번호를 가져와서 상대방 전화번호로 연결해준다. 여기서 ip주소는 나와 상대방의 전화번호, 도메인은 서로의 전화번호에 저장된 단어, dns는 스마트폰의 전화번호부가 되겠다.
공용 DNS는 매일 수십억 개 이상의 요청을 처리한다. 누군가가 브라우저에 웹 주소를 입력할 때마다 세계 어느 곳에서든 해당 도메인 네임 서버가 요청(쿼리)를 받고, 해당하는 ip주소를 연결함으로써 요청한 웹사이트가 올바르게 연결되도록 해준다. DNS가 없으면 인터넷을 제대로 사용할 수 없으므로 매우 중요한 존재라 할 수 있다.
DNS 또한 루트 DNS를 가지고 있으며, 모르는 정보가 있다면 다른 DNS와 연계하여 정보를 공유한다.
인터넷에서 서로가 정보를 주고받을 때 원활한 통신이 가능하도록 만들어진 통신규약(Protocol)이다.
TCP와 IP라는 두 가지의 통신규약으로 이루어져 있다.
TCP (Transmission Control Protocol), 패킷교환방식
클라이언트와 서버가 신뢰성 있는 데이터를 전달할 수 있도록 만들어진 제어 프로토콜이다. 데이터는 네트워크 선로를 통해서 전달되는데 선로는 광케이블, 구리선, 인공위성 등 여러 가지가 될 수 있다. 어떤 선로냐에 따라 데이터 전달 속도가 달라지거나 손실이 발생할 수도 있고, 순서가 뒤바뀔 수 있다. TCP는 데이터의 손상과 순서를 확인하여 데이터를 재조합할 수 있다.
TCP는 패킷교환방식으로 데이터를 전송하는데 패킷에 일련번호를 부여하여 데이터를 인식한다.
패킷은 데이터의 전송 단위이며, 패킷교환은 데이터를 작은 블록의 패킷으로 보내주는 방법이다. 경로가 정해져 있지 않으며 데이터는 송신할 때 일정한 크기의 패킷으로 분해하여 전송된다. 그리고 수신할 때 원래대로 조립된다.
패킷은 교환될 때 여러 경로 중에 최적의 경로를 찾아서 송신되기 때문에 속도가 빠르며 현재 가장 많이 사용되고 있다.
IT 개발 동기는 거의 군사 목적으로부터 시작된다. 위급한 상황 속에서도 데이터를 주고 받아야 하고, 해당 데이터는 기밀사항이기 때문이다. 패킷교환방식도 마찬가지다.
원래는 군사 목적으로 만들어졌다. 패킷교환방식이 개발되기 전에는 회선교환방식으로 데이터를 주고 받았는데, 전쟁 시 회선이 끊기면 데이터를 받을 수 없었기 때문에 회선이 하나만 남아있어도 통신이 끊기지 않는 네트워크가 필요했다. 그렇게 패킷교환방식은 개발되었다.
IP (Internet Protocol)
기기 간 데이터를 전송하기 위해 필요한 각 기기의 인터넷 주소다. TCP와 달리 데이터의 재조합이나 손실여부 확인이 불가하며, 데이터를 전달하는 역할만 한다.
IP주소는 임시적으로 통신사에게 받는 주소라 변경될 수 있다. 하드웨어 고유 식별번호와 다르다(mac주소 등).
동시 접속을 대비하기 위해 사용하는 장비로, 여러 서버를 사용하는 경우 동시 접속이 진행되었을 때 로드밸런서가 사용자를 부하가 없는 서버로 유치하여 분산 처리를 해준다. 로드밸런서는 ip와 도메인 사이에 위치한다.
기초 개념은 아무리 공부해도 끝이 없는 것 같다. 배운 것을 잊지 않는 개발자가 되어야지 ㅠㅠ
문의, 지적 언제나 환영해요 :)