본문 바로가기
Stg

HTTP

by 호랑2 2023. 4. 4.

HTTP 는 클라이언트와 서버간에 통신을 하는 프로토콜로 리퀘스트와 리스폰스를 교환하여 성립한다.

 

출처 : https://catsbi.oopy.io/1b703a8f-9b02-4443-a28f-8ef3e2223f13

 

아래는 클라이언트 측으로부터 서버에 송신된 리퀘스트의 예시이다.

GET /members/100 HTTP /1.1
Host : localhost:8080

GET 은 서버에 요구하는 메소드의 종류를 의미하며, /members/100 은 리소스를 의미한다. (이 리소스를 리퀘스트 URI 라고 한다.)

그리고 HTTP 1.1 은 클라이언트 기능을 식별하기 위한 HTTP 버전 번호이다.

즉, 여기서의 리퀘스트 내용은 HTTP 서버상에 있는 "/members/100" 이라는 리소스가 필요하다는 리퀘스트이다.

 

이러한 리퀘스트를 받은 서버는 리퀘스트의 내용을 처리한 결과를 리스폰스로 클라이언트에 되돌려 준다.

 

HTTP /1.1 200 OK
Content-Type: application/json
Content-Length: 34

{
    "username" : "young"
    "age" : 20
}

HTTP /1.1 은 서버의 HTTP 버전을 나타내며, 200 OK 는 리퀘스트의 처리 결과를 나타내는 상태 코드와 설명이다.

다음 줄은 리스폰스의 스펙을 나타내고 있는데, 이 부분은 헤더 필드라고 한다.

헤더에 이어서 아래 부분에 본격적인 리소스가 전달되는 부분은 바디라고 한다.

 

HTTP 는 스테이트리스 (stateless) 프로토콜으로, 리퀘스트와 리스폰스를 교환하는 동안에 상태를 관리하지 않는다.

따라서 이전에 보낸 리퀘스트나 이미 응답한 리스폰스에 대해서는 전혀 기억하지 않는 구조이다.

이는 많은 데이터를 빠르고 확실하게 처리하는 범위성 (scalability) 를 확보하기 위해 간단하게 설계되었기 때문이다.

 

그러나 웹이 진화함에 따라 스테이트리스 특성만으로는 처리하기 어려운 일이 증가하게 되었다.

예를 들어, 웹사이트에 로그인 했을 경우 다른 페이지로 이동하더라도 로그인 상태를 유지해야 하는 필요가 생긴 것이다.

이러한 상태를 유지하기 위해 쿠키와 세션이라는 기술을 도입하게 된다.

 

 

'Stg' 카테고리의 다른 글

Persistent connection / Stateless  (0) 2023.04.06
HTTP 메소드  (0) 2023.04.05
URI 와 URL  (0) 2023.04.01
IP / TCP / DNS  (0) 2023.03.30
TCP/IP  (0) 2023.03.28

댓글