브라우저에 URL을 입력하면 생기는 일
- 브라우저에 HTTP Request 메세지를 입력한다.
- 메세지를 OS에 의뢰하여 웹서버에 전송한다.
이때, 메세지를 넘기는 상대의 IP 주소를 OS에 통지해야 한다.
브라우저는 URL의 도메인명을 DNS 서버에 조회하여 IP주소를 조사한다.
- 전 세계의 DNS 서버가 연대하여 조회 요청을 받은 도메인명에 대한 IP주소를 조사한다.
- 프로토콜 스택에 메세지 송신을 의뢰한다.
URL이란
- 브라우저는 웹 서버 엑세스 뿐만이 아니라 파일을 업로드, 다운로드 하는 FTP의 클라이언트 기능이나 메일의 기능도 가지고 있기 때문에 어떠한 기능에 엑세스할 지 판단하기 위해 여러 종류의 URL이 준비되어 있다.
- URL의 맨 앞 부분에서 액세스 방법을 나타낸다. http, ftp 등의 프로토콜 종류가 맨 앞에 온다.
URL의 구성 요소
- 브라우저가 가장 먼저 하는일은 URL을 해독하는 것
- 프로토콜 종류 + // + 데이터 출처의 경로명
- 경로명의 경우 ‘/’로 끝나는 것은 파일명이 생략된 것이다. 파일명을 생략하면 액세스할 파일을 미리 서버측에 설정해 둔다. 보통 index.html, default.html에 엑세스한다.
HTTP의 기본 개념
- 서버와 클라이언트가 주고받는 메세지 내용이나 순서를 정한 규약
Request
- 클라이언트가 서버로 보내는 요청메세지
- Method와 URI로 구성되어 있다.
- URI는 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명 등의 액세스 대상을 통칭하는 말
- Method는 어떤 동작을 하고 싶은지 전달하는 것
Response
- 클라이언트의 요청에 대한 서버의 응답
- Status Code를 통해 동작의 결과를 안내한다.
Request와 Response의 구조
- request의 start line에는 method가, response의 start line에는 status code가 있다.
- headers에는 한 행에 하나의 헤더 필드를 사용한다.
- request의 body에는 클라이언트에서 서버에 송신하는 데이터가 들어간다.
response의 body에는 서버에서 클라이언트로 송신하는 데이터가 들어간다. 이진데이터로 취급된다.
IP 주소의 기본
TCP/IP는 서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 만들어진다. 서브넷은 허브에 몇대의 PC가 접속한 것이라고 봐도 좋다.
- 액세스 대상의 서버까지 운반하기 위해 IP 주소에 따라 서브넷 안의 허브가 가까운 라우터로 운반하는 과정을 반복한다.
도메인명과 IP 주소를 둘다 사용하는 이유
- Url로 ip주소 대신 도메인 명을 사용하는 이유는 기억하기 용이하기 때문이다.
- 그럼에도 문자열이 ip주소 대신 사용되지 않는 이유는 ip주소는 4 byte의 데이터만 취급하면 되지만 문자열은 255 byte까지 문자를 취급해야 하기 때문이다.
- 위의 이유로 도메인 명과 IP주소를 매핑하여 사용하는데 이 원리가 DNS이다.
IP 주소를 조사하는 방법
- DNS 리졸버가 DNS 서버에 조회 메세지를 보내고 응답메세지를 받는 방식으로 조사한다.
- DNS 리졸버는 Socket 라이브러리에 들어있는 부품화한 프로그램이다.
도메인명에서 IP 주소를 조사할 때 브라우저는 Socket 라이브러리의 리졸버를 이용한다.
- 애플리케이션이 도메인명을 건네며 IP 주소를 요청한다.
- 리졸버는 이를 받아들고 프로토콜 스택을 호출하여 DNS서버로 도메인 명을 송신한다.
- 프로토콜 스택이 응답을 리졸버에게 건네고 리졸버는 이를 해독하여 IP 주소를 추출하여 다시 애플리케이션에게 건넨다.
DNS 서버의 기본 동작
DNS 서버가 주고받는 조회 메세지의 구성
- 이름
- 클래스
- 인터넷 이외의 네트워크 이용을 식별하기 위한 클래스 정보, 현재는 인터넷 이외의 네트워크는 소멸하여 항상 ‘IN’이라는 값
- 타입
- 이름에 어떤 타입의 정보가 지원되는지를 나타낸다. A타입이면 이름에 IP주소가 지원되는 것을 나타내며, MX면 이름에 메일 배송 목적지가 지원된다는 것을 나타낸다.
예시
A타입의 이름을 조회하면 해당 이름에 해당하는 IP 주소를 반환한다.
만약 MX타입의 이름을 조회하면 메일서버의 우선 순위와 @뒤의 메일 서버 목적지의 IP 주소를 반환한다.
도메인 계층
- 인터넷에는 막대한 수의 서버가 있어 1대의 DNS 서버에 등록하는 것은 불가능하다.
- 이를 해결하기 위해 정보를 분산시키고 DNS 서버를 연대하여 정보를 찾아낸다.
www.cyber.co.kr
-> kr은 한국에 할당, co는 국내 도메인을 분류하기 위한 도메인, cyber는 회사, www는 서버의 이름
DNS가 서버에 등록한 정보를 찾아내는 방법
- 계층에 따라 DNS 서버의 IP 주소를 상위 DNS 서버에 등록한다.
- 가장 가까운 DNS 서버부터 정보를 조회하면서 상위 DNS 서버로 이동한다. 루트 도메인에서부터는 아래로 내려가면서 조회한다.
- 상위와 하위 도메인이 같은 DNS 서버에 등록되는 경우도 있다.
- 한번 조사한 이름을 캐싱하여 기록할 수 있다.
- 그 위치에서 바로 아래로 거슬러 내려가면서 조사할 수 있다.
- 도메인이 미등록된 경우도 캐시에 보존하여 빠른 응답을 할 수 있다.
- 캐싱한 이후 정보가 변경되면 올바르지 않은 회답을 할 수 있다.
참고자료
- 1%의 네트워크 원리(Tsutomu Tone)