본문 바로가기
✨ Back-end/Servlet

HTTP 프로토콜의 특징

by 환풍 2023. 8. 8.
728x90

 

HTTP란?

 TCP / IP를 기반으로 한 지점에서 다른 지점으로 요청과 응답을 전송하는 프로토콜

Hyper Text Transfer Protocol로, TCP / IP 4계층에서 애플리케이션 계층에 해당하는 프로토콜로써, 전송계층에서 TCP를 사용하여 웹 브라우저와 웹 서버 간에 통신하는 프로토콜이다.

HTTP는 비연결형과 무상태로 동작하는 프로토콜이라서 이전 연결 때의 상태정보를 서버가 유지해주지 않는다. 그러므로 상태정보를 일정 시간동안 지속해서 유지해주는 기술이 필요하다.

 

특징

  • 상태가 없는(stateless) 프로토콜. 즉, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리
  • 비 연결성 ( Connectionless )
  • 클라이언트 - 서버 구조
무상태 ( Stateless )

 HTTP 통신에서 서버는 클라이언트의 상태를 저장하지 않는다.

 

무연결 ( Connectionless )

 HTTP 통신은 연결(Connection)을 유지하지 않는 것을 기본 동작으로 가진다.

 

이전 요청에서 처리된 정보를 계속해서 사용하고 싶다면 반드시 클라이언트나 서버에 저장해서 유지해야한다.

이처럼 클라이언트나 서버에 계속된 요청에서 사용할 수 있도록 저장한 정보를 상태정보(State Information)이라고 한다.

 

클라이언트 - 서버 , 요청과 응답 (Request, Response)

 HTTP 통신은 클라이언트에서 서버에 요청을 하는 단방향 통신이다.

서버는 클라이언트에 응답(response)만 하고, 클라이언트는 서버에게 요청(request)을 한다.

Http 요청정보는 크게 헤더와 몸체로 구성되며 헤더의 가장 첫번째 줄은 요청 줄로서 3개의 정보가 들어간다.

첫 번째 정보는 요청방식, 두 번째 정보는 요청한 페이지에 대한 정보인 URI, 세 번째 정보는 요청 시 사용한 HTTP 버전정보

자주쓰는 2가지 GET 과 POST

GET : 일부, 파라미터, 제한적, 처리속도 빠름

POST : 전부 , 프로토콜의 바디, 처리속도 느림

그 외에 PUT, DELETE 등이 있다.


클라이언트 - 서버 측에 저장된 정보들은 지속적으로 유지되는 것이 아니라 기간이 한정되어 있다.

정보가 저장되어 유지되는 기간을 기준으로 상태정보 유지 기술을 분류하면 아래와 같다.

 

https://bright-landscape.tistory.com/314

 

[JSP] 기본객체(Page, Request, Session, Application), 서블릿 스코프(Scope)

PAGE 영역 하나의 JSP 페이지를 처리할 때 사용되는 영역 한번의 요청을 처리. 하나의 JSP 페이지 내에서 공유될 값을 저장한다. 페이지 내에서 지역변수처럼 사용된다. REQUEST 영역 하나의 HTTP 요청

bright-landscape.tistory.com

 

웹 애플리케이션

웹 애플리케이션이 서비스되고 있는 동안 유지하는 것

생명주기가 웹 애플리케이션과 같은 객체는 ServletContext이다. 

이 객체는 웹 애플리케이션 서비스가 시작될 때 생성되고 종료될 때 소멸한다. 

따라서 ServletContext 객체에 상태정보를 저장하면 웹 애플리케이션이 서비스되고 있는 동안 계속 사용 가능하다.

 

클라이언트

클라이언트별로 구분해서 상태정보를 유지

A 클라이언트가 계속 사용하는 상태정보가 있는데, 이 상태정보를 다른 클라이언트는 사용할 수 없어야 할 때 클라이언트 단위로 유지해야한다. 대표적인게 로그인.

HttpSession 객체를 통해 클라이언트 단위로 상태정보 유지 가능.

 

요청

클라이언트의 서비스 요청 단위로 유지

웹에서 클라이언트로부터 요청이 있을 때마다 새로운 연결 작업이 이뤄지며, 클라이언트로 응답이 이루어지면 연결은 바로 해제된다. 클라이언트로부터 요청이 들어오고 응답이 나가기까지가 하나의 요청이다.

이렇게 하나의 요청에서만 상태정보를 유지하고자 할 때 HttpServletRequest 객체 사용

반응형

댓글