HTTP_2. Message

Seoyong Lee·2021년 5월 21일
0
post-thumbnail

HTTP 메시지는 ASCII로 인코딩된 텍스트 정보로, 서버와 클라이언트 간의 데이터 교환 방식이다. 앞에서 살펴본 것과 같이 메시지는 두 가지 유형으로 나누어진다.

  • 요청(Requests): 클라이언트가 서버로 전달해서 서버의 동작을 발생시키는 메시지
  • 응답(Responses): 요청에 대한 서버의 응답 메시지

HTTP 요청의 구조

클라이언트는 먼저 다음과 같은 메시지를 통해 서버의 동작을 발생시킨다.

  1. start-line(요청): HTTP 메소드를 이용하여 실행되어야 할 요청을 나타낸다. HTTP 메소드에 대해선 아래에서 다시 정리하였다.
  • 형태: HTTP 메소드 / 요청 대상 / HTTP 버전
  • 예시: POST / HTTP / 1.1
  1. HTTP headers: HTTP 요청 그 자체에 대한 정보를 담고 있다.
  • Host : 요청이 전송되는 target의 호스트 URL 주소
  • User-Agent : 요청을 보내는 클라이언트의 정보 ex 웹 브라우저의 정보
  • Accept: 서버에서 받길 원하는 데이터 타입(MIME)
  • Connection: 해당 요청이 끝난 후 클라이언트와 서버 간의 연결을 계속 유지할 것인지를 알려줌 (keep-alive / close)
  • Content-Type: HTTP 요청이 보내는 메시지 body 타입을 알려줌
  • Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보
  1. empty line: 헤더와 본문을 구분하며, 요청에 대한 모든 메타 정보가 전송되었음을 알려준다.

  2. body: HTTP 요청이 전송하는 데이터를 담고 있는 부분으로, 전송하는 데이터가 없다면 body 부분은 비어있다.

HTTP 응답의 구조

  1. status line(응답): 응답의 상태를 나타내며 상태 코드와 함께 간단한 텍스트를 보여준다. 상태 코드는 아래에서 다시 정리하였다.
    형태: HTTP 버전 / 상태 코드 / 상태 텍스트
    예시: HTTP 1.1 / 404 / Not Found.

  2. HTTP headers: 요청과 동일하나 User-Agent 대신 Server 헤더가 사용된다.

  3. empty line: 요청과 동일하다.

  4. body: 요청과 동일하다.

HTTP 메소드

HTTP 메소드는 클라이언트가 서버에 요청을 보낼 때 주어진 리소스에 대해 수행하길 원하는 행동으로, 다음과 같은 종류로 나누어진다.

이름의미
GET서버로부터 정보 조회
HEADGET과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않으며, 응답코드와 HEAD에만 응답
POST요청된 자원을 생성(CREATE)하며, 클라이언트에서 서버로 전달하고자 하는 정보를 서버로 보냄
PUT요청된 자원을 수정(REPLACE)한다
DELETE요청된 자원을 삭제할 것을 요청(안전성 문제로 대부분의 서버에서 비활성)
CONNECT동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용
OPTIONS웹서버에서 지원되는 메소드의 종류를 확인할 경우 사용
TRACE원격지 서버에 루프백 메시지 호출을 위한 테스트용으로 사용
PATCHPUT과 유사하게 요청된 자원을 수정(MODIFY)할 때 사용(일부 교체)

HTTP 상태 코드

HTTP 상태 코드는 클라이언트의 요청이 성공적으로 완료되었는지 알려주며, 크게 5개의 그룹으로 나누어진다.

응답대역응답코드의미
정보제공100Continue (클라이언트로부터 일부 요청을 받았으며 나머지 정보 계속 요청)
101Switching protocols
성공200OK(요청이 성공적으로 수행되었음
201Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨)
202Accepted(웹 서버가 명령 수신함)
203Non-authoritative information (클라이언트 요구 중 일부만 전송)
204No content (요청에 대해 전송할 데이터가 없는 경우)
리다이렉션301Moved permanently ( 요청한 리소스의 URI가 변경된 경우)
302Not temporarily
304Not modified (컴퓨터 로컬의 캐시 정보 이용)
클라이언트에러400Bad Request (사용자의 잘못된 요청을 처리할 수 없음)
401Unauthorized (인증이 필요한 페이지를 요청한 경우)
402Payment required(예약됨)
403Forbidden (접근 금지, 관리자 페이지 접근 등 차단)
404Not found, (요청한 페이지 없음)
405Method not allowed (허용 되지 않는 http method 사용함)
407Proxy authentication required (프락시 인증 요구됨)
408Request timeout (요청 시간 초과)
410Gone (영구적으로 사용 금지)
412Precondition failed (전체 조건 실패)
414Request-URI too long (요청 URL 길이가 긴 경우임)
서버에러500Internal server error (내부 서버 오류)
501Not implemented (웹 서버가 처리할 수 없음)
503Service unnailable (서비스 제공 불가)
504Gateway timeout (게이트웨이 시간 초과)
505HTTP version not supported (해당 http 버전 지원되지 않음)

더 알아볼 내용

  • GET과 POST의 차이

MDN - HTTP 메시지
HTTP 요청-응답 메시지 구조 request-response
자바공작소 - HTTP 응답코드 메소드 정리

profile
코드를 디자인하다

0개의 댓글