HTTP 프로토콜과 헤더

Donghwi Kim·2024년 1월 30일
0

잡다한 개발 지식

목록 보기
8/26

HTTP 프로토콜


프로토콜 - 상호간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위한 정의이다. 웹에서는 브라우저와 서버 간에 데이터를 주고 받기 위한 방식으로 HTTP 프로토콜을 사용한다.


HTTP 프로토콜은 상태가 없는 프로토콜이다.
데이터를 주고 받기 위한 각각의 요청이 서로 독립적으로 관리된다.
쉽게 말해서 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다.


이러한 특징 덕분에 서버는 세션과 같은 별도 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생긴다. 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.


HTTP 프로토콜로 데이터를 주고받기 위해서는 Request와 Response가 필요하다. 일반적으로 Client와 Server는 브라우저와 데이터를 보내주는 서버를 의미한다.


HTTP 요청 메서드에는 대표적으로 GET, POST, PUT, DELETE가 있다.

  • GET: 존재하는 자원에 대한 요청
  • POST: 새로운 자원을 생성
  • PUT: 존재하는 자원에 대한 변경
  • DELETE: 존재하는 자원에 대한 삭제


HTTP 상태 코드는 서버에서 설정해주는 응답 정보를 의미한다.
클라이언드가 요청을 보냈을 때 서버에서는 상태 코드를 전송하는데 상태 코드는 200번대부터 500번대까지 다양하게 있다.


주요 상태 코드로는

  • 200 [OK] - GET 요청에 대한 성공

  • 301 [Moved permanently] - 요청 URL의 위치가 다른 주소로 이동되었다.

  • 304 [Not Modified] - 요청한 문서나 파일 내용이 지정된 시각 이후 변화한 게 없으므로 이전에 가져간 내용을 그대로 사용하라는 의미이다.

  • 403 [Forbidden] - 클라이언트가 보낸 요청을 이해하였으나 요청 처리를 거부하는 겅우이다. 금지된 영역을 접근하려 하는 경우 발생한다.

  • 404 [Not Found] - 클라이언트가 요청한 URL에 해당 자원이 없는 경우 발생한다.

  • 500 [Internal Server Error] - 서버가 요청을 처리하다가 에러가 발생한 경우를 의미한다. 내부 서버 오류

  • 503 [Service Unavailable] - 서버에 일시적으로 과부하가 걸렸거나 정비중으로 인해 요청을 처리할 수 없는 경우이다.



HTTP 헤더

클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다. 대소문자를 구분하지 않는 이름과 콜론 다음에 오는 값으로 이루어져 있다.

  • 헤더 필드명 + 값의 형태
  • 한 줄에 하나씩, 한 줄 끝나면 줄 바꿈
  • 헤더는 여러 개 올 수 있다.
  • 헤더가 끝나면 빈 줄을 하나 넣고 바디 시작


헤더 예시

  • Accept:
    클라이언트에서 사용 가능한 미디어 타입을 표시한다. 따라서 HTTP 요청 메시지에만 포함 될 수 있는 헤더이다.
  • Accept-Charset:
    서버가 보내주는 응답 메시지에 사용 될 수 있는 문자코드를 알려준다. 즉 웹브라우저에서 인식 할 수 있는 문자코드이다. 예를 들어 유니코드인 UTF-8, 한글 완성형 코드인 euc-kr 등이 가능하다.
  • Accept-Encoding:
    웹브라우저에서 인식 할 수 있는 코딩 방식을 알려준다. 따라서 HTTP 요청 메시지에만 포함 될 수 있는 헤더이다.
  • Content-Encoding:
    메시지의 바디 부분에 사용된 코딩 방식을 알려준다.
  • Content-Length:
    메시지의 바디의 크기를 수신 측에게 바이트 단위로 알려준다.
  • Content-Type:
    메시지 바디 부분의 데이터 타입(type)을 표시한다.


헤더 컨텍스트

  • General header - 요청과 응답 모두에 적용. 바디에서 최종적으로 전송되는 데이터와는 관련이 없음.
  • Request header - 패치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더
  • Response header - 위치 또는 서버 자체에 대한 정보와 같이 응답에 대한 부가적인 정보를 갖는 헤더.
  • Entity header - 컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더.

0개의 댓글

관련 채용 정보