HTTP(HyperText Transfer Protocol)은 텍스트 기반의 통신규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다.
HTTP는 무상태 프로토콜이며, 이것은 서버가 두 요청간에 어떠한 데이터를 유지하지 않는다는 뜻이다.
계속 연결되어 있는 것이 아니다.
규칙을 미리 정해두어서 모든 프로그램이 이 규약에 맞춰 개발을 하고 서로 정보를 교환할 수 있다.
HTTP는 HTML문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
프로토콜은 2대 이상의 컴퓨터 혹은 중앙 컴퓨터와 다나말기 사이에서 데이터 통신을 원활하게 하기 위한 통신 규약이다.
위처럼 하나의 문서는 다시 텍스트, 레이아웃, 이미지, 비디오, 스크립트 등 불러온 하위 문서들로 재구성된다.
클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다.
보통 브라우저(클라이언트)에 의해 전송되는 메시지를 요청(requests)라고 부른다.
그에 대하여 서버에서 응답으로 전송되는 메시지를 응답(response)라고 부른다.
정리해보면
위에서는 HTML문서로 예를 들었지만, Plain text에서 JSON 데이터 및 XML과 같은 형태로도 정보를 주고 받을수 있다.
보통은 클라이언트가 어떤 정보를 HTML형태로 받을지, JSON형태로 받을지를 명시해주는 경우가 많다.
HTTP는 클라이언트-서버 프로토콜이다.
요청은 하나의 개체, 사용자 에이전트에 의해 전송된다.
각각의 요청들은 서버로 보내지며, 서버는 그 요청을 처리하고 response라고 하는 응답을 제공한다.
이 request와 response 사이에는 여러 개체들이 있는데 예를들어 다양한 작업을 수행하는 게이트웨이 혹은 캐시 역할을 하는 프록시 등이 있다.
실제로는 브라우저와 요청을 처리하는 서버사이에 좀 더 많은 컴퓨터들이 존재한다.
라우터, 모뎀등이 있지만 웹의 계층적인 설계 덕분에 이것들이 네트워크와 전송 계층 내에 숨겨진다고 한다.
클라이언트가 서버에게 연락하는 것을 request라고 하며, 요청을 보낼 때는 요청에 대한 정보를 담아 서버로 보낸다.
GET https://velog.io/@ragi HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0l Win64; x64) ...
Upgrade-Insecure-Requests: 1
이런 식으로 사용한다.
서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 응답이라고 한다.
상태 코드에는 많은 종류가 있다. 모두 세 자리 숫자이며 크게 5가지로 분류한다.
https://developer.mozilla.org/ko/docs/Web/HTTP
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://milkye.tistory.com/202