ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클라이언트, 서버, HTTP, URL, 쿠키, 세션
    Web 2023. 5. 2. 21:49

    # 클라이언트(client)란?

    브라우저를 통해서 요청(request)을 보내는 주체를 클라이언트(client)라고 합니다. 예를 들면, 매일 구글링하고 있는 여러분의 모습이 바로 클라이언트(client)입니다.

    # 서버(server)란?

    클라이언트(client)의 요청을 수신하여서 처리한 후에 요청(request)에 대한 응답(response)을 하는 것이 서버입니다. 지금 제 블로그를 여러분들이 볼 수 있는 것처럼 말이죠.

    # HTTP란?

    일정한 규칙을 정해서 보내진 요청에, 일정한 규칙에 맞는 응답을 받습니다. 웹브라우저에서 URL이라는 규칙에 따라 통신하는 것을 HTTP라고 합니다. HTTP는 'HyperText Transfer Protocol'의 약자입니다. Protocol은 다소 생소하실 수 있습니다. 그냥 규칙이라고 생각하면 편하실 겁니다. HyperText의 의미는 다른 페이지, 혹은 다른 리소스로 이동할 수 있는 링크를 뜻합니다.

    # URL이란?

    Uniform Resource Locator의 약자로, 인터넷상의 위치에 있는 각종 자원들의 주소 체계를 가리키는 말입니다. 서버에 저장된 웹페이지, 음성과 같은 것들도 다 URL을 가지고 있습니다. 아래의 주소로 각종 자원들을 알아보겠습니다.

    https://www.google.com/search?q=url

    빨간색: 프로토콜(Protocol). 통신 규칙을 정해서 포함시킵니다. HTTP(HTTPS), FTP등이 있 습니다.

    초록색: 서버의 주소. google.com을 호스트 네임이라고 지칭합니다.

    파란색: 경로(Path). 호스트 내 서비스의 위치를 나타냅니다. 검색, 회원 등 서비스 별로 분할되어 있습니다.

    검은색: 쿼리 문자열(Query String). ? 기호로 시작하여 &로 계속 연결이 된다는 특징이 있습니다. 키/값 쌍으로 구성되어 있습니다.

    # 쿠키란?

    서버에서 클라이언트로 보내져서 브라우저에 저장되는 아주 작은 데이터를 가리키는 용어입니다. 키/값 구조이며, 명시된 유효기간이 만료가 되는 시점에 브라우저에서 삭제되는 특징을 가지고 있습니다. 클라이언트 서버는 요청을 받은 것을 기억하지 못하므로, 그것을 어딘가에 남겨 놓을 필요성을 느끼게 됩니다. 하지만 HTTP의 연결을 유지하지 않는 특성이 리소스 관리 측면에서는 굉장히 효율적이기 때문에 계속해서 HTTP는 Stateless 상태로 남습니다. 이를 보완해 주는 것이 쿠키입니다. 서버가 클라이언트에게 쿠키를 보내 주게 되면, 쿠키를 받은 클라이언트는 로그인을 하고 다른 페이지로 이동해도 로그인이 풀리지 않게 됩니다. 하지만 공격당할 수 있기 때문에 민감한 데이터는 담기지 않도록 하고, 서버에서만 쿠키 값을 조정할 수만 있게 하는 httpOnly, 혹은 secure을 사용하여야 합니다.

    # 세션이란? 

    쿠키에서 나오는 한계점, 단점을 보완하기 위해 나온 것입니다. 클라이언트에서 요청하고, 서버에서 응답하게 될 때 Session ID를 쿠키에 심어서 클라이언트에게 던져 주게 됩니다. 이 클라이언트의 상태를 나타내는 것들은 서버 측에 세션 저장소라는 곳에 가지고 있게 됩니다. 그러면 클라이언트에서 굳이 많은 양의 정보나 민감한 정보를 저장하고 있을 필요 없이 서버에서 Session ID를 받은 다음에 그 Session ID를 찾아 활용하게 됩니다. 매번 요청 시의 쿠키 값을 보내는 리소스 값을 절약할 수 있게 됩니다. 하지만 세션 저장소는 서버 측에서 하나의 저장 비용이 될 수 있어 서버 측에서 세션 저장소를 운영하는 가용성과 설계 같은 것들이 서버에 영향을 미치거나 운영에 변동을 준다는 점에서는 이해가 필요합니다.

     

    참조 | 멋쟁이사자처럼 대학 프론트엔드 온보딩 트랙 VOD 강의

Designed by Tistory.