웹사이트는 어떻게 생겼을까?


웹사이트란 웹서버 애플리케이션이 공개하는 다양한 웹페이지의 집합이다. 웹사이트를 만들려면 웹서버에 애플리케이션을 설치하고 공개할 웹페이지를 결정하고 페이지는 다음과 같은 정적 리소스들을 가지고 만든다.

  1. HTML(Hyper Text Markup Language)
  2. CSS (Cascading Style Sheet)

Network_website

URL 의 의미

<스킴>://<호스트명>/<경로명>
  1. 스킴 : 웹브라우저가 웹서버의 데이터에 접속하기 위한 프로토콜
  2. 호스트명은 호스트명에서 IP 주소로 변환하는 DNS 이름해석이 내부적으로 이루어진다.

    호스트명 뒤에는 포트번호가 이어지지만 대부분 생략한다. 생략한 경우는 지정된 스킴의 웰노운 포트를 사용. HTTP는 80, HTTPS는 443

    Network_url

요청

웹페이지 파일 전송에 이용하는 TCP/IP의 애플리케이션층 프로토콜은 HTTP이다. 암호화하는 경우는 HTTPS를 사용한다.

HTTP는 트랜스포트층의 프로토콜로서 TCP를 이용하므로, HTTP 통신을 하기 전에 TCP 커넥션을 맺는다.

HTTP 리퀘스트는 리퀘스트 라인, 메시지 헤더, 엔티티 바디의 세부분으로 나뉜다. (메시지 헤더와 엔티티 바디 사이에는 공백 라인이 있다.)

  1. 리퀘스트 라인 : 리퀘스트의 첫번째 줄로, 웹서버에 대한 실제 처리 요청을 전달한다.
    1. 메소드 : 서버에 대한 요청으로 다음과 같은 주요 메서드들이 있다.
      • GET : URI로 지정한 데이터를 가져옴
      • HEAD : URI로 지정한 데이터의 헤더만 가져옴
      • POST : 서버에 데이터를 보냄
      • PUT : 서버에 파일을 보냄
      • DELETE : 서버의 파일을 삭제하도록 요청
      • CONNECT : 프록시 서버를 경유하여 통신
    2. URI
    3. 버전 : HTTP의 버전을 나태니며 주요 버전은 1.0 이나 1.1이다.
  2. 메세지 헤더 : 요청라인에 이어지는 여러줄의 텍스트로 웹브라우저의 종류, 버전, 대응하는 데이터형식등의 정보를 기술
  3. 공백라인
  4. 엔티티바디 : POST 메소드로 웹브라우저에서 데이터를 보낼때 사용한다.

Network_req

응답

HTTP 리스폰스는 HTTP 리퀘스트와 비숫하게 리스폰스 라인, 메시지 헤더, 엔티티 바디로 구성된다.

  1. 리스폰스 라인
    1. 버전 : HTTP의 버전을 나태니며 주요 버전은 1.0 이나 1.1이다.
    2. 상태코드 : 웹서버 애플리케이션의 처리 결과를 나타내는 3자리로 된 숫자로 왼쪽표의 앞자리에서 대략적인 의미가 정해진다. 보통 요청이 정상적으로 처리되면 웹브라우저에는 요청한 내역이 보임으로 200 코드 자체를 사용자가 보는 일은 거의 없다.
    3. 설명문
  2. 메시지 헤더: 웹서버 애플리케이션이 더 자세한 정보를 웹브라우저에 전달하기 위해 이용한다. 예를 들어 데이터 형식, 갱신 날짜 등이 기술된다.
  3. 공백라인
  4. 엔티티바디

Network_res Network_res_code

쿠키

HTTP 쿠키는 웹서버 애플리케이션이 웹브라우저에 특정 정보를 저장해 두는 기술로 웹 서버 애플리케이션은 웹브라우저의 요청에 대한 HTTP 리스폰스에 쿠키를 포함하여 내보낸다. 쿠키 정보는 HTTP 헤더에 포함된다.

웹브라우저가 쿠키를 받을 수 있게 설정되어 있으면 수신한 쿠키를 저장하고, 그 뒤로 같은 웹사이트에 접속할 때는 HTTP 리퀘스트에 쿠키도 함께 포함된다. 쿠키를 이용하여 웹서버는 사용자의 로그인 정보나 사이트 내 웹페이지 열람 이력을 관리할 수 있다.

크롬의 경우 chrome://settings/content/cookies 에서 ‘모든 쿠키 및 사이트 데이터 보기’에서 확인할 수 있다.

프록시 서버

프록시 서버를 사용하는 목적

  1. 캐시 데이터 사용 : 프록시 서버 중 일부는 프록시 서버에 요청된 내용을 캐시를 사용해 저장해둔다. 캐시에 저장되어 있는 내용에 대한 재요청은 서버에 접속할 필요 없다 저장된 내용을 돌려주면 되어서 전송 시간을 절약할 수 있고, 네트워크 병복 현상을 방지할 수 있다.
  2. 보안 : 프록시 서버가 중간에 경유하게 되면 IP를 숨기는 것이 가능하기 때문에 프록시 서버를 방화벽으로 사용하기도 한다.
  3. 접속 우회

    간혹 한국에서 접속이 제한되는 사이트가 있는데 IP를 검사해 한국에서 접속임을 감지하기 때문이다. 프록시 서버를 사용하면 접속을 다른 나라로 우회할 수 있어 서버에서 접속한 것처럼 속일 수 있다. (우회에 사용할 서버 주소와 포트를 구한 후 ‘인터넷옵션>연결>LAN설정>프로시설정’에서 서버주소와 포트를 설정해주면 된다.

사용 예

  1. 관리자 입장에서 보는 프록시 서버의 목적
    기업 네트워크에서 프록시 서버를 도입하는 경우가 있는데 주로 이유는 다음과 같다.
    • 접속하는 웹사이트 확인 : 업무와 관계없는 웹사이트 접속?
    • 부정한 웹사이트 접속 방지 : 웹 사이트에 대한 접속 제한을 URL 필터링 또는 웹 필터링이라고 부른다.

Network_proxy