HTTP는 프로토콜 이다.
HTTP는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이다.
클라이언트가 전송하는 메시지는 요청(Request) 이다.
서버가 그에 대한 응답으로 보내는 메시지는 응답(Response) 이다.
Application 계층의 프로토콜이다.
신뢰 가능한 Transport 프로토콜이라면 이론상 무엇이든 사용 가능하다. (TCP)
인터넷 Application 계층, Transport 계층이 어색하다면 인터넷 5계층을 검색하자.
클라이언트 를 번역하자면, 고객이다. 고객은 요청만 할 뿐, 응답하지 않는다.
클라이언트는 요청 후, 응답을 받고, 필요한 리소스가 추가로 확인되면 또 요청을 하고, 응답을 받고 한다. 클라이언트는 필요한 리소스가 모두 모였다고 확인되면, 웹 페이지를 만들어 사용자에게 보여준다.
서버를 번역하자면, Serve를 하는 사람. Serve는 제공하다, 일하다, 복역하다(!)라는 뜻이다. 나를 위해 일해주는 사람. 정도가 되겠다.
서버는 여러 기계들로 이루어지는 경우가 많다. 하지만 추상화하게 되면, 결국 하나의 기계로 추상화할 수 있다. 클라이언트의 요청을 응답해주는 기계.
프록시 를 번역하자면, 대신, 대리 등의 뜻을 가진다. 대리로 메시지를 받고, 전달해주는 것을 생각하면 되겠다. (우체국 정도 생각하면 되려나?)
실제로는 브라우저(클라이언트)와 서버 사이에서 많은 컴퓨터, 기계가 메시지를 이어 받고, 전달해준다. 이는 HTTP 계층에서 어떻게 동작하는지 보이지 않지만, 성능에는 영향을 끼친다.
프록시를 통해 메시지가 변경되거나, 변경되지 않을 수 있으며, 프록시를 통해 다양한 기능을 수행 할 수 있다.
캐싱, 필터링, 로드 밸런싱, 인증, 로깅(logging)
GET
,POST
같은 동사나, OPTIONS
,HEAD
와 같은 명사이다.http://
, 도메인developer.mozilla.org
, TCP 포트80
를 제거한, 리소스의 경로를 표시한다.POST
같은 Method를 위한, 서버에게 보내는 내용.정보
1xx
: 요청을 받았으며, 클라이언트에게 무엇을 해야 하는지 알려준다.
성공2xx
: 요청이 성공적이었으며, 서버에 인식되었다는 정보.
리다이렉션3xx
: 요청 완료를 위해 추가적인 작업을 해야하므로 다른 곳으로 보냄.
클라이언트 오류4xx
: 요청이 유효하지 않거나, 처리할 수 없음.
서버 오류5xx
: 서버가 유효한 요청을 받았으나, 충족이 불가능 함.