꼬꼬마 블로그

꼬꼬마의 기술 블로그

2020-03-21 20:00:55 작성된 글

HTTP의 의미

HTTP - MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다

프로토콜이란 데이터를 주고 받기 위해 미리 약속한 통신 규약을 의미합니다.

HTTP 는 데이터를 주고 받기 위한 방식중 하나라는 것이라고 볼 수 있습니다.

HTTP의 특징

1. 비연결성

HTTP 는 연결을 유지하지 않습니다. 즉 요청 이 있다면 응답 을 주고 연결을 끊습니다.
동기화(새로고침) 버튼이 바로 비연결성 을 이야기 할 수 있을 것 같습니다.

이는 소켓 과 비교하시면 이해하기 쉬울 것 같습니다. 소켓 을 이용하면 실시간(리얼타임)을 구현할 수 있는데, 이는 계속 연결을 유지해야만 합니다.

아래의 그림은 비연결성을 설명하는 그림입니다.

2. 무상태성

비연결성으로 인해 각각의 통신이 독립적으로 관리됩니다. 즉 이전 통신의 상태를 알 수 없다는 것입니다.

장점 으로는 서버의 부하를 줄 일 수 있다는 점이지만 단점 으로는 클라이언트의 상태를 유지할 수 없어 요청마다 추가적인 정보가 필요하다는 것 입니다.

HTTP 요청 메서드

HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다

요청 메서드는 서버가 수행할 동작들을 나타냅니다. 가장 많이 사용되는 요청 메서드 4개 입니다.

  • GET: 특정 리소스의 표시를 요청합니다(오직 데이터를 받기만 함)
  • POST: 특정 리소소를 생성합니다.
  • PUT: 특정 리소스를 수정합니다.
  • DELETE: 특정 리소스를 삭제합니다.

위 보다 더 많은 요청 메서드가 존재합니다. 자세한 내용은 MDN의 HTTP 요청 메서드를 확인 해 보시길 권장드립니다.

HTTP 상태 코드

HTTP상태코드(Http Status Code)는 요청에 대한 응답이 성공적으로 완료되었는가를 알려줍니다.

100, 200, 300, 400, 500 번대의 코드가 존재하며 각 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 서버 에러를 뜻합니다.

많이 사용되는 코드들만 살펴보도록 하겠습니다.

200 (OK)

요청이 성공적으로 처리 되었습니다.

201 (Created)

새로운 리소스 생성에 성공하였습니다. 주로 POST, PUT 메서드에 사용됩니다.

400 (Bad Request)

잘못된 요청으로 서버가 요청을 이해할 수 없습니다.

401 (Unauthorized)

비승인으로 요청에대한 응답을 위해 인증이 필요합니다.

403 (Forbidden)

접근할 권한이 없습니다. 401(Unauthorized)와의 차이점은 서버가 클라이언트가 누구인지 알고 있습니다.

404 (Not Found)

요청한 리소스를 찾을 수 없습니다.

500 (Internal Server Error)

서버에서 오류가 발생하였습니다.

더 많은 HTTP 응답 코드는 MDN HTTP 상태 코드에서 확인 하실 수 있습니다.

HTTP 요청,응답 구조

요청 구조


요청 메세지는 Start Line, Header, Body로 구성되어 있습니다.

Start Line

  • HTTP 메서드 앞서 알아본 HTTP 메서드
  • Request Target 요청을 보내는 주소
  • HTTP 버전 버전에 따라 구조가 변경 될 수 있기에 버전을 명시

Header

  • Host 요청이 전송되는 목표의 URL 주소
  • User-Agent 요청을 보내는 클라이언트 정보
  • Accept 클라이언트가 받을 수 있는 컨텐츠 즉 요청에 관한 응답으로 받을 수 있는 컨텐츠
  • Cookie 쿠키
  • Content-Type 메세지Body의 종류
  • Content-Length 메세지 Body의 길이

Body

  • 전송할 데이터

응답 구조


응답 메세지 또한 Start Line, Header, Body와 같이 구성되어있습니다.

Start Line

  • HTTP 버전
  • HTTP 응답 코드 앞서 알아본 응답 상태를 표시하는 코드
  • HTTP 응답 코드(텍스트) 응답 코드의 텍스트 형식(OK, Created, Not Found ... )

Header

  • Content-Type 메세지 Body의 종류
  • Content-Length 메세지 Body의 길이

Body

  • 전송받은 데이터

마무리

웹 개발의 기초라고 할 수 있는 HTTP 통신에 대해 알아보았습니다. 사실 HTTPS에 관해 작성하려고 하였지만 도중 HTTP에 대한 지식이 부족한것 같아 공부하며 작성해 보았습니다. 평소 HTTP통신을 많이 사용하지만 정확한 내용을 모르고 사용했던것 같습니다.


참고 문서

'개발' 카테고리의 다른 글

Git-flow를 사용한 프로젝트 관리  (0) 2020.12.02
Docker(도커) + Node.js 배포  (2) 2020.08.11
웹과 인터넷, 차이점  (0) 2020.06.21
컴파일과 빌드 (feat. Gradle)  (0) 2020.06.21
SSL, HTTPS란? 블로그에 적용해보자  (0) 2020.06.21