alpyrithm_알파이리즘

HTTP 프로토콜 및 상태 코드 정리 본문

SM공부

HTTP 프로토콜 및 상태 코드 정리

알파이 2020. 9. 4. 15:12

 

HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)

- 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.

- 클라이언트(브라우저 - 웹 관점)와 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜이다.

- 무상태 프로토콜로 트랜젝션(독집적인 요청-응답) 발생 후 연결이 종료된다.

- 기본 포트는 80번이다.

 

 

 

HTTP 요청 메시지

클라이언트가 서버에게 보내는 요청 메시지 구성

  • 요청 내용
  • 헤더
  • 빈 줄(empty line)
  • 기타 메시지

 

 

HTTP 요청 메서드

REST : 주소를 자원이라고 보고 메서드를 동사라고 보는 개방 방식이다.

 

주요 메서드

  • GET : 존재하는 자원에 대한 요청/조회
    • Body(본문) X
  • POST : 새로운 자원을 생성
    • Body(본문) O
  • PUT/PATCH : 존재하는 자원에 대한 전체/부분 변경
    • Body(본문) O
  • DELETE : 존재하는 자원에 대한 삭제
    • Body(본문) X

 

기타 메서드

  • HEAD : 서버 헤더 정보를 획득. GET과 비슷하나 Response Body를 반환하지 않음
    • Body(본문) X
  • OPTIONS : 서버 옵션들을 확인하기 위한 요청. CORS에서 사용
    • Body(본문) 선택 사항

 

 

 

 

HTTP 응답 메시지

응답 메시지 구성

  • 상태 표시 행(status line)
    • 상태 코드(status code)
    • reason message
  • 응답 헤더 필드
  • 빈 줄(empty line)
  • 기타 메시지

 

 

 

 

HTTP 상태 코드(HTTP Status Code)

  • 서버에서 설정해주는 응답(Response) 정보이다.
  • 세 자리 수로 된 응답 코드이다.
  • HTTP 요청이 성공적으로 완료되었는지 알려준다.
  • 정보 제공 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 서버 에러

 

 

  1XX(조건부 응답)

Informational(정보). 정보 교환

요청을 받았으며 작업을 계속함

 

100

  • continue(계속)
  • 요청자는 요청을 계속해야 함
  • 클라이언트로부터 일부 요청을 받았으니 나머지 요청 정보를 계속 보내주길 바람

101

  • Switching Protocols(프로토콜 전환)
  • 서버는 클라이언트의 요청대로 Upgrade 헤더를 따라 다른 프로토콜로 바꿀 것임
  • 요청자가 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중

102

  • Processing(처리)
  • 사용자가 수신 요청을 하여 처리하고 있지만 아직 제대로 된 응답을 할 수 없는 상태

103

  • Early Hints
  • Link 헤더와 함께 사용되어 서버가 응답을 준비하는 동안 사용자 에이전트가(user agent) 사전 로딩(preloading)을 시작할 수 있도로 함

 

 

 

  2XX(성공)

Success(성공). 데이터 전송이 성공적으로 이루어졌거나, 이해되었거나, 수락되었음

 

200

  • OK(성공)
    • GET : 리소스를 불러와서 메시지 바디에 전송됨
    • HEAD : 개체 헤더가 메시지 바디에 있음
    • PUT or POST : 수행 결과에 대한 리소스가 메시지 바디에 전송됨
    • TRACE : 메시지 바디는 서버에서 수신한 요청 메시지를 포함함
  • 오류 없이 전송 성공
  • 서버가 요청을 제대로 처리함
  • 요청한 페이지를 서버가 제공했음

201

  • Created(작성됨)
  • 성공적으로 요청되었으며 서버가 새 리소스를 작성함
  • 일반적으로 POST, PUT 이후에 따라옴

202

  • Accepted(허용됨)
  • 서버가 클라이언트의 요청을 수락함
  • 서버가 요청을 접수했지만 아직 처리하지 않음

203

  • Non-authoritavive Information(신뢰할 수 없는 정보)
  • 서버가 클라이언트 요구 중 일부만 전송
  • 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있음

204

  • Non Content(콘텐츠 없음)
  • 클라이언트 요구를 처리했으나 전송할 데이터가 없음
  • 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음

205

  • Reset Content(콘텐츠 재설정)
  • 새 문서 없음, 브라우저는 문서 창을 리셋해야 함
  • 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음
  • 204 응답과 달리 요청자가 문서 보기를 재설정할 것을 요구함

206

  • Partial Content(일부 콘텐츠)
  • 클라이언트가 Range 헤더와 함께 요청의 일부분을 보냈고 서버는 이를 수행함
  • 서버가 GET 요청의 일부만 성공적으로 처리함

207

  • Multi-Status(다중 상태)
  • 여러 소스에서 여러 응답인 상태에서 적절한 정보를 사용자한테 제공할 수 있도록 함

208

  • Already Reported(이미 보고됨)
  • DAV 바인딩 멤버는 이미 응답의 앞부분에 열거되어 있으며 다시 포함되지 않음

226

  • IM Used
  • 서버가 사용자의 GET 요청에 대한 리소스의 의무 완료, 현재 인스턴스에서 적용된 하나 이상의 인스턴스 조작 결과를 보냄

 

 

 

  3XX(리다이렉션 완료)

Redirection(리다이렉션). 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함

 

300

  • Multiple Choice(여러 선택항목)
  • 서버가 요청에 따라 여러 조치를 선택할 수 있음
  • 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공함

301

  • Moved Permanently(영구 이동)
  • 요청한 페이지를 새 위치로 영구적으로 이동함
  • 요청한 리소스의 URI가 변경됨
  • 일반적으로 GET or HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달됨

302

  • Found(임시 이동)
  • 현재 서버가 다른 위치의 페이지로 요청에 응답함
  • 요청한 리소스의 URI가 일시적으로 변경됨

303

  • See Other(기타 위치 보기)
  • 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답

304

  • Not Modified(수정되지 않음)
  • 마지막 요청 이후 요청한 페이지는 수정되지 않음
  • 캐시 목적으로 사용됨
  • 응답이 수정되지 않았음을 알려줌

305

  • Use Proxy(프록시 사용)
  • 프록시를 사용하여 요청한 페이지만 액세스 가능

307

  • Temporary Redirect(임시 리다이렉션)
  • 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함
  • 요청한 리소스가 다른 URI에 있어 이전 요청과 동일한 메서드를 사용하여 요청할 때 서버가 클라이언트에 이 응답을 직접 보냄

308

  • Permanent Redirect(영구 리다이렉션)
  • 영구적으로 다른 URI에 위치하고 있음을 의미함

 

 

 

  4XX(요청 오류/클라이언트 에러 응답)

Client error responses. 클라이언트에 오류가 있음

 

400

  • Bad Request(잘못된 요청)
  • 서버가 요청의 구문을 인식하지 못함

401

  • Unauthorized(권한 없음)
  • 인증이 필요한 요청
  • 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있음

402

  • Payment Required(결제 필요)
  • 결제가 필요한 요청

403

  • Forbidden(금지)
  • 요청을 거부함

404

  • Not Found(찾을 수 없음)
  • 요청한 페이지(Resource)를 찾을 수 없음

405

  • Method Not Allowed(허용되지 않는 방법)
  • 요청에 지정된 방법을 사용할 수 없음

406

  • Not Acceptable(허용되지 않음)
  • 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음

407

  • Proxy Authentication Required(프록시 인증 필요)
  • 요청자가 프록시를 사용하여 인증해야 함

408

  • Request Timeout(요청 시간 초과)
  • 요청 대기가 시간을 초과함

409

  • Conflict(충돌)
  • 요청을 수행하는 중에 충동이 발생함
  • 요청이 현재 서버의 상태와 충돌됨

410

  • Gone(사라짐)
  • 요청한 리소스가 영구적으로 삭제되었을 때 사용

411

  • Length Required(길이 필요)
  • 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않음

412

  • Precondition Failed(사전 조건 실패)
  • 요청자가 요청 시 부과한 사전 조건을 만족하지 않음
  • 클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않음

413

  • Payload Too Large(요청 속성이 너무 큼)
  • 요청이 너무 커서 서버가 처리할 수 없음
  • 요청은 서버에서 정의한 한계보다 큼

414

  • URI Too Long(요청 URI가 너무 긺)
  • 요청 URI(URL)가 너무 길어 서버가 처리할 수 없음

415

  • Unsupported Media Type(지원되지 않는 미디어 유형)
  • 요청이 요청한 페이지에서 지원하지 않는 형식으로 되어 있음
  • 요청한 미디어 포맷은 서버에서 지원되지 않음

416

  • Requested Range Not Satisfiable(처리할 수 없는 요청 범위)
  • 요청이 페이지에서 처리할 수 없는 범위에 해당함
  • 헤더 필드에 요청한 지정 범위를 만족시킬 수 없음

417

  • Expectation Failed(예상 실패)
  • Expect 요청 헤드 입력란의 요구사항을 만족할 수 없음

418

  • I'm a teapot
  • 서버는 커피를 찻 주전자에 끓이는 것을 거절함

421

  • Misdirected Request
  • 서버로 유도된 요청은 응답을 생성할 수 없음

422

  • Unprocessable Entity(처리할 수 없는 엔티티)
  • 요청은 잘 만들어졌지만 문법 오류로 따를 수 없음

423

  • Locked(잠김)
  • 접근하려는 리소스가 잠겨 있음

424

  • Failed Dependency(실패된 의존성)
  • 이전 요청이 실패돼서 지금 요청도 실패함

426

  • Upgrade Required(업그레이드 필요)
  • 클라이언트는 업그레이드 헤더 필드에 주어진 프로토콜로 요청을 보내야 함

428

  • Precondition Required(전제조건 필요)
  • 오리진 서버는 요청이 조건적임

429

  • Too Many Requests(너무 많은 요청)
  • 사용자가 일정 시간 동안 너무 많은 요청을 보냄

431

  • Request Header Fields Too Large(요청 헤더 필드가 너무 큼)
  • 요청한 헤더 필드가 너무 커서 서버는 요청을 처리하지 않음

451

  • Unavailable For Legal Reasons(법적인 이유로 이용 불가)
  • 사용자가 요청한 것은 정부에 의해 검열된 웹 페이지와 같은 불법적인 리소스임

 

 

 

  5XX(서버 오류/서버 에러 응답)

Server error responses. 서버가 유효한 요청을 명백하게 수행하지 못했음

 

500

  • Internal Server Error(내부 서버 오류)
  • 서버에 오류가 발생하여 요청을 수행할 수 없음
  • 서버가 처리 방법을 모르는 상황이 발생함

501

  • Not Implemented(구현되지 않음)
  • 서버에 요청을 수행할 수 있는 기능이 없음
  • 요청 방법이 서버에서 지원되지 않아 처리할 수 없음

502

  • Bad Gateway(불량 게이트웨이)
  • 서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 잘못된 응답을 받음
  • 서버가 요청을 처리하는 데 필요한 응답을 얻기 위해 게이트웨이로 작업하는 동안 잘못된 응답을 수신했음을 의미함

503

  • Service Unavailable(서비스를 사용할 수 없음)
  • 서버가 오버로드되었거나 유지관리를 위해 다운되어 현재 서버를 사용할 수 있음
  • 서버가 요청을 처리할 준비가 되지 않음
  • 보통 일시적인 상태임

504

  • Gateway Timeout(게이트웨이 시간 초과)
  • 서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 제때 요청을 받지 못함
  • 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 때 주어짐

505

  • HTTP Version Not Supported(HTTP 버전이 지원되지 않음)
  • 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음

506

  • Variant Also Negotiates
  • 서버에 내부 구성 오류가 있음

507

  • Insufficient Storage(용량 부족)
  • 서버에 내부 구성 오류가 있음

508

  • Loop Detected(루프 감지됨)
  • 서버가 요청을 처리하는 동안 무한 루프를 감지함

509

  • 대역폭 제한 초과

510

  • Not Extended(확장되지 않음)
  • 서버가 요청을 이행하려면 요청에 대한 추가 확장이 필요함

511

  • Network Authentication Required(네트워크 인증 필요)
  • 클라이언트가 네트워크 액세스를 얻기 위해 인증을 받아야 할 필요가 있음을 의미

 

 

 

 

 

 

 

참고

프로토콜

- 상호 간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위해 정의됨

 

 

 

 

 

반응형
Comments