TIL

웹 과 HTTP의 이해 후 웹 서버의 이해까지!

추운날_너를_기다리며 2024. 8. 27. 18:00

1. 웹 브라우저란? 

  • 인터넷 브라우저라고도 불리며, 웹 서버로부터 정보를 요청하고 받아 사용자에게 보여주는 소프트웨어입니다.
  • 우리가 일반적으로 사이트에 접속하였을때, HTML, CSS, JavaScript 파일을 전달받아 이를 해석하고 우리의 눈으로 볼 수 있게 됩니다.
  • 이 과정에서 웹 브라우저는 정적인(static)파일과 동적인(Dynamic)정보를 처리하게됩니다.
  1. 브라우저의 통신 방식
    1. 사용자가 웹 브라우저의 주소창에 URL을 입력
    2. 웹 브라우저는 입력받은 URL을 DNS 서버로 전달하여 해당 IP 주소를 찾아줍니다.
    3. DNS 서버는 도메인 이름을 IP 주소로 변환합니다.
    4. 웹 브라우저는 해당 IP 주소로 HTTP 요청
    5. IP 주소에 연결된 웹 서버는 요청(Request)를 받아 처리
    6. 웹 서버는 처리 결과를 HTTP Response로 브라우저에게 전달
    7. 웹 브라우저는 받은 HTTP Response를 바탕으로 사용자에게 표시해줍니다.

2. HTTP의 이해

  • HTTP란?
    • 데이터를 주고 받는 양식을 정의한 통신 규약 중 하나가 HTTP입니다. (통신 규약: Protocol)
    • 여기서 말하는 통신 규약이란, 컴퓨터끼리 데이터를 주고 받을때 정해둔 약속을 의미합니다.
    • 즉, HTTP라는 통신 규약을 이용하여 서버나 클라이언트(브라우저)끼리 의사 소통을 할 수 있습니다.
  • HTTPS란?
    • HTTP를 기반으로 데이터 통신의 안정성을 높이기 위해 암호화 기능이 포함된 통신 프로토콜 입니다.
    • HTTPS를 자세히 살펴본다면, 암호화 기법, 인증서 제공 기관 등 다양한 개념이 필요합니다.
  • 여기서 알고 있어야할 중요한 포인트!!!!
    • 우리가 말을 통해 의사 표현을 할 수 있듯이 모든 컴퓨터는 네트워크를 통해 의사 표현을 할 수 있다.
    • 현실 세계에서 말은 의사 표현의 수단이며, 언어는 의사 표현의 방법입니다.
    • 디지털 세상에서는 네트워크가 의사 표현의 수단이고, 통신 규약(ex HTTP)이 의사 표현의 방법입니다.
  • HTTP는 데이터를 어떻게 주고 받을까?

    • HTTP에서는 언제나 요청(Request)와 응답(Response)라는 개념이 존재합니다.
      1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요청(Request)합니다.
      2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 반환(Response)해줍니다. 원하는 페이지가 없다면 없는 페이지에 대한 데이터를 반환(Response)합니다.
        (일반적인 웹 서버 기준)
      3. 브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줍니다.
  • 추가 데이터? 데이터?
    • Headers 탭에서 추가 데이터라고 많이 말했었고, Response 탭에서는 그냥 데이터라고 말했습니다.
    • HTTP의 구성요소 크게 3가지
      • Method 설명
        • GET : 이름 그대로 어떤 리소스를 얻을 때 사용됩니다.
          그리고 브라우저는 기본적으로 웹 서핑을 한다고 가정하면 모든 요청은 GET메서드를 사용해서 서버에 요청을 보냅니다.
        • POST 웹 서버에 데이터를 개시할 때 사용하는게 일반적입니다.
          (ex 회원가입, 게시글 작성, 댓글 작성)
      • Header 설명 (추가 데이터, 메타 데이터)
        • 브라우저가 어떤 페이지를 원하는지
        • 요청 받은 페이지를 찾았는지
        • 성공적으로 찾았는지
        • 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받습니다.
      • Payload 설명 (데이터, 실질적인 데이터)
        • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있습니다.
        • 클라이언트(브라우저)가 요청을 할 때에도 Payload를 보낼 수 있습니다.
        • 그리고 GET method를 제외하곤 모두 Payload를 보낼 수 있다는게 HTTP에서의 약속 입니다.
        • 추가적으로 DELETE method에서 Payload를 보낼수있지만, 보통 많은 경우에 Payload를 보내지 않고 있습니다.
        • Payload 같은 경우에는 우리가 회원가입을 한다고 하면 구글이라는 서버에다가 회원가입이라는 요청을 수행하기 위해서는 이 요청을 수행하기 위해서는 구글이라는 서버는 해당하는 처리결과에 대해서 단순하게 Text파일이나 자바스크립트 파일 뿐만 아니라 Payload라는 방식으로 전달을 할 수 있는데 이 Payload같은 방법같은 경우는 Json 형태와 같은 여러가지 데이터 타입을 통해 전달한다고 보면 됩니다.

3. 웹 서버의 이해

  • 웹 서버란?
    • 웹 서버는 HTTP를 이용하여 인터넷 상에서 클라이언트의 요청을 처리하고 응답해주는 컴퓨터 또는 프로그램
    • 웹 서버는 클라이언트의 HTTP 요청을 받아 정적인 콘텐츠를 제공
    • 필요한 경우, 클라이언트의 요청을 웹 어플리케이션 서버(WAS)로 전달하여 처리
    • 대표적인 쉡 서버로는 Apache, Nginx 등
  • 웹 어플리케이션 서버란?
    • 웹 어플리케이션 서버는 웹 서버와 협력하여 동적인 컨텐츠 제공
      • 주로 데이터베이스를 조회하거나, 복잡한 계산과 같은 비즈니스 로직을 처리
  • 웹 서버와 브라우저 간의 통신 방식 정리하기
    • 사용자는 브라우저를 통해 HTTP request로 웹사이트를 웹 서버에 요청을 보냅니다.
    • 웹 서버는 이 요청을 처리한 후 HTTP response를 통해 해당 웹사이트 데이터를 브라우저에 전송합니다.
    • 마지막으로 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려내는 일을 합니다.
    • 기본적으로 브라우저가 웹 서버에 요청을 할 때는 주로 GET Method로 요청하게 됩니다.
    • 그러나 POST, PUT, DELETE 와 같은 다른 HTTP 요청 메서드들도 존재하며, 이들은 서버에 다른 타입의 요청을 보낼 떄 사용됩니다.