본문 바로가기
WEB

[WEB] 웹 클라이언트-서버(Client-Server) 모델

by Amy IT 2022. 7. 6.

 

목차

     

     

    HTTP 프로토콜 (Protocol)

    HTTP(HyperText Transport Protocol)는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. 프로토콜이란 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계를 의미합니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번입니다.

    HTTP 프로토콜은 무연결(Connectionless)과 무상태(Stateless)라는 특징을 가집니다. 무연결이란 요청에 대한 응답이 처이되면 연결이 끊어지는 형태로서, HTTP는 클라이언트와 서버간에 요청이 있을 때마다 독립적으로 연결하여 통신하는 방식입니다. 한 번의 요청에 대해 한 번의 응답으로 HTTP 트랜잭션이 종료되어 요청 간에 정보를 공유해서 사용할 수 없게 되는데, 이처럼 상태정보가 유지되지 않는 특성을 무상태라고 합니다.

     

     

     

    URL

    이미지 출처 https://ko.javascript.info/url

    URL(Uniform Resource Locator)은 웹 서버가 인터넷상 존재하는 자원(정보, 파일 등)을 검색하고 해석하는데 필요한 네트워크 서비스의 표현식을 의미합니다. 

     

     

     

    웹 서버와 HTTP 프로토콜

    이미지 출처 https://developer.mozilla.org/ko/docs/Learn/Server-side/First_steps/Client-Server_overview

    웹 브라우저는 HTTP를 사용하여 웹 서버와 통신합니다. 사용자가 웹 페이지의 링크를 클릭하거나, form을 전송 하거나, 검색을 시작하거나 할 때 웹 브라우저는 HTTP Request(요청)를 서버에 보냅니다. 웹 서버는 클라이언트의 요청 메시지를 기다리고 있다가 메시지가 오면 그것을 처리하고 웹 브라우저에 HTTP Response(응답)메시지를 응답합니다. 

     

    HTTP 요청(Request)과 HTTP 응답(Response)

    이미지 출처 https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

    HTTP 요청은 다음의 세 가지 요소로 구성됩니다.

     

    • 요청 라인(Request Line) : HTTP 메소드 방식 및 요청 URL과 프로토콜 정보를 갖습니다.
    • 요청 헤더(Request Header) : 웹 브라우저 정보, 언어, 인코딩 방식, 요청 서버 정보 등과 같은 추가 정보를 갖습니다.
    • 요청 본체(Request Body) : 요청에 필요한 내용을 갖습니다. 일반적으로 HTML 폼 태그 안에 입력된 값들인 파라미터 정보를 의미합니다.

     

    HTTP 응답은 다음의 세 가지 요소로 구성됩니다.

     

    • 상태 라인(Status Line) : 응답 상태 코드 및 프로토콜 정보를 갖습니다.
    • 응답 헤더(Response Header) : 응답처리 날짜, 인코딩 방식, 요청 서버 정보 등과 같은 추가 정보를 갖습니다.
    • 응답 본체(Response Body) : 응답에 필요한 내용을 갖습니다. 일반적으로 HTML 문서입니다.

     

    HTTP 요청 메소드(Request Methods)

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

     

    • GET : 특정 리소스의 표시를 요청합니다. HTTP 요청시 본문 없이 헤더만 요청하며, 헤더의 URL 부분에 필요로 하는 정보를 넣어 전송합니다. 가장 단순한 요청방식으로 서버에 빠른 속도로 요청할 때 사용합니다.
    • POST : 특정 리소스에 엔티티를 제출할 때 쓰입니다. 헤더의 URL에는 위치 정보만 담고 있으며, HTTP 본체 부분에 데이터를 넣어 전송합니다. 주로 서버의 리소스를 새로 생성(CREATE/INSERT)할 때 사용합니다.
    • PUT : 특정 리소스의 모든 현재 표시를 요청 payload로 바꿉니다. 주로 서버의 리소스를 수정(UPDATE)할 때 사용합니다.
    • PATCH : 리소스의 부분만을 수정하는 데 쓰입니다.
    • DELETE : 특정 리소스를 삭제(DELETE)합니다.

     

    HTTP 상태 코드(Status Code)

    HTTP 상태 코드는 서버에서 설정해주는 응답 정보로서, 클라이언트의 요청에 대한 처리 결과를 의미합니다.

     

    (1) 200번대 : 요청 성공

     

    • 200 OK : 요청이 성공적으로 되었습니다.
    • 204 No Content : 요청이 성공했지만, 요청에 대해서 보내줄 수 있는 콘텐츠가 없습니다.
    • 206 Partial Content : 클라이언트에서 복수의 스트림을 분할 다운로드를 하고자 범위 헤더를 전송했을 때 사용됩니다.

     

    (2) 300번대 : 리다이렉션

     

    • 300 Multiple Choice : 요청에 대해서 하나 이상의 응답이 가능합니다. 사용자는 그중에 하나를 반드시 선택해야 합니다.
    • 301 Moved Permanently : 이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미합니다.

     

    (3) 400번대 : 요청 오류

     

    • 400 Bad Request : 이 응답은 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미합니다.
    • 401 Unauthorized : 권한 없이 요청한 경우로서, 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.
    • 403 Forbidden : 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다.
    • 404 Not Found : 서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다.
    • 405 Method Not Allowed : 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다.

     

    (4) 500번대 : 서버 오류

     

    • 500 Internal Server Error : 서버가 처리 방법을 모르는 상황이 발생했습니다.
    • 501 Not Implemented : 요청 방법은 서버에서 지원되지 않으므로 처리할 수 없습니다.
    • 503 Service Unavailable : 서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때 입니다.

     

     

     

     

    참고

    처음 해보는 Servlet&JSP 웹 프로그래밍 (오정임 지음, 루비페이퍼)

    https://developer.mozilla.org/ko/docs/Learn/Server-side/First_steps/Client-Server_overview

    https://joshua1988.github.io/web-development/http-part1/

     

     

    'WEB' 카테고리의 다른 글

    이클립스(Eclipse) 웹 개발 환경 구축  (0) 2022.06.21

    댓글