HTTP

Bam·2022년 2월 16일
0

Network

목록 보기
12/13
post-thumbnail

HTTP

HTTP, HyperText Transfer Protocol은 프로토콜의 일종으로, 웹에서 정보를 주고받기 위한 프로토콜입니다. 최근에는 HTTP를 확장해서 하이퍼텍스트를 넘어 이미지나, 폼, 비디오 까지도 통신이 가능해졌습니다.

HTTP는 웹에서 하게되는 모든 통신의 기본 프로토콜이며, 서버-클라이언트 통신 프로토콜이기도 합니다. 그래서 백엔드 개발자라면 서버 요청 처리를 위해, 프론트엔드 개발자는 서버로 데이터를 전송하기 위해 HTTP에 대해서 알고 있는 것이 좋습니다. 서버-클라이언트 통신에서 서버는 응답을 하고 클라이언트는 요청을 하게되는데, 이때 서버는 잘 알려진 포트 80번을 사용하고 클라이언트는 임시 포트 번호를 사용해서 서로 통신합니다.

HTTP의 큰 특징은 상태가 없는 프로토콜이라는 점 입니다. 상태가 없다는 것은 각 요청들이 연결관계가 없다는 것을 의미합니다. 상태가 없음으로써 각 요청에 대해 독립적인 응답과 관리를 할 수 있습니다.


HTTP와 URL

URLUniform Resource Locator의 줄임말로, 웹 사이트 주소라고 흔히 말합니다. URL은 웹 페이지를 구분할 수 있게 해주는 이름이라고도 할 수 있습니다. 또 페이지 내에서 페이지의 위치를 표시하는데에도 사용합니다.

URL은 최소 4개의 식별자를 가집니다.

프로토콜://호스트 식별자:포트번호/경로?쿼리

프로토콜은 서버-클라이언트 프로그램으로, 통신 방법에 대해 규정합니다. 주로 http, 최근에는 https가 주로 오고, 파일 전송에는 FTP 같은 것이 옵니다.
호스트 식별자는 우리가 주소라고 생각하는 문자열이 옵니다. 이 부분은 IP주소로 표현될 수도 있고, 서버에 지정한 이름이기도합니다. 더 쉽게 표현하면 www.google.co.kr과 같은 것을 의미합니다.
포트 번호는 서버-클라이언트 통신을 위해 사용하는 포트의 번호입니다.
경로는 파일의 위치와 이름을 알려주기 위한 용도입니다. 현재 위치한 페이지가 웹 페이지 개발 디렉토리의 어느 곳에 있는지를 알립니다.
쿼리는 선택적 옵션인데, 웹에 사용자 입력 데이터를 이용할 경우 사용됩니다. 우리가 주소창을 보다보면, 우리가 정보를 보내는 옵션이 있는 페이지에서 ?기호 뒤에 쿼리문이 있는것을 볼 수 있습니다.


HTTP 통신 과정

HTTP의 통신 과정은 다음과 같습니다.

  1. 서버에 연결
  2. 연결에 성공하면 서버로 요청을 보낸다.
  3. 서버는 요청에 대한 응답을 클라이언트로 보낸다.


HTTP가 처음 등장했을 때는 요청-응답마다 연결 과정을 거쳤었지만, 1.1버전 이후로는 한 번 연결 하면 이후에는 자유롭게 요청-응답을 할 수 있게 되었습니다.


HTTP 요청 방식

HTTP를 통해 클라이언트가 서버로 요청하는 방법은 여러가지가있습니다. 이 방법들은 용도에 따라 나뉩니다.

POST

POST방식은 클라이언트가 서버에 자원을 생성할 때 주로 이용합니다. 예를 들면, 회원가입이나 게시판에 글을 쓰는 작업 등이 POST방식입니다.
POST방식을 이용하면 정보가 HTML <body>에 담겨서 정보가 전송되어 URL에 노출되지 않습니다. 따라서 URL에 정보를 보여주지 않아야 하는 자원 생성 작업에 이용됩니다.

GET

GET방식은 일반적으로 사용되는 요청 메소드입니다. 앞서 본 POST와는 다르게 URL에 정보가 포함되어 전송되기 때문에 정보가 노출될 위험이 있으므로, 노출되도 상관없는 정보에 대해서만 GET방식을 사용하는 것이 좋습니다.
GET방식은 POST방식보다 처리속도가 빠른 편이라는 장점을 가지고 있습니다.

HEAD방식은 서버의 데이터를 검색하고 요청할 때 사용합니다.

OPTIONS

OPTIONS방식은 선택 사항에 대한 정보를 요청할 때 사용합니다.

PUT

PUT방식은 서버 자원을 변경할 때 사용합니다. PUT 요청에 메세지(정보)를 담으면 그 내용이 지정된 URL에 저장되게 됩니다.

DELETE

DELETE는 서버의 자원을 삭제할 때 사용합니다.

TRACE

TRACE는 최종 수신지까지의 메세지 전송 경로를 추적해야할 때 사용합니다.


HTTP 응답 코드

HTTP 응답 코드(HTTP 상태 코드)HTTP가 통신 상태에 따라 응답에 반환하는 코드입니다. 이 코드들을 보면 성공인지, 실패인지 등에 대한 상태를 알 수 있습니다. 응답 코드는 숫자 세자리로 나타나며, 맨 앞자리 수가 전반적인 상태를 나타냅니다.

  • 1XX: 요청을 받았다. 프로세스를 진행.
  • 2XX: 요청에 성공했다.
  • 3XX: 요청 완료를 위해 추가 조치가 필요하다.
  • 4XX: 요청을 처리할 수 없다.(문법 오류 등)
  • 5XX: 서버가 유효한 요청을 들을 수 없다.

각 상태에 대한 응답 코드는 무수히 많습니다. 여기서는 대표적인 몇 가지 응답 코드들만 소개하겠습니다.

응답 코드설명
100요청을 계속해야한다. 요청에 대해 나머지 부분을 기다리는 상태.
101프로토콜 전환을 요청해 서버의 승인을 기다리는 상태.
200서버가 요청을 제대로 처리한 성공 상태.
201요청이 성공해 서버가 리소스를 작성하는 중인 상태.
202서버가 요청을 접수했지만, 처리하기 전인 상태.
204서버가 요청을 처리했지만, 콘텐츠를 제공하지 못하고있는 상태.
300서버 요청에 따라 조치를 선택하는 상태.
400요청의 구문 인식 실패.
401인증이 필요한 요청으로 인한 실패
403서버가 요청 거부.
404요청한 페이지를 서버가 찾지 못해 실패.
405잘못된 요청 방식.
500서버 오류로 인한 수행 불가능 상태.

참조

0개의 댓글