Http 프로토콜

penguin·2022년 3월 15일
0

Http 프로토콜에 대해 간단히 정리해며 개념을 익혀보려고 합니다.

Http 란

Http는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. Http는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.
웹 브라우저에서 사용하는 주소창은 http 프로토콜로 작동합니다.

작동 방식

클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신합니다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests)이라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(responses)이라고 부릅니다.

무상태성과 무연결성

http는 무연결성의 특징을 갖습니다. 클라이언트에서 서버에 연결하여 요청을 보내고 서버에서 응답을 보내서 클라이언트가 응답을 받으면 연결을 끊어버립니다. 이러한 무연결성은 각각 아래의 장점과 단점을 가집니다.

  • 장점: 불특정 다수를 대상으로 하는 서비스에 적합하다. 수많은 사람이 웹 서비스를 이용하더라도 접속 유지는 최소한으로 할 수 있어 더 많은 유저의 요청을 처리할 수 있습니다.
  • 단점: 응답 후 연결을 바로 끊어버리기 때문에 서버에서 클라이언트의 상태를 알 수 없습니다. 이러한 특징을 무상태성이라고 하며 이러한 특징으로 인해 유저의 로그인 정보 등을 서버가 알 수 없습니다. 이러한 단점을 해결하기 위해 http에서는 cookie를 이용하고 있습니다.

cookie는 웹브라우저에서 정보를 담고 있는 정보 파일입니다. cookie는 클라이언트에서 서버에 http 요청을 보낼 때 http header에 담겨 서버로 보내지게 됩니다. 이 cookie에 로그인 정보를 담아 서버에서 유저의 로그인 정보를 알 수 있게합니다.

Http 메서드

http 메서드란 요청의 종류를 서버에 알려주기 위해 사용합니다.

  • GET: 정보를 요청합니다.
  • POST: 정보를 삽입합니다.
  • PUT: 정보를 업데이트합니다.
  • DELETE: 정보를 삭제합니다.
  • HEAD: HTTP Request의 Header만 요청합니다.
  • OPTIONS: 웹서버에서 지원하는 메서드의 종류를 요청합니다.
  • TRACE: 클라이언트에서 보낸 요청을 그대로 반환합니다.
    주로 사용하는건 GET과 POST이고 PUT, DELETE는 간간히 사용했습니다. 나머지는 사용해보지 못했습니다. PUT과 DELETE도 GET과 POST만을 이용하여 구현이 가능합니다. 하지만 GET과 POST만을 이용하여 구현한다면 그 요청의 목적이 무엇인지 한 눈에 알 수 없기 때문에 지양해야 합니다.

Http request

http request는 header와 body로 이루어져 있습니다. header에는 요청과 요청 데이터에 대한 메타정보가 들어있습니다. body에는 요청에 필요한 데이터가 들어있습니다. 주로 POST메소드를 이용할 때 이용합니다.

Http response

http response는 클라이언트에서 보낸 요청에 대한 서버의 응답을 말합니다. request와 같이 header와 body로 이루어져 있습니다.
header에 상태코드가 담깁니다.

상태코드 (status code)

상태코드는 response header의 첫째 줄에 들어있으며 서버의 상태를 알려줍니다.

1xx (조건부 응답)

요청을 받았으며 작업을 계속함을 나타냅니다. 이 상태코드는 클라이언트에 거의 보내지지 않습니다.

2xx (성공)

클라이언트에서 요청한 동작을 수신하여 성공적으로 처리했음을 가리킵니다.

  • 200 (성공): 서버가 요청을 제대로 처리함
  • 201 (생성됨): 요청이 성공했으며, 새로운 리소스가 생성됨
  • 202 (허용됨): 요청을 받았으나 아직 처리하진 않음
  • 204 (컨텐츠 없음): 요청을 처리했지만, 컨텐츠를 제공하지 않음
  • 205 (컨텐츠 재설정): 요청을 처리했지만, 컨텐츠를 표시하지 않음. 그리고 문서를 재 설정할 것을 요구함
  • 206 (일부 성공): 요청의 일부만 성공적으로 처리함

3xx (리다이렉션 완료)

클라이언트에서 요청을 마치기 위해 추가 동작이 필요함을 나타냅니다.

  • 304 (수정되지 않음): 마지막 요청 이후 요청한 페이지가 수정되지 않았음

4xx (요청 오류)

클라이언트에 오류가 있음을 나타냅니다.

  • 400 (잘못된 요청): 서버가 요청의 구문을 인식하지 못함. 주로 헤더 포멧이 HTTP 규약에 맞지 않을 경우
  • 401 (권한 없음): 인증을 필요로 하는 요청, 인증 실패
  • 403 (Forbidden, 금지됨): 서버가 요청을 거부, 인가 실패
  • 404 (Not Found, 찾을 수 없음): 서버가 요청한 리소스를 찾을 수 없음
  • 405 (허용하지 않는 방법): 요청에 지정된 방법을 사용할 수 없음. 예를 들어 POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우

5xx(서버 오류)

서버에서 요청을 수행하지 못했음을 나타냅니다.

  • 500 (내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없음

http에 대해 간단히 정리해보았습니다. 확실히 글로 정리하는게 공부에 도움이 되는거 같습니다.


출처: https://www.joinc.co.kr/w/Site/Network_Programing/AdvancedComm/HTTP

profile
힘내자

0개의 댓글