[네트워크] HTTP의 메서드와 속성 및 GET, POST 비교

Yanagi·2022년 4월 18일
0

네트워크

목록 보기
1/1

HTTP 메서드란?

  • HTTP 메소드는 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단이다.

HTTP 메서드의 종류

  1. GET : 리소스 조회
  2. POST : 요청 데이터 처리, 주로 데이터 등록에 사용
  3. PUT : 리소스를 대체, 해당 리소스가 없으면 생성
  4. PATCH : 리소스를 일부만 변경(수정)
  5. DELETE : 리소스 삭제

HTTP 메서드 중, GET과 POST를 제대로 구분하는 것이 포인트이다.

GET

우선 GET 방식은 요청하는 데이터가 HTTP Request MessageHeader 부분에 url 이 담겨서 전송된다. 때문에 url 상에 ? 뒤에 데이터가 붙어 request 를 보내게 되는 것이다. 이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다. 또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url 에 노출되므로 GET방식은 적절하지 않다. (ex. password)

HTTP Request Message, Response Message

HTTP 메세지에는 두 종류가 있다. Request Message와 Reponse Message이다. 브라우저에 URL을 입력하면 HTTP 표준에 따라 URL을 요청 메시지로 변환하고 TCP/IP를 사용하여 인터넷을 통해 요청을 보낸다. 웹 서버는 요청을 수신하고 클라이언트가 요청한 웹 페이지를 반환한다.

HTTP 요청 메세지

  • 서버가 요청 메시지를 수신하면 다음 중 하나가 발생한다.
  1. 요청을 문서 디렉토리 아래의 파일에 매핑하고 파일을 브라우저에 반환한다.
  2. 요청을 내부 프로그램에 매핑한 다음 프로그램을 실행하고, 프로그램의 출력을 클라이언트에 반환한다.
  3. 요청이 충족되지 않으면 오류 메시지를 반환한다.

요청 메시지는 크게 요청 라인(Request Line), 요청 헤더(Request Headers), 공백 라인(A blank line), 요청 바디(Requset Message Body)로 나뉜다.

요청 메세지: 라 / 헤 / (공) / 바
① 요청 인: HTTP Method, Web page, HTTP version
② 요청 더: Host, Accept, User-Agent, Cokie, Referer
Host: 클라이언트가 요청한 도메인 정보
Accept: 웹 서버로부터 수신되는 데이터 중 웹 브라우저가 처리할 수 있는 데이터의 형식 정의
User-Agent: 사용자 웹 브라우저 종류 및 버전 정보
Cookie: 클라이언트 로컬에 저장되는 key-value쌍의 데이터 파일
Referer: 경유한 웹 사이트에 대한 정보
③ 공백 라인: 요청 헤더와 요청 바디를 구분하는 라인
④ 요청 디: 클라이언트가 서버에 실제 요청한 내용

HTTP 응답 메세지

  • 브라우저는 응답 메시지를 수신하고 해석한 후에 브라우저 창에 메시지 내용을 표시한다.

응답 메시지는 크게 상태 라인(Status Line), 응답 헤더(Response Headers), 공백 라인(A blank line), 응답 바디(Requset Message Body)로 나뉜다.

응답 메세지: 라 / 헤 / 바
① 상태 인: HTTP Version, Status Code
② 응답 더: Date, Server, Content-Type, Last-Modified
③ 응답 디: 실제 응답받은 메시지(데이터)

POST

POST 방식의 request 는 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다. 때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야 하는 것처럼 데이터 크기가 GET 방식보다 크고 보안면에서 낫다.(하지만 보안적인 측면에서는 암호화를 하지 않는 이상 고만고만하다.)

GET과 POST의 특성 차이

  1. GET 은 값을 가져오는 것이기 때문에 값이나 상태를 변경하지 않지만(MySQL의 SELECT와 유사), POST는 값이나 상태를 변경하거나 추가하기 위해서 사용
  2. GET 방식의 요청은 브라우저에서 Caching이 가능하다. GET 방식으로 요청한다면 기존에 caching 되었던 데이터가 응답될 가능성이 존재한다.

Caching 이란?

  • 캐싱이란 저장한다는 뜻이다. 컴퓨팅에서 캐싱이란 오랜시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 필요로 회피하는 기법을 의미한다.

캐싱의 대표적인 사례

  1. 시험을 볼 때 원리를 이해하고 문제를 푸는 것이 아니라, 덤프를 외워서 답안을 작성한다.
  2. 웹브라우저는 한번 다운로드 한 이미지 파일은 임시저장 디렉토리에 저장했다가 다음 요청이 있을 때 다운로드 하지 않고 다운받아 둔 이미지를 사용한다.
  3. 웹페이지를 탐색할 때 도메인을 이용하면 내부적으로는 그 도메인에 해당하는 IP를 알아내기 위해서 네임서버에 접속을 한다. 이 때 네임서버가 알려준 IP 주소를 운영체제나 브라우저는 그 결과를 기억하고 있다가 동일 도메인에 대한 접근 시에 저장된 IP 주소를 사용한다.
  4. CPU는 연산의 결과를 빠르게 저장하기 위해서 메인 메모리 보다 빠른 캐쉬 메모리를 사용해서 빠르게 작업을 처리한다.

HTTP 메서드의 속성

  • 크게 세 가지가 있다.
  1. 안전(Safe Methods)
  2. 멱등(Idempotent Methods)
  3. 캐시가능(Cacheable Methods)

자세한 내용은 필자가 이전에 포스트 했던 웹 HTTP 지식 (1편) 게시물 4.4 번부터 확인하면 된다.

profile
<'쟤'보단 내가 낫지> 에서 '쟤'를 담당하고 있습니다.

0개의 댓글