브라우저는 URL을 읽고, URL의 의미에 따라 리퀘스트 메시지를 만듭니다.
1. HTTP 리퀘스트 메시지를 만든다.
1-1. URL 입력
Uniform Resource Locator로 서버에 접근하기 위한 주소입니다.
- URL의 맨 앞에는 서버에 접근하는 방식인 프로토콜을 명시합니다.
- 서버의 도메인이나 액세스 하는 파일의 경로를 URL에 포함시킵니다.
1-2. 브라우저의 URL 해독
브라우저는 웹 서버에 메시지를 보내기 위해 URL을 해독합니다.
- (b)를 보면,
- www.lab.cyber.co.kr 도메인을 가지는 서버에 접속합니다.
- /dir/file1.html 경로의 파일에 접근합니다.
2-1. 파일명을 생략한 경우
(a) http://www.lab.cyber.co.kr/dir/
- 끝이 /로 끝나는 것은 /dir/ 다음의 파일명을 생략한 것입니다.
- 서버의 설정으로 파일명을 생략해도 default값을 채워줍니다. 보통
index.html
또는 default.htm
파일로 설정합니다.
2-1. http://ww.lab.cyber.co.kr/dir/index.html
2-2. http://ww.lab.cyber.co.kr/dir/default.html
(b) http://www.lab.cyber.co.kr
- / 까지 생략되었습니다.
- Root 경로의
index.html
또는 default.htm
파일에 접근할 것입니다.
(c) http://www.lab.cyber.co.kr/whatisthis
- whatisthis 파일이 있으면, 파일로 봅니다.
- whatisthis 파일이 없으면, 디렉토리명으로 봅니다.
1-3. HTTP 기본 개념
HTTP(Hyper Text Transfer Protocol)은 클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것입니다.
- 클라이언트는 서버에게
무엇을
, 어떻게
를 포함하여 리퀘스트 메시지를 보냅니다.
1-1. 어떻게 : 메소드로, 서버에게 어떤 동작(데이터에 접근할지, 데이터를 저장할지)을 하고싶은지 전달합니다.
1-2. 무엇을 : URI를 칭하며, 페이지 데이터를 저장한 파일의 이름을 말합니다.
- 서버는 메시지를 판단한 후 요구에 다라 동작하고, 결과 데이터를 응답 메시지에 저장합니다.
- 응답 메시지의 맨 앞 부분에는 실행 결과를 나타내는 status code가 있습니다.
1-4. HTTP 리퀘스트 메시지
HTTP 메시지는 포맷이 결정되어 있으므로, 브라우저는 포맷에 맞춰 리퀘스트 메시지를 만듭니다.
-
리퀘스트 라인
1-1. Method가 가장 중요합니다. 서버에게 어떤 동작을 취해달라고 요청하는 것입니다.
1-2. URI : 보통 파일이나 프로그램의 경로를 씁니다.
-
메시지 헤더
2-1. 날짜, 클라이언트 측이 취급하는 데이터의 종류, 언어 등 다수의 항목이 사양으로 정해져 있습니다.
- 메시지 본문
3-1. 메시지 헤더 뒤 공백 이후의 부분을 말합니다.
3-2. 보통 POST 메소드인 경우, 폼에 입력한 데이터 등을 메시지 본문 부분에 씁니다.
1-5. 응답이 되돌아온다.
리퀘스트의 실행 결과를 나타내는 status code와 응답 문구를 첫 번째 행에 씁니다.
1. status code : 실행 결과를 알려주는 것이 목적으로, 숫자로 나타냅니다.
2. 응답 문구 : 사람에게 실행 결과를 알리는 것이 목적입니다.
- 페이지가 문장으로만 되어 있으면 끝입니다.
- 영상 등이 포함되어 있는 경우, 문장 안에서 영상 파일을 나타내는
태그
를 탐색합니다.
- 태그를 만나면, 영상용 공백을 비워두고 문장을 표시합니다.
- 서버에 영상 파일을 달라고 다시 한 번 요청합니다.
- 비워 뒀던 공백에 표시합니다.
2. IP주소를 DNS서버에 조회
2-1. IP 주소의 기본
IP주소는 네트워크 번호와 호스트 번호를 합쳐 부르는 것이다.
브라우저는 HTTP 메시지를 네트워크에 송출하는 기능은 없으므로, OS에 의뢰하여 송신
하는데, 이 때 IP주소가 필요하다.
TCP/IP
- 인터넷이나 사내 LAN(Local Area Network)은 TCP/IP의 개념에 기초하여 만들어졌다.
- TCP/IP는 서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 만들어진다.
2-1. 서브넷 : 허브(패킷을 중계하는 장치)에 몇 대의 PC가 접속된 단위를 하나로 봄
- OO동 OO번지 처럼, 네트워크 번호(OO동)와 호스트 번호(OO번지)를 할당하고, 두 개를 합쳐 IP 주소라고 합니다.
- 송신측이 메시지를 보내면, 서브네 안에 있는 허브가 운반하고, 가장 가까운 라우터까지 도착한다.
- 라우터가 다음 라우터를 판단하고, 목적지까지 보내도록 송신 동작을 실행한다.
IP 주소
- IP주소의 규칙에는 네트워크 번호 + 호스트 번호 = 32비트로 한다는 것만 결정되어 있다.
- 네트워크를 구축할 때, 사용자가 직접 내역을 결정할 수 있다.
2-1. 이 내역을 나타내는 정보를 필요에 따라 IP주소에 덧붙이는데, 이 정보는 넷마스크
라고 합니다.
- 1인 부분은 네트워크 번호를 나타낸다.
- 0인 부분은 호스트 번호를 나타낸다.
- 호스트 번호 부분의 비트가 모두 0이면 서브넷 자체를 나타낸다.
- 호스트 번호 부분의 비트가 모두 1이면 서브넷에 있는 기기 전체에 패킷을 보내는 브로드캐스트를 나타낸다.
2-2. 도메인명 vs IP 주소
사람은 이름을 사용하고, 라우터는 IP 주소를 사용하는 것이 좋다.
- 전화번호를 모두 기억하기 어려운 것처럼 숫자를 나열한 IP 주소는 기억하기 어렵다.
- 도메인 명을 사용하여 통신한다면, 최대 255바이트가 필요하기 때문에 4바이트만 사용하는 IP주소보다 효율성이 떨어진다.
2-3. Socket 라이브러리로 IP 주소 찾기
IP 주소를 조사하는 것을 네임 리졸루션이라 하는데, 이 것을 실행하는 것이 DNS 리졸버 입니다.
(리졸버는 Socket 라이브러리에 포함되어 있습니다.)
- Socket 라이브러리는 네트워크의 기능을 호출하기 위한 OS에 포함된 것입니다.
2-4. 리졸버로 DNS 서버 조회
- 브라우저 등의 프로그램을 만들 때, 위와 같이 리졸버의 프로그래명만 써도 리졸버를 호출할 수 있다.
- 리졸버를 호출하면, 리졸버가 DNS서버에 조회 메시지를 보낸다.
- DNS서버의 응답에는 IP주소가 포함되어 있고, 브라우저에서 지정한 메모리 영역에 넣는다.
2-5. 리졸버 내부의 작동
리졸버도 네트워크 송/수신 기능이 없기 때문에 OS의 내부에 포함된 프로토콜 스택에 실행을 의뢰
한다.
- DNS 서버에 메시지를 송신할 때도 DNS 서버의 IP 주소가 필요합니다.
- DNS 서버의 IP는 TCP/IP 설정 항목의 하나하나로 컴퓨터에 미리 설정되어 있습니다.
3. 전 세계의 DNS서버가 연대한다.
3-1. DNS 서버의 기본 동작
클라이언트로부터 조회 메시지를 받고, 아래 3가지 정보를 포함하여 응답한다.
1. 이름
- 서버나 메일 배송 목적지와 같은 이름입니다.
2. 클래스
- DNS의 구조를 고안했을 때, 인터넷 이외에도 네트워크의 이용을 검토했기 때문에 클래스는 식별자 역할합니다.
- 현재는 인터넷 외에 네트워크는 소멸되어 클래스는 항상 IN(인터넷) 값 입니다.
3. 타입
- 이름에 어떤 종류의 정보가 지원되는지를 나타냅니다.
- A : IP 주소가 지원되는 것을 나타냄
- MX : 이름에 메일 배송 목적지가 지원되는 것을 나타냄
3-1. MX 타입의 경우, 복수의 메일 서버가 등록되어 있을 때, 우선 순위를 같이 등록해 놓음
- Etc : PTR(IP 주소에서 이름을 조사), CNAME(닉네임을 붙임), NS(DNS 서버의 IP 주소를 등록) 등
- 도메인은 .(dot)으로 계층을 구분합니다.
1-1. www.lab.cyber.co.kr : com아래 cyber —> lab —> www 계층을 가집니다.
- 계층으로 하위의 도메인을 담당하는 DNS 서버의 IP주소를 그 상위의 DNS 서버에 등록합니다.
- 최상위에는 Root 도메인이 있고, DNS를 찾기 위해 인터넷에 존재하는 DNS 서버에 전부 등록되어 있습니다.
- DNS 서버는 정보를 캐시하고 있습니다.
Reference