HTTP

코딩덕·2023년 4월 27일

면접왕

목록 보기
4/13

HTTP

웹 브라우저와 서버가 데이터를 주고받는 프로토콜

HTTPS

HTTP인증과 암호화를 적용해 보안을 강화시킨 통신 규약

🔒 SSL/TLS

HTTP에 인증서와 암호화를 적용시켜 보안을 강화하게 만드는 기술

HTTPS = HTTP + TLS

SSL은 구버전이며, 현재는 보안이 강화된 TLS 사용



📌 HTTP 통신의 특징

✅ Stateless

서버가 클라이언트의 상태를 보존하지 않음

  • Client가 요청을 보낼 때마다 새로운 연결로 간주됨.
  • Server는 이전 요청을 기억하지 않으며, 요청마다 필요한 모든 정보를 포함해야 함.
  • 예를 들어 로그인 후, 페이지 이동 시 ServerClient가 로그인한 상태인지 자체적으로 기억하지 않음.

Stateless는 클라이언트와 서버간의 통신에 필요한 모든 상태 정보들을 클라이언트에서 가지고 있다가 서버와 통신할때 데이터를 실어 보내는 것이라고 했다.

그래서 서버는 단순히 받아서 응답만 해주기 때문에 서버에 대한 부하가 현저히 줄어든다.

하지만 로그인 유지와 같은 상태는 싫으나 좋으나 stateful한 상태를 사용하여야 하는데, 그러면 서버에 부하가 생긴다.

그래서 stateless 특징을 유지하면서도 로그인 상태 유지를 가능하게 하기 위해,
대부분의 웹 어플리케이션에서는 웹 스토리지, 쿠키, JWT 토큰을 사용한다.

토큰은 클라이언트가 암호화된 로그인 정보들을 지니고 있다가 서버에 통신할때 넘겨줌으로써 내가 로그인 됬음을 인증하는 방식이다.

따라서, 특별한 일이 없다면 stateless를 지향해야하며 정말 필요한 경우에만 stateful를 해야한다.

✅ Connectionless

한 번 통신이 이뤄지고 난 후에 연결이 바로 끊어짐

  • 클라이언트의 요청 & 서버의 응답 이후에는 연결을 종료한다.
  • 1시간동안 수천명이 서비스를 사용해도, 실제 서버에서의 동시 처리 요청은 매우 적다.
    따라서 서버 자원을 효율적으로 사용할 수 있다.



📌 HTTP 메서드

🔍 멱등성이란?

하나의 요청이 아닌 여러번 동일한 HTTP요청을 보냈을때 서버가 같은상태를 가지는것

  • 멱등성을 가지는 메서드 : GET PUT DELETE
  • 멱등성을 가지지 않는 메서드 : POST PATCH

1. GET

데이터를 가져올 때 사용

  • url을 기반으로 데이터를 요구!!!
  • 비밀번호 등 민감한 정보를 전달할 때 사용하지 않는다
  • 성공시 HTTP 상태코드 200을 반환
  • 브라우저기록에 남음
  • 길이 제한
  • 여러개의 동일한 GET요청을 하는것은 한번의 요청을 하는것과 같다.(멱등성 o)

2. POST

데이터를 생성할 때 사용

  • HTTP message body를 통해 데이터를 전달
  • 비밀번호 등 민감한 정보를 전달할 때 사용
  • 성공시 HTTP 상태코드 201, 200을 반환
  • 브라우저기록에 안남음
  • 길이 제한없음
  • 여러개의 동일한 POST요청은 여러 새로운 리소스를 생성한다.(멱등성 x)

3. PUT

업데이트하는 데이터의 전체를 보냄

{"a" : 1, "b" : 2}가 있을 때 b를 3으로 바꾼다고 했을 때 {"a" : 1,"b" : 3}으로 전체 데이터 전부를 보냄


4. PATCH

업데이트하는 데이터의 일부만 보냄

{"a" : 1, "b" : 2}가 있을 때 b를 3으로 바꾼다고 했을 때 {"b" : 3}만 보냄



📌 HTTP 상태코드

특정 HTTP 요청이 성공적으로 완료되었는지 알려주는 것


HTTP 상태코드종류

1. 100번대(정보)

서버가 요청을 잘 받았으며 해당 프로세스를 계속 이어가며 처리하는 것

2. 200번대(성공)

서버가 요청을 잘 받았고 이를 기반으로 클라이언트에게 성공적으로 데이터를 보낸 것

  • 200 OK : 요청 성공 (body에 데이터를 담아 보냄)
  • 201 Created : 요청 성공 + 새로운 리소스 생성
  • 204 no content : 요청 성공 (body에 보낼 데이터가 없음)

3. 300번대(리다이렉션)

서버가 클라이언트의 요청에 대해 완료를 위해 추가 작업 조치 필요

4. 400번대(클라이언트오류)

클라이언트가 요청한 페이지를 제공할 수 없거나 클라이언트의 요청이 잘못되어 결과적으로
요청을 처리할 수 없음

  • 400 Bad Request : 서버가 클라이언트 요청을 이해할수 없음
  • 401 Unauthorized : 클라이언트의 인증이 되지 않음
  • 404 Not Found : 요청받은 컨텐츠를 찾을 수 없음

5. 500번대(서버오류)

서버가 클라이언트의 요청을 처리하지 못하는 상태

  • 500 Internal Server Error : 서버에 오류 있음
  • 502 Bad Gateway : 게이트웨이 또는 프록시서버가 오류
  • 504 Gateway Timeout : 게이트웨이 또는 프록시서버가 정해진 Timeout 시간동안
    클라이언트의 요청을 처리하지 못함

0개의 댓글