컴퓨터를 해봤다면, 인터넷을 이용해봤다면 누구나 한번쯤은 해봤을 것.
바로 주소창에 주소를 쳐서 사이트간의 이동을 하는것이다. 아무래도 우리에게 제일 익숙한 사이트는
네이버겠지, 그냥 이유없이 네이버를 시작페이지로 하지 않으면 뭔가 어색하고. 뭔가 네이버에서 찾는 정보가
가장 정확할거 같은 느낌이었달까..?
아무튼 그렇다. 우리는 사용자로써 브라우저를 이용할땐 단순히 사이트의 이동이란 결과만이 필요했기 때문에
주소를 치면 사이트가 나오는것이 당연했고, 그 이유에 대해선 생각해보지 않았을것이다.
하지만 이제 우리는 개발자가 되기 위해 코딩을 공부하고 컴퓨터 공학을 공부하다 보니 이런 곳에서 의문이
생기기 시작한다. 주소를 치면 어떻게 사이트가 뜨는건지 말이다. 그 의문에 대한 답을 해볼까 한다.
그 답은 하나의 여행기처럼 써볼까 한다. 브라우저에 주소를 입력하고 해당 사이트의 정보를 받기까지의 과정은
마치 여행같으니 말이다. 시작해보자.
일단 가장먼저 할일은 주소창에 주소를 입력하는것이다. 네이버로 가고싶다면 www.naver.com 을,
구글로 이동하고 싶다면 www.google.com 을 입력해야된다. 이것을 우리는 URL 이라고 한다.
이 URL을 이용하여 서버에 요청을 할것이다.
URL 을 입력했다고 해서 그것으로 서버에 요청을 할 수 있는것이 아니다. 우리가 작성했던 www.naver.com
이란것은 사용자가 쉽게 인지할 수 있게 변환해준것 뿐. 이 문자열만으로는 아무것도 되지 않는다. 하지만
이 DNS에게서 이 문자열이 가지고 있는 IP 주소를 얻을 수 있다. DNS 는 각 사이트가 가지고 있는 고유의
IP 주소를 도메인 이름으로 대체해주는 역할을 한다. 그 반대의 경우도 가능하기때문에 우리는 HTTP 로 가기전
DNS에 들려 해당 도메인 주소를 IP 주소로 변환시켜 그것을 가지고 HTTP로 향할것이다.
DNS 내부의 서버도 단계가 있다. 간략하게 설명하면 각 단계마다 종류가 있고, 내가 가지고 있는 도메인이
각 단계의 어느부분에 있는지를 물어물어 찾아가게 된다. 그렇게 찾아낸 IP주소를 가지고 나오게 된다.
한번 찾아낸 IP라면 캐시에 저장되어있으니 다음번에 오게 된다면 조금은 수월하게 찾아 나올 수 있을것이다.
이제 우리는 IP 주소를 획득했으니, 이 IP 주소에 해당하는 페이지를 넘겨달라고 서버에 요청을 할 수 있다.
TCP 통신을 통해서 IP 주소에 해당하는 서버에 요청을 하는것이다. 그럼 해당 서버는 요청을 받을것이고
서버는 요청 메세지를 읽은 후, 요청에 맞는 데이터를 다시 전송해 줄것이다. 우리가 HTTP 형식으로 요청을
했으니, 서버도 HTTP 형식으로 응답을 보내준다.
응답이 정상적으로 왔다면 요청한 데이터가 200코드와 함께 body 에 함께 실려왔을것이다, 오류가 났다면
오류코드가 왔을것이고, 아무튼 정상적으로 데이터가 들어왔다면 우린 해당 IP주소의 데이터를 받아온것이다.
우리가 받은것은 UI가 완성된 데이터가 아니라 HTML 문서이다. 그렇다는것은 이 문서를 읽고 출력을 해야한다
는것, 받아온 HTML 문서를 파싱하여 DOM 트리를 구축한다음, CSS 또한 파싱하여 오브젝트 모델을 만든 후
렌더트리를 형성한다. 그리고 그 렌더트리를 이용해서 각각의 노드들이 위치를 지정하는 레이아웃 과정을 거쳐
최종적으로 브라우저 화면에 출력하게 된다.
이것이 우리가 주소창에 도메인 주소를 치면 일어나는 현상들이다.
매우 간략하게 정리한 내용이니 이것을 바탕으로 하나씩 딥하게 들어가며 공부하면 좋을것이다.