[JAVA 기초] 쉽게 알아보는 웹 애플리케이션

shooting star·2023년 6월 19일
1

JAVA 기초

목록 보기
3/5

HTTP란

서버와 클라이언트가 웹에서 데이터를 주고받기 위한 프로토콜이다. 즉, 서버와 클라이언트가 데이터를 주고받기 위해서는 HTTP라는 규약을 따라야 한다. HTTP를 통해서는 거의 모든 데이터를 주고받을 수 있다. 그리고 HTTP/1.1과 HTTP/2는 TCP 기반 위에서 동작하고, HTTP/3는 UDP 기반 위에서 동작을 하게 된다.

HTTP 요청/응답 메시지 구조


Request Line, Header, Blank line, Body를 요청하고 Status line, Header, Blank line, Body를 응답한다.

HTTP의 특징

HTTP의 특징은 다음과 같다.

  • 클라이언트-서버 모델 : 클라이언트-서버 모델 클라이언트가 서버에 요청을 보내면 서버는 클라이언트에게 응답을 보낸다는 의미이다.
  • 무상태 프로토콜(Stateless) 무상태 프로토콜 : 클라이언트가 서버에 요청을 보내면 서버는 클라이언트에 응답을 주고 바로 서버가 클라이언트의 상태를 유지하지 않도록 끊어버리는 것이다. 다음의 클라이언트가 서버에 요청을 할려면 다시 연결을 해야하여 응답을 받는것이다. 이는 비효율적이기 때문에 keep-Alive속성을 사용하여 특정 기간동안 클라이언트 서버가 연결을 계속 유지하면서 데이터를 주고 받는 것이다.
  • 비 연결성(Connectionless) : 서버가 클라이언트 요청에 대해 응답을 마치면 맺었던 연결을 끊어버리는 것이다. 해결책으로는 쿠키를 통해서 클라이언트에 정보를 저장하거나, 세션으로 서버에 정보를 저장하거나 JWT를 통해서 클라이언트 정보를 유지할 수 있다.

이러한 특징을 가지는 이유는 다음과 같다. HTTP는 기본적으로 웹상에서 불특정 다수와 통신이 가능하도록 설계되었다. 그렇기 때문에 다수의 클라이언트들의 상태를 계속 연결해야하면 리소스 낭비가 심해진다. 따라서 상태 혹은 연결을 유지하지 않는 대신에 더 많은 연결을 할 수 있도록 설계가 된 것이다.

Keep-Alive의 단점 : 잘 못 활용하면 성능이 하락된다. 왜냐하면 클라이언트의 요청이 많아지면 유지되는 클라이언트도 많아지게 되고 이로 인하여 신규사용자를 못 받을 수 있다. 웹 서버 스레드가 부족해지는 것이다.

기타

  • HTTP 요청 메소드 : GET, POST, PUT, DELETE
  • HTTP 응답 코드 : 2(성공), 3(리다이렉션), 4(클라이언트 에러), 5(서버 에러)
  • HTTP 헤더 : Content-type, Accept, Cookie, Set-Cookie, Authorization

0개의 댓글