HTTP 파헤치기(2)

2021. 5. 4. 14:07CS/네트워크 기초

HTTP : Hyper Text Transfer Protocol

우리가 웹 개발을 할 때 주로 HTTP를 이용한다. 클라이언트와 서버 사이에 Request/Response를 주고받는 프로토콜로 클라이언트가 원하는 정보를 요청하면 서버에서는 필요한 정보를 클라이언트에게 전달해주는 프로세스이다.

HTTP의 특징에 대해 알아보자 (HTTP 네트워크 모델 참고)

 

  • 비연결성(Connectionless)
  • 무상태(Stateless)
  • 상태코드(Status)
  • 메서드(Method)
  • HTTP Header

3. 상태코드 (Status)

클라이언트가 서버에 요청하면 서버는 요청에 대한 처리 상태를 숫자로 리턴하는데 이것을 응답 상태코드라 한다.

  • 101 ~ 109 : 메시지 정보
  • 200 ~ 206 : 요청 성공
  • 300 ~ 305 : 리다이렉션
  • 400 ~ 415 : 클라이언트 에러
  • 500 ~ 505 :: 서버 에러

더 자세한 내용

 

HTTP response status codes - HTTP | MDN

HTTP response status codes 100 Continue This interim response indicates that everything so far is OK and that the client should continue the request, or ignore the response if the request is already finished. 101 Switching Protocol This code is sent in res

developer.mozilla.org

상태코드를 알고 있어야 어디서 에러가 발생한 것인지 정확하게 알 수 있다.

4. 메서드 (Method)

  • GET
    서버에게 리소스를 요청한다 (조회)
  • HEAD
    - 정확히 GET과 같지만, 서버는 응답으로 엔티티 본문 반환없이 헤더만을 반환한다
    - 클라이언트는 리소스를 가져올 필요 없이 헤더만을 통해 정보를 얻을 수 있다
  • PUT
    서버가 요청의 본문을 갖고 요청 URI의 이름대로 새 문서를 만들거나, 이미 URI가 존재한다면 요청 본문을 변경할 때 사용한다 (수정)
  • POST
    서버에 입력데이터를 전송하며 요청 엔티티 본문에 데이터를 넣어 서버에 전송한다 (삽입)
  • DELETE
    - 서버에서 요청 URI 리소스를 삭제하도록 요청한다 (삭제)
    - 클라이언트는 항상 삭제된다고 생각하지만, 서버에서는 이 요청을 무시할 수도 있다
  • TRACE
    - 클라이언트와 목적지 서버 사이에 있는 모든 HTTP 애플리케이션의 요청/응답 연쇄를 따라가면서 자신이 보낸 메시지의 이상 유무를 파악한다
    - 서버는 응답 메시지의 본문에 자신이 받은 요청메시지를 넣어 응답하며, 주로 진단을 위해 사용한다
  • OPTIONS
    서버에게 특정 리소스가 어떤 메소드를 지원하는지 물어볼 수 있다

5. HTTP Header

HTTP에서 클라이언트와 서버는 데이터를 패킷 단위로 잘게 쪼개서 통신한다. 데이터 전송 단위인 패킷에는 요청/응답에 대한 메시지가 담겨있다. (참고)

패킷의 구조는 다음과 같다.

  • 시작라인 (Request Line)
  • 헤더 (Header)
  • 본문 (Body)

헤더에 대한 정보들을 간단하게 정리한 것이다.

  • Date
    메시지가 언제 만들어졌는지
  • Via
    메시지가 어떤 프락시를 거쳐왔는지
  • client-IP
    클라이언트가 실행된 컴퓨터의 IP
  • Accept
    서버가 보내도 되는 미디어의 종류
  • Accept-charset
    서버가 보내도 되는 문자열셋
  • If-Modified-since
    주어진 날짜 이후에 리소스가 변경되지 않았다면 요청을 제한 함
  • Authorization
    서버에게 제공하는 인증 자체에 대한 정보
  • Cookie
    쿠키 정보
  • Age
    응답이 얼마나 오래 걸렸는지
  • Server
    서버 정보
  • Allow
    현재 엔티티에 대해 수행될 수 있는 요청 메서드 목록
  • Content-Encoding
    본문에 적용된 인코딩
  • Content - type
    본문의 내용이 어떤 형식인지 (텍스트, 이미지 등…)

자세한 내용은 다음을 참고하길 바란다.


Ref.

[1] victorydntmd.tistory.com/286