웹사이트의 동작 원리

웹사이트

  • 웹서버 애플리케이션이 공개하는 다양한 웹페이지의 집합

웹사이트가 화면에 표시되는 순서

  1. 웹브라우저에서 주소를 입력하거나 링크를 클릭!!
  2. 웹서버 애플리케이션에 파일 전송 요청을 보냄
  3. 웹서버 애플리케이션은 요청받은 파일을 응답으로서 돌려보냄
  4. 웹브라우저에서 수신한 파일을 표시함

HTTP ⇒ 웹페이지 파일 전송에 이용하는 TCP/IP의 애플리케이션층 프로토콜

웹페이지의 구성

1. HTML

  • 웹페이지는 HTML(HyperText Markup Language)파일로 이루어져있다.

Markup : 문서의 제목이나 헤드라인, 단락, 리스트, 다른 문서 인용 등의 구조를 명확히 함으로써, 컴퓨터로 문장 구조 분석을 간편하게 할 수 있다

  • HTML파일은 HTML태그로 이루어져 있다.
<body>
  <h1>Hello world...!</h1>
  <h2>Lorem ipsum</h2>
  <p>Reprehenderit eiusmod consecttetur</p>
</body>

2. CSS (스타일 시트)

  • 문서의 레이아웃이나 문자의 폰트와 색 등 웹페이지의 디자인을 정의하는 방법이다.
  • HTML파일 안에 기술할 수도 있지만, 대개 별도로 스타일 시트 파일을 작성한다.

웹사이트의 주소

  • 웹사이트 주소의 의미 : 전송받고 싶은 웹페이지를 지정하는 것

  • URL의 의미 : 주로 'http://'로 시작되는 문자열!!

  • 호스트명 뒷부분이 웹서버 어디에 목적으로 하는 파일이 나타내는 경로이다.

  • HTTP Request : Request Line, Message Header, Entity Body 세 부분으로 나뉜다.

    1. Request Line

      • HTTP Request의 첫 번째 줄로, 웹서버에 대한 실제 처리 요청을 전달함
      • 메소드, URI, 버전으로 구성됨
      • URL을 입력하거나 링크를 클리갛면 GET메소드의 HTTP 리퀘스트를 웹서버 애플리케이션으로 보냄
    2. Message Header

      • 요청 라인에 이어지는 여러 줄의 텍스트이다.
      • 웹브라우저의 종류와 버전, 대응하는 데이터 형식 등의 정보를 기술한다.
    3. Empty Line : Message Header와 Entity Body를 구분하기 위한 라인

    4. Entity Body

      • POST 메소드로 웹브라우저에서 데이터를 보낼 때 사용된다.

주요 HTTP 메소드

메소드설명
GETURI로 지정한 정보를 가져온다.
파일의 경우 해당 파일의 내용을 되돌려 보내고
CGI 프로그램일 경우 프로그램 출력 데이터를 반송한다.
POST클라이언트에서 서버로 데이터를 송신한다.
폼에 입력한 데이터를 송신한다.
HEADGET과 비슷하지만 HTTP 메시지 헤더만 반송하고 데이터의 내용을 돌려보내지 않는다.
파일 최종시간 갱신을 조사할 때 사용한다.
OPTIONS통신옵션을 통지하거나 조사할 때 사용한다.
PUTURI로 지정한 서버의 파일을 치환한다.
URI로 지정한 파일이 없는 경우에는 새로 파일을 작성한다.
DELETEURI로 지정한 서버의 파일을 삭제한다.
TRACE서버측에서 받은 request 라인과 헤더를 그대로 클라이언트에 반송한다.
프록시 서버 등을 사용하는 경우 리퀘스트가 치환되는 상태를 조사할 떄 사용한다.
CONNECT암호화한 메시지를 프록시로 전송할 때 사용한다.

  • HTTP Response : Response Line, Message Header, Entity Body로 구성된다.

    1. Response Line

      • Request와 비슷하게 버전, 상태 코드, 설명문으로 나뉜다.
      • 버전 : HTTP의 버전을 나타내며, 현재(2021/04/17) 주요 버전은 1.0이나 1.1이다.
      • 상태 코드 : 리퀘스트에 대한 웹서버 애플리케이션의 처리 결과를 나타내는 3자리로 된 숫자
      • 설명문 : 상태 코드의 의미를 간단히 보여주는 텍스트
    2. Message Header

      • 웹 서버 애플리케이션이 더 자세한 정보를 웹브라우저에 전달하기 위해 이용합니다.
    3. Entity Body

      • 웹브라우저에 돌려보낼 데이터가 들어감
상태 코드 값의미
1xx정보. 추가 정보가 있음을 전달합니다.
2xx성공. 서버가 요청을 처리했음을 전달합니다.
3xx리다이렉트. 다른 URI로 다시 리퀘스트하도록 요청합니다.
4xx클라이언트 에러. 요청에 문제가 있어 처리할 수 없음을 전달합니다.
5xx서버 에러. 서버 쪽에 문제가 있어 처리할 수 없음을 전달합니다.

HTTP 쿠키

  • 웹서버 애플리케이션이 웹브라우저에 특정 정보를 저장해 두는 기술
  • 쿠키 정보는 HTTP 헤더에 포함되어 HTTP Response로 보내진다.
  • 사용자의 로그인 정보나 사이트 내 웹페이지 열람 이력을 관리할 수 있다!

http-cookie

프록시 서버 (Proxy Server)

  • 웹사이트 접속을 대행하는 서버
  • 클라이언트 PC의 웹브라우저에서 어떤 웹사이트에 접속하는지 확인할 수 있음
  • URL 필터링 : 특정 웹사이트에 대한 접속 제한을 할 수 있음
  • 웹브라우저를 이용하는 경우 프록시서버의 IP주소와 포트번호를 설정해야함
  • 프록시 서버 접속 순서
    1. 클라이언트 PC의 웹브라우저에서 URL을 입력하면, 프록시 서버로 HTTP 리퀘스트를 보낸다.
    2. 프록시 서버에서 URL로 지정된 웹서버에 HTTP 리퀘스트를 보낸다.
    3. 웹서버에서 프록시 서버로 HTTP 리스폰스를 보낸다.
    4. 프록시 서버에서 클라이언트 PC의 웹브라우저로 HTTP 리스폰스를 보낸다.

웹 애플리케이션

  • 웹브라우저를 유저 인터페이스로 이용하는 애플리케이션
  • 웹 접속에 이용하는 프로토콜은 HTTP
  • 트랜스포트층 ⇒ TCP
  • 인터넷층 ⇒ IP
  • 웹사이트에 접속할 때는 URL을 이용해야함
  • URL로부터 웹서버의 IP주소를 구하는 이름해석을 하기 위해서는 DNS가 필요함버의 IP주소를 구하는 이름해석을 하기 위해서는 DNS가 필요함

웹사이트를 볼 때의 동작

  1. 웹브라우저에서 URL을 입력 또는 링크를 클릭
  2. URL에 포함된 웹서버의 호스트명을 DNS서버에 질의해 웹서버의 IP주소 해석
  3. 그 IP주소를 지정하여 웹브라우저와 웹서버 애플리케이션 간에 TCP 커넥션을 맺음
  4. HTTP Request, HTTP Response를 주고받음
  5. TCP에서 복수로 분할된 웹페이지의 파일을 조립하여 웹브라우저에 그 내용을 표시함

dns-resolverhttp-req-resp

참고 : https://velog.io/@jjewqm/네트워크-HTTP-g5k3ewsmmxopen in new window

Last Updated: