HTTP (Hyper-Text Transfer Protocol)
하이퍼텍스트 문서를 교환하기 위하여 사용된 통신 규약이다.
즉, 웹 서버와 클라이언트가 통신을 하기 위하여 사용하는 통신 규약이다. HTTP는 웹에서만 사용하는 프로토콜로 TCP/IP 기반으로 한 지점에서 다른 지점으로 요청과 응답을 전송한다. (TCP/IP는 다음에 알아 볼 것!!)
HTTP의 특징
- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해서 해석이 된다.
- TCP/IP를 이용하는 응용 포로토콜이다.
- Stateless : HTTP의 각 요청은 모두 독립적이다.
- Connectionless : 한번의 요청에 한번의 응답을 한다.
HTTP 통신은 요청과 응답으로 이루어진다. (request / response)
클라이언트가 서버에 요청을 보내면 서버는 이 요청을 받아 맞는 결과를 찾아 클라이언트에게 응답을 주는 형태로 동작한다.
항상 요청과 응답으로 이루어지기 때문에 서버는 요청을 받으면 무조건 응답을 해줘야한다. 요청에 맞는 결과가 없다고 응답이 없으면 에러가 난다!! (맞는 결과가 없다는 응답을 보내줘야 한다!!)
HTTP는 stateless와 connectionless의 속성을 갖기 때문에 매 요청은 독립적이고 응답 이후에는 연결이 끊기기 때문에 한번의 요청의 한번의 응답만 해야한다 (두번의 응답 혹은 응답이 아예 없는 경우는 안됨!!) -> 이 점을 보완하기 위해 cookie와 session 사용??
HTTP의 구성
HTTP의 요청과 응답으로 나누어서 HTTP 메시지를 살펴보겠다.
HTTP 메시지는 시작줄, 헤더, 본문으로 구성되어 있다.
HTTP 요청 메시지의 시작줄은 HTTP 메소드, 주소, HTTP 버전 정보가 나와있다.
그 다음 시작줄 밑으로는 헤더(header)인데 헤더는 요청에 대한 정보를 담고 있다.
이 헤더에는 이 요청이 어디에서 보내는 요청인가(origin), 컨텐츠 타입은 무엇인가(content-type), 어떤 클라이언트를 이용해서 보냈는가(user-agent) 등의 요청에 대한 정보를 담고 있다.
본문(body)에는 요청할 때 담기는 데이터가 담겨있는 곳으로 HTTP 메소드에 따라 body가 없을 수도 있다.
(위의 예시는 GET 요청으로 body가 별도로 없다)
HTTP 응답 메시지도 마찬가지로 시작줄, 헤더, 본문으로 구성되어 있다.
먼저 시작줄을 살펴보면 시작줄은 HTTP의 버전, 상태코드, 상태메시지로 구성되어있다.
그 다음 헤더에는 요청에서와 마찬가지로 응답에 대한 정보를 담고 있다.
헤더는 요청과 응답에 공통으로 쓰이는 헤더가 있고, 응답에만 따로 쓰이는 헤더도 있다. 이 헤더의 종류에 대해서는 http 메소드, 상태코드/상태메시지와 함께 별도로 정리할 예정이다.
본문에는 요청과 마찬가지로 응답으로 보낼 데이터가 담겨 있다.
'HTTP' 카테고리의 다른 글
(191222) Headers (0) | 2019.12.22 |
---|---|
(191215) CORS (0) | 2019.12.15 |
(191215) AJAX (0) | 2019.12.15 |
(191208) HTTP Method, Status code (0) | 2019.12.08 |
댓글