<
HTTP 상태와 요청
>
🌠다음 포스팅🌠

Parallel Operation
☄이전 포스팅☄

객체지향 쿼리 JPQL
HTTP 상태와 요청

HTTP 상태 및 요청

상태(status)

모든 HTTP 응답 코드는 5개의 클래스(분류) 로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다.


1xx(정보)

요청을 받았으며 작업을 계속한다.[1]

이 상태의 상태 코드는 상태-라인과 선택적 헤더(컴퓨터에서 출력될 때 각 페이지 맨 윗부분에 자동으로 붙는 부분)만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해서 종결된다. HTTP/1.0이래로 어떤 1XX 상태 코드들도 정의 되지 않았다. 서버들은 1XX 응답을 실험적인 상태를 제외하고 HTTP/1.0 클라이언트(서버에 연결된 컴퓨터)로 보내면 안 된다.


2xx(성공)

이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.


3xx(리다이렉션)

클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.[1]


4xx(클라이언트오류)

4xx 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.


5xx(서버오류)

서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.[1]


요청(request)

1. GET

GET 우선 GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 url 이 담겨서 전송된다. 요청 데이터는 url상에 ? 뒤로 함축되어 보내진다.

ex.

https://www.google.com/search ?요청 데이터

이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다. 또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url 에 노출되므로 개인정보를 요청하는 경우의 GET방식은 적절하지 않다.

2. POST

POST 방식의 request 는 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다. 때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야 하는 것처럼 데이터 크기가 GET 방식보다 크고 보안면에서 노출되지 않는다.

GET vs POST

우선 GET 은 조회를 목적으로 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이며 반대로 서버의 값이나 상태 등을 변경하지 않는다. 반면에 POST 는 서버의 값이나 상태를 변경하기 위해서 또는 추가하기 위해서 사용된다.

부수적인 차이점을 좀 더 살펴보자면 GET 방식의 요청은 브라우저에서 Caching 할 수 있다. 때문에 POST 방식으로 요청해야 할 것을 보내는 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면 기존에 caching 되었던 데이터가 응답될 가능성이 존재한다.

구분 기능 저장 위치 캐싱(CACHING)
GET 조회 Header 적용됨
POST 상태 값 변경 Body 미적용

HTTP vs HTTPS

HTTP의 문제점

보안 개선된 HTTPS

HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 HTTPS

HTTPS는 SSL 의 껍질을 덮어쓴 HTTP이다. 즉, HTTPS 는 새로운 애플리케이션 계층의 프로토콜이 아닌 보안적 기능이 추가된 프로토콜 이다. HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 프로토콜로 대체하는 것이다. HTTP 는 원래 TCP 와 직접 통신했지만, HTTP 는 SSL 과 통신하고 SSL 이 TCP 와 통신 하게 된다. SSL 을 사용한 HTTPS 는 암호화와 증명서, 안전성 보호를 이용할 수 있게 된다.

HTTPS 의 SSL 에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 공통키를 공개키 암호화 방식으로 교환한 다음에 다음부터의 통신은 공통키 암호를 사용하는 방식이다.

HTTPS의 속도 저하

초기 HTTPS의 사용은 암호와 통신에 의해 데이터 교환을 요청하는 과정에서 많은 리소스(CPU 및 Memory)를 소비하여 서버 한 대당 처리가 가능한 리퀘스트가 증가하여 속도의 저하가 발생했다. 그러나 현재는 HW의 발달로 속도저하는 확인하기 힘들며 새로 개정된 표준 HTTP 2.0 을 함께 이용한다면 HTTPS의 속도가 더욱 향상하는 것을 확인 할 수 있다.

Reference

!HTTP 상태 코드 !GET vs POST

Top
Foot