HTTP란?
HTTP란 Hypter Text Protocol의 약자로
서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜이다.
여기서 프로토콜이라는 것은 약속이다.
데이터 통신에서 프로토콜은 내가 어떻게 보내고 니가 어떻게 받는다 라는 약속이다.
HTTP는 이미지, 동영상, 오디오, 문서 등 어떤 종류의 데이터도 전송할 수 있다.
문서화된 최초의 HTTP 버전은 0.9이고 현재 2.0까지 나와있다.
하지만 가장 널리 쓰이고있는 것은 1.1 버전이다.
HTTP 작동 방식
HTTP는 서버/클라이언트 모델을 사용한다.
클라이언트가 서버에게 요청을 보내고 서버는 클라이언트에게 응답을 보내는 방식이다.
클라이언트란 요청을 보내는 쪽을 의미하며 웹 관점에서는 브라우저를 의미한다.
서버란 요청을 받는 쪽을 의미하며 데이터를 보내주는 컴퓨터를 의미한다.
또한 HTTP는 무상태(stateless) 프로토콜을 따른다.
상태가 없다는 것은 각각의 데이터 요청이 관련이 없어서
클라이언트가 요청을 보내고 서버가 응답을 보내고나면 바로 서버와 클라이언트의 연결이 끊어진다.
이렇게 함으로써 얻어지는 장점은 무엇일까?
클라이언트-서버간의 연결이 지속되는 것이 아니기 때문에
많은 요청과 응답을 처리할 수 있다.
단점은 연결이 끊어져 클라이언트의 이전 상황을 알 수 없다.
이 문제점을 해결하기 위해 Cookie같은 기술이 등장했다.
HTTP 자세한 동작 방식
- 클라이언트가 원하는 서버에 접속한다.
- 클라이언트가 서버에 요청한다.
- 요청은 정해진 규칙에 따른다.
- 요청 메시지는 크게 헤더 부분, 빈 줄 부분, 요청 바디 부분으로 나누어진다.
- 헤더 부분에 첫번째 줄에는 요청 메서드(GET, POST, PUT…)와 자원의 위치인 요청 URI 그리고 HTTP 프로토콜 버전이 나온다.
- 헤더의 두번째 줄부터는 여러 헤더 정보가 나온다.
- 바디 부분에는 요청 메서드가 POST나 PUT일 때의 내용이 들어온다.
- 서버는 클라이언트에게 응답을 보낸다.
- 요청과 똑같은 3부분으로 나뉜다.
- 헤더의 첫번째 줄에는 응답 HTTP의 프로토콜 버전, 응답코드, 응답 메시지가 있다.
- 헤더의 나머지 부분에는 날짜, 웹 서버 이름과 버전 등의 정보가 나온다.
- 바디 부분에 나오는 것이 실제 응답 리소스 데이터이다.
- 요청과 똑같은 3부분으로 나뉜다.
- 클라이언트와 서버와의 연결이 끊어진다.
URL이란?
Uniform Resource Locator의 약자로
인터넷 상의 자원의 위치나
특정 웹 서버의 파일에 접근하기 위한 경로/주소이다.