본문 바로가기

책 공부/성공과 실패를 결정하는 1%의 네트워크 원리

브라우저에서 URL을 입력하면 무슨일이 생길가?

반응형

브라우저에서 URL을 입력하면 무슨 일이 생길까?

 

URL이란?

URL은 Protocol, Domain, path, webpage로 구성되어 있는데 이를 하나씩 살펴보자 (실제로 생략되어 있는 부분이 더 있다.)

  • Protocol - URL의 가장 맨 앞에 위치하며, 데이터 출처에 액세스 하는 방법을 나타낸다. (프로토콜을 기록)
  • Domain - 웹 서버명으로 DNS에서 서버명으로 검색 후 IP주소를 반환받는다.
  • Path - 데이터 출처(파일)의 경로를 나타낸다. 

HTTP 프로토콜

클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것, 클라이언트에서 서버를 향해 리퀘스트 메시지를 보낼 때 메시지 안에 무엇을, 어떻게 하겠다는 내용이 들어있다. 

 

HTTP 리퀘스트 메시지

URL을 해독하고 웹 서버와 파일명을 판단하면 브라우저는 이것을 바탕으로 HTTP의 리퀘스트 메시지를 만든다. 리퀘스트 메시지의 첫 번째 행에 있는 리퀘스트 라인을 쓰는데, 이 행에서 중요한 것은 맨 앞에 있는 메서드이다. 이것을 통해 웹 브라우저는 웹 서버에 어떤 동작을 요청하는지를 전달한다.  (GET, POST, PATCH, PUT, DELETE) 

 

리퀘스트 메시지를 보낸 후 서버로부터 응답이 돌아온다.

응답의 경우 정상 종류 or 오류가 발생했는지를 알려주는데, 실행 결과를 나타내는 스테이터스 코드와 응답 문구를 첫 번째 행에 써야 한다. 이 둘은 내용이 같지만 용도가 다르다. 

  • 스테이터스 코드 : 숫자로 쓴 것이며, 프로그램 등에 실행 결과를 알려주는 것이 목적
  • 응답 문구 : 문장으로 쓰여있으며 사람에게 실행 결과를 알리는 목적

응답 메시지가 돌아온 후, 그때부터 테이터를 추출한 후 화면에 표시하여 웹 페이지를 눈으로 볼 수 있다.

 

URL에서 도메인명을 기준으로 DNS 서버에 해당 도메인명의 IP주소를 반환받는다.

 

DNS란?

Domain Name System, 서버명과 IP주소를 대응시키기 위해 사용한다. 

 

클라이언트가 DNS 서버에 IP주소를 요청할 때 이름(www.naver.com), 클래스(IN), 타입(A)을 보낸다. 그럼 DNS 서버는 등록된 정보 중 일치하는 데이터를 찾아 IP주소를 클라이언트에게 반환해 준다.

 

DNS 서버에서 등록된 정보를 찾아내는 방식은 크게 두 가지로 나눠진다.

 

Recursive Query vs Iterative Query

 

Recursive Query

Local DNS server에 해당 도메인명에 대응하는 IP주소를 찾지 못할 경우 Root DNS server에서부터 시작하여 아래로 점점 내려가는 방식이다.

 

Iterative Query

Local DNS server에 해당 도메인에 대응하는 IP주소를 찾지 못할 경우 Root DNS server에서부터 찾고 다음 정보를 가지고 있는 DNS server를 알려준다 그럼 다시 Local DNS server가 해당 DNS server에 해당 IP가 존재하는지를 물어보는 방식이다.

 

그럼 도메인명과 IP주소를 구분하여 사용하는 이유는?

IP주소만을 입력하여 서버에 접속할 수 있지만 우리가 전화번호를 기억하기 어려운 것과 마찬가지로 숫자를 나열한 IP주소는 기억하기 어렵기 때문에 URL 안에는 IP주소가 아니라 서버의 이름을 쓸 수 있도록 하는 것이다. 반대로 IP주소를 사용하지 않고 도메인명으로만 사용해도 괜찮지 않나?라는 생각을 할 수 있는데 실행 효율이라는 관점에서 좋은 방법이라고 볼 수 없다. 인터넷 내부에 여러 규칙이 존재하고 이 규칙을 연대하여 IP주소에 의해 목적지가 어디인지를 판단하고 데이터를 전송하는데, IP주소 대신 이름을 사용한다면 문제가 발생할 수 있다.

IP주소는 32비트, 4바이트로 구성되어 있지만 도메인명으로 변경한다면 이런 규칙이 없어지고 255바이트까지의 문자를 취급해야 한다. 4바이트에서 255바이트로 증가한 만큼 라우터에 부하가 더 걸리고 데이터를 전송하는 동작에서 더 많은 시간을 잡아먹을 것이고 이는 결국 네트워크 속도가 느려진다는 뜻이어서 IP주소를 사용하는 이유이다.

 

 

 

 

 

반응형