초록스터디 3기 1주차 - HTTP

코코코딩을 합시다·2024년 3월 18일
post-thumbnail

HTTP 정의

HTTP의 기본적인 동작방식은 다음과 같습니다.

  1. 클라이언트는 주소창에 주소를 입력한다.
  2. 브라우저는 수신한 주소를 해석해 서버로 요청을 보낸다.
  3. 브라우저의 요청을 수신한 서버는 브라우저로 정보를 보낸다. (응답에 요청한다.)
  4. 브라우저는 서버가 보내준 정보를 이용해 적절한 페이지를 구성해 클라이언트에게 보여준다.

즉 클라이언트는 서버에 요청을 하고 서버는 클라이언트에게 응답을 하는 것입니다.
이러한 요청과 응답을 클라이언트와 서버간의 통신이라 하고, 이 통신의 규약을 HTTP라고 합니다.

URL 구성

URL의 구성은 다음과 같습니다.

  • PROTOCOL
    스킴이라고도 한다. 웹 어플리케이션에선 대부분 HTTP와 HTTPS 프로토콜을 사용한다.
  • HOST
    리소스가 존재하는 컴퓨터(HOST)의 이름이다.
  • PORT
    서버가 리소스를 제공하는 데 사용하는 포트 번호이다. 일반적으로 HTTP 프로토콜의 경우 80번 포트가 사용되고 HTTPS의 경우 443번 포트가 사용된다.
  • RESOURCE PATH
    리소스가 서버에서 어떤 위치에 있는지 나타낸다. /를 이용해 계층적으로 표현한다.
  • QUERY
    서버로 전달되는 매개변수와 값이다. "?"로 시작하며, 각 매개변수와 값은 "&"로 구분된다.


HTTP REQUEST & RESPONSE

HTTP REQUEST
해당 요청을 하나씩 뜯어보겠습니다.
Request line과 headers, empty line으로 구분하겠습니다.
중요한 정보는 headers에 포함돼있습니다.

  • Request Line
    • GET -> 요청(HTTP 메소드)의 종류
    • /doc/test.html HTTP/ -> URI
    • 1.1 -> HTTP Version
  • Headers
    • Host -> 요청이 전송되는 target의 host url
    • Accept -> 웹 클라이언트가 받을 수 있는 데이터 종류
    • User-Agent -> 요청을 보내는 클라이언트에 대한 정보 (OS, 버전 등)
  • Empty Lines
    • 해당 요청의 실제 내용이 JSON이나 XML 형태로 포함돼있음

HTTP RESPONSE
요청을 보냈으니 서버는 응답을 할 것입니다.
이번엔 Status Line과 Headers, Empty Lines로 뜯어집니다.

  • Status Line
    • 1.1 -> HTTP Version
    • 200 -> 응답 상태
    • OK -> 응답 상태 설명
  • Headers
    • request의 header와 유사하나 User-Agent 대신 서버 정보를 나타내는 Server가 있다.
  • Empty Lines
    • 응답 정보

응답과 요청에서 중요하게 봐야할 요소들이 있습니다.
바로 GET과 200입니다.

HTTP 요청 메소드

http 요청 메소드란 클라이언트가 서버에 데이터를 요청할 때 특정 동작을 수행하는 메소드입니다.

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

CRUD를 예로 들면 글을 작성하는 Create는 POST 메소드를, 글을 읽어들이는 Read는 GET 메소드를 사용하겠죠. 대부분의 HTTP 요청 메소드는 GET과 POST로 구성돼있습니다.

HTTP Status code

그럼 아까 봤던 200 OK는 무슨 뜻일까요? 응답 상태라고 설명했습니다.
다음은 서버가 보내준 응답 상태 코드 종류입니다.

1xx (Informational - 정보):

100 (Continue): 클라이언트가 요청을 계속할 수 있음을 나타냅니다.
101 (Switching Protocols): 서버가 프로토콜을 변경하고자 할 때 사용됩니다.

2xx (Success - 성공):

200 (OK): 요청이 성공적으로 처리되었음을 나타냅니다.
201 (Created): 요청이 성공적으로 처리되어 새로운 리소스가 생성되었음을 나타냅니다.
204 (No Content): 요청이 성공적으로 처리되었으나 응답으로 내용이 없음을 나타냅니다.

3xx (Redirection - 리다이렉션):

301 (Moved Permanently): 리소스가 영구적으로 새 위치로 이동되었음을 나타냅니다.
302 (Found): 리소스가 일시적으로 다른 위치로 이동되었음을 나타냅니다.

4xx (Client Error - 클라이언트 오류):

400 (Bad Request): 클라이언트 요청이 잘못되었음을 나타냅니다.
401 (Unauthorized): 인증이 필요함을 나타냅니다.
403 (Forbidden): 요청이 서버에 의해 거부되었음을 나타냅니다.
404 (Not Found): 요청한 리소스를 찾을 수 없음을 나타냅니다.

5xx (Server Error - 서버 오류):

500 (Internal Server Error): 서버에서 요청을 처리하는 동안 오류가 발생했음을 나타냅니다.
503 (Service Unavailable): 서버가 현재 요청을 처리할 수 없음을 나타냅니다.


해당 포스팅은 초록 스터디 3기 중 제공 받은 스터디 자료를 바탕으로 학습한 뒤 출처의 자료를 통해 직접 제작한 포스팅임을 밝힙니다.

출처

https://brilliantdevelop.tistory.com/32

profile
좋아하는 걸로 밥 벌어먹기

0개의 댓글