티스토리 뷰

개념들

HTTP 프로토콜과 상태코드

김관장 2022. 6. 30. 18:10

1. HTTP 프로토콜이란?

  • HTTP (Hypertext Transfer Protocol)는 웹 인터넷상에서 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜입니다. 어떤 종류의 데이터든지 전송할 수 있도록 설계되어있으며, HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류가 있습니다.

    * 서버 : 어떠한 자료에 대한 접근을 관리하는 네트워크 상 시스템 (요청에 대한 응답을 보냄)
    * 클라이언트 : 그 자료에 접근할 수 있는 프로그램 (웹 브라우저, 앱 어플르케이션 등 .. )

  • HTTP 프로토콜은 상태가 없는(stateless) 프로토콜입니다. 여기서 상태가 없다란 뜻은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 뜻입니다. 즉 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 뜻입니다.
  • HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번입니다.

2. HTTP 프로토콜의 장점과 단점

   2-1. 장점

 

  • 불특정 다수를 대상으로 하는 서비스에 적합합니다.
  • 상태가 없는(stateless) 프로토콜이기 때문에 웹 서비스를 많이 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있습니다.

   2-2. 단점

 

  • 상태가 없는(stateless) 프로토콜이기 때문에 연결을 끊어버러기 때문에, 클라이언트의 이전 상태를 알 수 없습니다. 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수 없습니다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있습니다.

    * Cookie : 클라이언트와 서버의 상태 정보를 담고 있는 정보조각입니다. 로그인을 예로 들자면, 클라이언트가 로그인에 성공 시 서버는 로그인 정보를 자신의 DB에 저장하고 동일한 값을 cookie 형태로 클라이언트에 전송합니다.

3. HTTP 프로토콜 과정

  1. connect : 클라이언트가 원하는 서버에 접속합니다.
  2. request : 클라이언트가 접속한 서버에 요청합니다. 요청을 보낼때는 요청에 대한 정보를 담아 서버에 보냅니다.
  3. response : 서버가 요청에 대한 응답결과를 클라이언트에게 보내는 것을 응답이라고 합니다. 응답이 끝나면 서버와 클라이언트 연결을 끊습니다. (stateless)

4. URL 과 HTTP 요청 메서드

   4-1. URL(Unoform Resource Locators)

 

  • URL과 HTTP는 독립된 다른 체계입니다. HTTP는 전송 프로토콜이고, URL은 자원의 위치를 알려주기 위한 프로토콜입니다.

URL의 구조

  • URL의 구조는 위와 같으며, 각 구성요소는 다음과 같습니다.

    1. protocol : 서로 다른 컴퓨터간에 통신을 하기 위한 규약으로, http는 웹 서버에 접속하기 위한 프로토콜입니다.
    2. host : 도메인 네임 또는 IP주소가 들어갑니다. 즉 컴퓨터의 주소를 표시하는 영역입니다.
    3. port : 포트는 컴퓨터에서 실행되고 있는 수많은 프로세스들의 주소입니다. 포트번호를 입력하지 않았을 경우 기본 포트번호가 적용됩니다. (http : 80번, https : 443번)
    4. resource path(경로) : 서버 프로그램 내에 짜인 로직의 경로입니다. 즉 소스가 있는 문서의 경로입니다.
    5. query : 쿼리는 URL에서 추가적인 데이터를 표현할 때 사용합니다. resource path 뒤 ? 를 기점으로 key=value 형태로 데이터를 표현합니다.

   4-2. HTTP 요청 메서드

 

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

5. HTTP 상태 코드

HTTP 상태 코드(HTTP Status Code)는 서버에서 설정해주는 응답 정보입니다. 주요 상태 코드는 200번대부터 500번대까지 다양하게 있습니다. 

 

  1. 2XX - 성공

    200번대의 상태 코드는 대부분 성공을 의미합니다.

    • 200 : GET 요청에 대한 성공
    • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
    • 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
    • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환
  2. 3XX - 리다이렉션

    300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우입니다.

    • 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
    • 303 : See Other, 요청한 자원이 임시 주소에 존재
    • 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인
  3. 4XX - 클라이언트 에러

    400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우입니다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생합니다.

    • 400 : Bad Request, 잘못된 요청
    • 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
    • 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
    • 404 : NotFound, 서버에서 요청받은 리소스를 찾을 수 없습니다. (브라우저에 알려지지 않은 URL로 요청한 경우)
    • 405 : Method Not Allowed, 허용되지 않은 요청 메서드
    • 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌
  4. 5XX - 서버 에러

    500번대 상태 코드는 서버 쪽에서 오류난 경우입니다.

    • 500 : Internal Sever Error, 웹 사이트 서버에 문제가 있음을 의미하며 서버는 정확한 문제에 대해 구체적 설명을 할 수 없는 경우
    • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
    • 502 : Bad Gateway, 서버가 게이트웨이로부터 잘못된 응답을 수신했을음 의미하며 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우
    • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우
    • 504 : Gateway Timeout : 웹 페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못한 경우

 

🤔  정리 !

  • HTTP 프로토콜은 프론트엔드 개발자라면 필수적으로 알아야하는 지식 !
  • 1 ~ 5번의 소제목 모두 기본적이지만 중요한 내용이니 숙지하자 !

 

🔗 참고한 글

 

프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1

API 데이터 요청을 위해 꼭 알아야 하는 HTTP 프로토콜의 정의, HTTP Status Code, HTTP Methods 등

joshua1988.github.io

 

'개념들' 카테고리의 다른 글

비동기 HTTP 통신 종류 (ajax, fetch, axios)  (4) 2022.07.31
Endpoint ? (feat. API)  (3) 2022.07.14
RESTful API ?  (2) 2022.07.11
댓글