HTTP 개요
- HTTP는 서버와 클라이언트가 통신하기 위한 프로토콜이다.
- ASCII로 인코딩된 텍스트로 데이터를 교환한다.
- 교환하는 데이터를
HTTP Message
라고 한다
- 목적에 따라 요청은
HTTP Request
, 응답은 HTTP Response
로 나눌 수 있다.
- 구조에 따라
start line
, HTTP Header
와 HTTP Body
로 나눌 수 있다.
Start line
{HTTP Method} {URL} {HTTP_Version}
{HTTP_Version} {status_code} {msg}
HTTP Method
GET
, PUT
, POST
, HEAD
등 행동을 정의한다.
URL
- 요청을 수행할 목적지의 리소스를 의미한다.
- ASCII로 인코딩된 텍스트 데이터이므로 ASCII가 아닌 유니코드 같은 경우 escape처리를 하도록 설계가 되어있다.
- 한글을 url에 입력하는 경우
%E8%20%7...
등 이스케이프 처리가 된다.
- 스킴
- 사용할 프로토콜을 의미
- http나 https를 사용한다
- Host
- 리소스를 가지고 있는 컴퓨터의 위치, 도메인 이름
- Path
- Query String
?id=8&page=7
과 같은 형태로 주어진다
- 동적 리소스를 식별하는 값으로 자주 사용
- fragment
#URL
등 가르키고 있는 HTML요소를 보여주도록 함
- 현재 url에
#URL
을 끝에 추가하면 현재 문단으로 스크롤링 된 상태가 됨
HTTP version
status code
- Response에서 Request에 대한 응답으로 성공 혹은 상태 변화 상태, 실패 상태 등을 전달
- Client나 서버에 대한 신상 정보라고 할 수 있다. (다른 나라를 여행하기 위한 여권, 비자라고 이해하는 것이 편하다.)
- 접속 프로그램 정보, 허용하는 컨텐츠 타입, 사용하는 언어, 허용하는 압축 알고리즘, 세션정보, HTTP Body의 컨텐츠 타입, length등을 저장한다.
- 보안, 인증, 주고받는 데이터 타입을 식별하는데 쓰인다.
HTTP Body