-
[Web]웹의 탄생과 HTTP에서 요청문(request)과 응답문(response)을 알아보자.웹/기본 2016. 12. 13. 15:06
웹과 인터넷
- 홈 페이지 = 웹 사이트 = 웹 애플리케이션 = 웹 앱
- 웹은 최근 20년 동안 빠르게 발전하고 있다. 그만큼 다양한 기술들이 나왔으며, 하나의 웹 앱에도 여러 기술을 복합적으로 적용한다. 이처럼 현대의 웹 기술은 매우 복잡하며, 한눈에 이해하기 힘들다.
웹을 이해하기 위해서는 서버와 클라이언트의 관계를 알아야 한다.
- 서버란? 클라이언트란?
- 웹 브라우저 프로그램이 설치된 컴퓨터는 클라이언트이고, 웹 서버 프로그램이 설치된 컴퓨터는 서버이다.
- 웹 서버란?
- 웹 서버는 클라이언트의 요청에 대해 데이터를 찾고 응답해주는 프로그램이다. 웹 서버 제품으로는 Apache (http web server), IIS, nginx 등이 있다.
웹의 역사
Q. 인터넷과 웹은 다를까?
A. 인터넷이 도로면 웹은 그 도로를 달리는 자동차이다.
- 인터넷이 OS라면 웹은 하나의 소프트웨어이다. 즉 웹은 인터넷에 포함되는 개념이다.
Q. 인터넷과 웹은 언제 탄생했을까?
A. 인터넷 탄생 '60, 웹의 탄생 '90
- 60년대 인터넷은 군사 시설과 연구 시설에서만 사용되던 엘리트 도구였다. 인터넷은 군사 시설에서 시작된 프로젝트이다. 중앙집중식이었던 서버 구조에 한계를 느껴, 분산 형태로 통신을 시도했는데 그것이 바로 인터넷이 되었다.
Q. 웹이 최초로 탄생한 국가는?
A. 스위스
- 스위스 CERN(유럽입자물리연구소)이라는 큰 연구소가 있다. 그 연구소에는 LHC(강입자 가속기)가 있는데, LHC는 둘레의 길이가 27km에 달하고, 전자석으로 이뤄져 있다. 전자석으로 가속시킨 소립자를 서로 충돌하게 하여 어떤 일이 일어나는지 연구한다. CERN은 1980년대 정보 홍수 속에서 살았다. 웹은 전 세계의 대학과 연구소에서 온 과학자들 간의 정보 공유 자동화를 위해 고안되고 개발되었다. CERN이 HTML과 world wide web의 발상지이다.
- 컴퓨터를 줄곧 연구하던 팀 버너스-리(Tim Berners-Lee)가 CERN에 취직을 하게 된다. 버너스-리가 출퇴근하며 10년동안 조금씩 enquire를 개발하고 1990년10월 웹 페이지 편집기(HTML)를 만들었다. 그리고 웹 브라우저(최초의 웹 브라우저인 world wide web), 서버와 클라이언트가 서로 통신할 때 사용하는 규약(HTTP), 인터넷에 접속하는 주소(URL) 모두 팀 버너스-리가 만들었다.
- 그렇게 60년대부터 천천히 발전하던 인터넷이 90년에 웹을 만나면서 인터넷과 웹이 폭발적으로 성장했고 대중화되었다.
- 물리 저장장치의 용량에서 '테라' 단위를 넘기게 된 것은 CERN의 공이었다.
왜 HTTP를 알아야 하는가?
- 웹 사이트의 근간을 이루는 HTTP
- HTTP를 잘 모르면 웹 애플리케이션 개발이 어려운 커다란 요인 중 하나가 될 수 있다.
- 웹 애플리케이션 프레임워크를 이용하면 HTTP통신에 대해 자세히 몰라도 어느 정도 웹 애플리케이션을 만들 수 있으나, 개발한 애플리케이션이 의도대로 작동하지 않을 때 무엇이 원인인지 전혀 알 수 없다.
서버와 클라이언트
- 클라이언트는 요청(Request)하고, 서버는 응답(Response)한다.
- Request는 클라이언트가 원하는 것을 요구하기 위해 서버에게 보내는 요청문이다.
- Response는 서버가 클라이언트가 요청한 것에 대한 결과를 클라이언트에게 보내는 응답문이다.
telnet으로 요청 보내고 응답 받기
Request - 요청문 들여다 보기
- 요청라인
- 메서드 GET
- 요청의 종류를 나타낸다.
- URI에서 지정한 정보를 보내달라(GET)는 의미가 된다.
- HTTP 버전
- 버전에 따라 이용할 수 있는 메서드의 종류와 요청헤더의 종류가 달라지므로 어떤 버전에 따른 요청인지 지정한다.
- 메시지 헤더
- 필드 이름 : 필드 값으로 명시되어 있다.
- Accept
- 클라이언트가 받을 수 있는 데이터의 종류를 표시한다.
- 서버가 Accept 필드를 확인하면 불필요한 정보를 송신하지 않아도 된다.
- Accept-Language
- 클라이언트가 받을 수 있는 자연 언어 종류를 표시한다.
- 콘텐츠의 영어판, 한국어판이 있다면 이 헤더에 따라 클라이언트가 사용하는 언어에 맞는 콘텐츠를 보낼 수 있다.
- User-Agent
- 클라이언트가 이용중인 웹 브라우저의 종류와 버전을 표시한다.
- client의 종류에 맞춰 최적의 콘텐츠를 돌려주는데 사용한다.
- 이 필드를 확인하여 핸드폰에서 접속한 경우 핸드폰용 HTTP를 돌려준다.
- 어떤 브라우저를 사용하고 있는지 통계를 내는데 이용되기도 한다.
- Host
- 요청을 보낸 곳의 호스트명과 포트 번호를 지정합니다.
Response - 응답문 들여다 보기
- 상태라인
상태코드
의미
200
정상
401
인증되지 않음
403
제공하지 않는 데이터
404
페이지를 찾을 수 없음
500
요청 처리 시 발생한 오류
301
URL 변경됨
- 메시지 본문
- 이 예제에서는 HTML파일을 요청했으므로 HTML파일의 내용이 그대로 들어있다. 웹 브라우저는 이 HTML을 해석하여 화면에 표시한다.
- 만약 jpeg형식의 이미지파일을 요청했을 경우, 그 데이터가 메시지 본문에 그대로 들어간다. 데이터는 바이너리 형식이므로 의미를 알 수 없는 문자열로 보이게 된다.
기억하기
- HTTP에서는 한 번에 리소스 하나를 취득한다.
- HTTP에서는 한번의 요청에 한 리소스밖에 취득하지 못하므로, 이미지가 많이 들어있는 페이지에서는 이미지의 수만큼 HTTP 요청이 발생한다.
- 파일명 생략했을 경우의 요청
- 웹사이트의 URL에서 파일명이 생략되어 있다. 웹 서버의 설정에 따라 기본 문서 파일(index.html 등)을 돌려준다.
- URL이 짧아져 기억하기가 쉽다.
세계 최초의 월드 와이드 웹?!
'웹 > 기본' 카테고리의 다른 글
Module, Library, Framework, SDK, API 간단 용어 정리 (0) 2016.11.11 Framework와 Library의 차이점은 누가 누구를 호출(call)하느냐이다 (0) 2016.11.11 API, HTTP, REST, AJAX, JSON, AJIT 간단 용어 정리 (0) 2016.11.10