1.1 HTTP: 인터넷의 멀티미디어 배달부
on HTTP
- HTTP(Hypertext Transfer Protocol)는 현대 인터넷의 공용어로, 전 세계의 웹브라우저, 서버, 웹 애플리케이션은 모두 HTTP를 통해 대화
- 신뢰성 있는 데이터 전송 프로토콜을 사용해 개발자가 인터넷의 결합이나 약점에 대한 걱정 없이 기능 구현 가능
1.2 웹 클라이언트와 서버
웹 서버는 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다. 그림1.1에 그려진 대로, 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP응답으로 돌려준다. 예를들어 “http://info.cern.ch/index.html” 페이지를 열어볼 때, 웹 브라우저는 HTTP요청을 http://info.cern.ch 서버로 보낸다. 서버는 요청받은 객체(이 경우 “/index.html”)를 찾고 성공했다면 그것의 타입, 길이 등의 정보와 함께 HTTP 응답에 실어서 클라이언트에게 보낸다
1.3 리소스
- 웹 서버는 웹 리소스를 관리하고 제공하며, 웹 리소스는 웹 콘텐츠의 원천
- 웹 리소스는 정적 리소스(ex. 텍스트 파일, HTML 파일, JPEG 이미지 등)와 동적리소스(ex. 웹 게이트웨이, 인터넷 검색엔진 등)가 존재
1.3.1 미디어 타입
- 인터넷은 수천 가지 데이터 타입을 다루기 때문에, HTTP는 웹에서 전송되는 객체 각각에 MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장) 타입이라는 데이터 포맷 라벨을 붙임
- 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인
- MIME 타입은 사선(/)으로 구분된 주 타입(primary object type)과 부 타입(specific subtype)으로 이루어진 문자열 라벨
HTML로 작성된 텍스트 문서는 text/html
JPEG 이미지는 image/jpeg
GIF 이미지는 image/gif
마이크로소프트 파워포인트 프레젠테이션은 application/vnd.ms-powerpoint
1.3.2 URI
- 웹 서버 리소스 이름은 통합 자원 식별자, 혹은 URI(uniform resource identifier)로 불림
- URI에는 URL, URN이라는 두 가지 자원 식별자가 존재
1.3.3 URL
- 통합 자원 지시자(uniform resource locator, URL)는 특정 서버의 한 시소스에 대한 구체적인 위치를 서술
- 대부분의 URL은 세 부분으로 이루어진 표준 포맷을 따름
URL의 첫 번째 부분 스킴(scheme)은 리소스에 접근하기 위해 사용되는 프로토콜을 서술 - 보통 HTTP 프로토콜(http://)
두 번째 부분은 서버의 인터넷 주소를 제공(예: www.taeho0304.github.io)
마지막 부분은 웹 서버의 리소스를 서술 (예: /assets/img/HTTP/1_1.jpeg)
- 오늘날 대부분의 URI는 URL
1.3.4 URN
- 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할
- 리소스를 여기저기 옮기거나 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제없이 동작
- 라소스 위치를 분석하기 위한 인프라의 부재로 채택이 늦춰지는 중
1.4 트랜잭션
- HTTP 트랜잭션은 요청 명령과 응답 결과로 구성
1.4.1. 메서드
- HTTP는 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원
HTTP 요청 메시지는 한 개의 메서드를 가짐
HTTP 메서드 설명 GET 서버에서 클라이언트로 지정한 리소스를 보내라 PUT 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라 DELETE 지정한 리소스를 서버에서 삭제하라 POST 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라 HEAD 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 모내라
1.4.2 상태코드
- 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 세 자리 숫자
모든 HTTP 응답 메시지는 상태 코드와 함께 반환
HTTP 상태 코드 설명 200 성공. 문서가 바르게 반환됨 302 요청한 리소스의 URL이 일시적으로 변경됨 404 리소스를 찾을 수 없음 405 요청 방식이 잘못됨 (ex. GET, POST) 500 서버 에러