작성자 프로필
mouuaw
코드 깎는 다람쥐
2022.11.24

3.1 웹을 구성하는 구조

3.1.1 웹과 네트워크

웹은 WWW이라는 인터넷에서 제공되는 하이퍼텍스트 시스템입니다.

하이퍼텍스트란 문서 안에 다른 문서의 위치 정보를 포함시켜 정보를 연관 지어(하이퍼링크) 참조할 수 있게 만든 문서입니다. 이 개념을 인터넷상에 실현한 것이 웹입니다.

웹은 HTML로 대표되는 하이퍼텍스트 언어와 네트워크인 인터넷이 융합하여 탄생했습니다.

3.1.2 클라이언트와 서버

웹은 대부분 서비스를 제공하는 쪽(서버)과 서비스를 받는 쪽(클라이언트)로 나뉩니다.

서버에 시스템을 설치하고 사용자는 클라이언트에서 서버에 액세스 할 수 있습니다.

3.1.3 웹 서버

웹 서버는 정보를 전송하거나 서비스를 제공하려고 24시간 365일 계속해서 동작하는 컴퓨터를 의미합니다. 아파치나 Nginx 처럼 컴퓨터상에서 웹 서버 기능을 제공하는 애플리케이션을 가리켜 웹 서버로 지칭할 때도 있습니다.

웹 서버의 가장 기본적인 역할은 웹 페이지를 공개하는 것입니다. HTML로 작성된 문서를 인터넷에 공개하는 역할을 담당합니다.

3.1.4 HTTP와 HTTPS

HTTP는 서버와 클라이언트 사이에서 데이터를 주고받는 프로토콜 입니다. 웹의 이용범위가 확대되면서 입력된 데이터를 웹 서버에 전송할 때 암호화할 필요가 생겼습니다. 그래서 생긴것이 HTTPS 프로토콜 입니다.

HTTPS는 SSL/TLS 구조로 구현되었습니다. SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷에서 통신을 암호화하여 제삼자가 통신 내용을 훔쳐보거나 조작할 수 없게 하는 기술입니다.

3.1.5 SSL 인증서

SSL/TLS를 웹 사이트에서 이용하려면 SSL 인증서가 필요합니다. SSL 인증서란 인증기관(CA) 이라는 신뢰할 수 있는 제삼자 기관이 이용자(도메인 소유자)에게 발행하는 것입니다.

SSL 인증서의 역할

SSL 인증서는 다음 세 가지 목적으로 이용합니다.

1. 데이터 암호화: SSL 인증서에 포함되는 공개 키를 사용함으로써 암호화 통신을 위한 비밀 키를 안전하게 교환할 수 있고, 암호화 통신을 실현할 수 있습니다.

2. 도메인 소유 증명: SSL 인증서로 해당 도메인은 A가 소유하는 도메인이라는 것을 제삼자인 인증 기관에서 보증합니다.

3. 데이터 변조 방지: 제삼자 기관이 보증하는 인증서로 암호화된 통신은 변조되지 않고 확실하게 A의 정보임을 보증합니다.

인증 기관 신뢰

인증 기관은 인증 기관 운용 규정 (CPS, Certificate Practice Statement) 이라는 문서를 공개하여 보안 정책을 규정하고, 본사를 둔 국가의 정부 등이 이 문서를 인증함으로써 우리는 인증 기관을 신뢰할 수 있습니다.

인증 레벨에 따른 종류
도메인 인증(DV) 도메인에 등록된 등록자를 확인하고 발행하는 인증서입니다. 도메인 소유만 확인할 뿐 도메인 및 인증서 소유자를 인증하는 것은 아닙니다. 발행 속도가 빠르고 가격이 저렴하여 개인 사이트뿐만 아니라 기업체, 각종 미디어 등에 폭넓게 이용됩니다.
기업 인증(OV) 도메인과 더불어 웹 사이트를 운영하는 조직의 실재성을 인증하는 인증서 입니다. 인증서 발생처가 운영 조직의 실재성을 인증하기 때문에 개인 정보나 신용 카드 정보 등 민감한 정보를 주고받는 웹 사이트 등에 이용됩니다.
EV 인증(EV) 기업의 실재성과 더불어 소재지를 인증합니다. 인증서로 웹 사이트 운영 조직을 확인할 수 있습니다. 기업의 실재성을 인증한다는 점에서 기업 인증과 같다고 생각할 수 있습니다. 그러나 소재지 확인 등 더욱 엄격한 심사를 거치고 시각적으로도 확인할 수 있어 개인 정보나 신용 카드 정보 등 민감한 정보를 주고받는 웹 사이트와 온라인 뱅킹 및 금융 기관과 연계되는 핀테크 서비스를 제공하는 사이트에 이용됩니다.

3.1.6 URL과 DNS

URL

URL(Uniform Resource Locator)은 인터넷상에서 HTML이나 이미지 등 리소스 위치를 특정할 수 있는 서식으로 탄생했습니다.

URL의 기본 서식은 스킴(프로토콜 + ://) 과 서버 주소 (또는 호스트 이름 + 도메인)에 디렉토리명이나 파일 이름을 /로 이어붙인 형태입니다.

DNS

웹 사이트 주소를 IP 주소로 표현한다면 기억하기 어려울 것입니다. 호스트 이름과 도메인으로 바꾸어 사용할 수 있도록 하면 주소를 기억하기 쉽습니다. 하지만 특정 주소로 접근하려면 IP주소는 반드시 필요하므로 어떤 도메인에 접근할 경우 해당 도메인의 IP주소로 연결해주는 시스템이 필요합니다. 그 시스템이 DNS(Domain Name System) 입니다.

DNS는 인터넷상의 거대한 분산 데이터베이스라고 할 수 있습니다. DNS는 콘텐츠 DNS 서버와 캐시 DNS 서버 두 가지로 구성됩니다. 콘텐츠 DNS 서버는 각 도메인의 바탕이 되는 기본 정보를 가지고 있고, 캐시 DNS 서버는 컴퓨터나 휴대 전화 등 클라이언트가 문의하면 콘텐츠 DNS 서버를 찾아 정보를 요청합니다. 캐시 DNS 서버는 콘텐츠 DNS 서버의 조회 결과를 바탕으로 클라이언트에 정보를 전달합니다.

3.2 도메인

도메인이란 인터넷상 주소로, 글로벌 IP주소를 가진 서버가 어디에 있는지 판단하는 정보로 이용됩니다.

3.2.1 도메인 관리 기관

도메인을 전 세계적으로 관리하는 곳은 ICANN이라는 비영리 단체입니다. 그 밖에 도메인을 다루는 조직으로 레지스트리와 레지스트라가 있습니다.

레지스트리는 도메인 관리 기관으로, 각 도메인 정보의 데이터베이스를 관리합니다. 레지스트리에 따라서 관리하는 도메인이 달라집니다.

레지스트라는 도메인 중개 등록 업체로, 레지스트리가 관리하는 데이터베이스에 직접 도메인 정보를 등록할 수 있습니다. 도메인을 이용하려면 도메인 이름의 소유자가 누구인지, 어느 DNS서버에서 관리되는지 같은 정보를 레지스트리 데이터베이스에 기록해야 합니다. 이용자가 신청한 정보는 레지스트라를 경유하여 레지스트리의 데이터베이스에 기록됩니다.

3.2.2 도메인 종류

도메인은 크게 두 종류로 나뉩니다. gTLD(generic Top Level Domain) 와 ccTLD(country code Top Level Domain) 입니다. 둘 다 ICANN이 관리하지만, 도메인 등록 업무 및 데이터베이스 관리 같은 실제 운영 업무는 레지스트리에 위임합니다.

gTLD

gTLD는 전 세계에 등록이 개방된 .com .net .org 와 등록 제한이 있는 .edu .gov .int .mil 이렇게 일곱 가지 종류로 시작되었습니다. 2000년, 2003년에 더 추가되었지만 2012년부터는 새롭게 창설하는 gTLD 수에 제한을 두지 않고 기술적, 재무적 요건을 충족하는 조직이라면 신청이 가능해져 지금은 매우 많은 gTLD가 존재합니다.

국내 ICANN 인증 레지스트라로는 가비아, 예스닉, 후이즈 등이 있습니다.

ccTLD(국가 코드 최상위 도메인)

ccTLD는 .kr .us .uk .tv 등 전 세계에 200가지 이상이 있으며, 원칙적으로 그 나라에 사는 사람을 대상으로 합니다. 하지만 어디까지나 원칙이며, 운영은 각국 네트워크 정보 센터(NIC)에 위임하여 다른 나라 사람에게도 도메인을 개방할 수 있습니다.

대한민국의 ccTLD는 .kr이며, 한국인터넷진흥원(KISA)이 레지스트리로서 운영하고 있습니다.

3.2.3 DNS 전환

시스템 전환 작업이나 서버 교체 등 IP주소가 변경되는 사례는 많이 있습니다. 이때 DNS 설정도 함께 변경해야 합니다.

DNS는 거대 분산 데이터베이스입니다. 원본 데이터는 콘텐츠 DNS 서버가 가지고 있지만, 인터넷상에 여러 개 존재하는 캐시 DNS 서버에도 복사된 정보가 있습니다. 이 캐시를 얼마나 보관할지는 콘텐츠 DNS 서버에 있는 원본 데이터에 정의되어 있습니다.

이처럼 캐시 DNS서버에서 캐시가 사라지고 새로운 정보를 취득할 때 시차가 생깁니다. DNS 정보는 스위치처럼 바로 전환 할 수 있는 것은 아니고, 새로운 정보가 도달하기까지 시간이 걸립니다. 원래대로 되돌릴 때도 동일하기 때문에 서버 전환에 실패하고 다시 되돌릴 때도 마찬가지로 시차가 발생합니다.

3.3 HTTP와 웹 기술

3.3.1 HTTP

HTTP는 웹 브라우저와 웹 서버 간의 상호작용을 지원하는 프로토콜입니다. HTTP는 데이터를 요청하는 HTTP 요청과 그에 응답하여 데이터를 보내는 HTTP 응답 이라는 두 가지 상호 작용을 반복하여 웹 페이지를 표시합니다.

HTTP 요청에는 메서드와 대상 이름이 포함됩니다. 메서드의 종류 중 대표적인 것은 다음과 같습니다.

GET: 리소스를 가져오도록 웹 서버에 요구합니다.
POST: 웹 서버에 데이터를 송신합니다.
PUT: 웹 서버에 파일을 업로드 합니다.

HTTP 응답은 처리 결과를 나타내는 상태 코드와 헤더, 응답 데이터가 포함됩니다. 주로 사용되는 응답코드는 다음과 같습니다.

200: 요청이 성공했음
403: 액세스 거부. 액세스 권한이 없는 웹 페이지에 접근하는 경우 접근 거절
404: 웹 페이지를 찾을수 없음
408: 요청시간 초과
500: 서버 오류. 서버에서 제어되지 않은 에러
503: 서비스 이용 불가. 일시적인 과부하 또는 유지 보수로 서비스 이용할 수 없음

3.3.2 쿠키와 세션

세션은 웹 사이트를 방문해서 수행하는 일련의 행동입니다.

HTTP는 상태 비저장(상태에 대한 정보를 유지하지 않는) 프로토콜 입니다. 하지만 사이트 내에서 사용자의 정보를 저장하려면 사용자의 데이터를 저장해서 유지해야 합니다.

그래서 사용되는 것이 쿠키(cookie) 입니다. 쿠키란 웹 사이트를 열람한 사용자 정보를 클라이언트가 보관하고, 두 번째 액세스부터는 그 정보를 클라이언트가 서버로 보냅니다. 그러면 서버에서는 사용자를 식별할 수 있어서, 사용자에게 맞는 서비스를 제공할 수 있게됩니다.

세션을 실현하기 위해선 쿠키에 세션ID를 저장합니다. 해당 세션ID를 통해 사용자를 식별하고, 요청에 대한 작업을 수행합니다.

3.3.3 인증

인증은 시스템을 사용할 때 필요한 본인 확인 절차입니다. 보통은 ID, Password 를 통해 로그인을 수행하게 됩니다.

최근에는 다요소 인증(MFA)이라고 하는 일시적으로 발행되는 일회용 패스워드(one-time password)를 입력하는 인증 방식도 사용됩니다.

인증 요소를 늘리면 보안이 강화됩니다. 일회용 패스워드에는 휴대 전화 SMS로 전송되는 것, 전용 일회용 패스워드 이용, 물리적 하드웨어 토큰 사용 등 여러 종류가 있습니다.

또 특정 서비스의 자격증명을 사용하는 로그인 위임 인증 메커니즘도 있습니다. 이런 기술을 OAuth라고 합니다.

기업 시스템의 예

한때 기업의 사내 시스템은 시스템마다 ID와 암호 데이터베이스를 가지고 있는 것이 대부분이었습니다. 그러나 최근에는 Active Directory 나 LDAP 라는 인증 기반과 연계되어 ID와 암호 하나만 있으면 사내의 어떤 시스템에도 로그인할 수 있습니다.

메일 전송 프로토콜(SMTP)의 예

예전에는 메일 전송 프로토콜인 SMTP에 이메일을 보내는 인증 메커니즘이 없었습니다. 이것이 스팸 메일이 대량으로 발생된 원인 중 하나로, 그 대책으로 이메일을 보내기 전에 인증하여 본인을 확인하는 SMTP Auth라는 인증 기술이 생겨났습니다.

SMTP Auth 기술은 나중에 생겨서 모든 메일 서버가 이 인증 방식을 지원하는 데는 시간이 걸렸습니다. 따라서 SMTP Auth로 이행하는 과도기 때 이메일 수신 프로토콜인 POP 인증을 이용하여 POP 인증에 성공한 경우에만 이메일 전송을 허용하는 POP before SMTP 기술이 만들어졌습니다.

3.3.4 새로운 기술: HTTP/2, Ajax, Web API

HTTP/2

HTTP/2 는 새로운 규격의 HTTP 입니다. HTTP/2 는 구글 중심으로 개발된 SPDY가 기반이 됩니다.

기존 HTTP/1.1 사양에는 다음과 같은 몇 가지 문제가 있었습니다.

한 번에 파일 하나밖에 가져올 수 없다 js, css, 이미지 등 HTML에서 사용되는 다양한 리소스를 가져오는데 시간이 걸립니다. 병렬적으로 리소스를 요청할 수 있으나 접속 수에 제한이 있고 오버헤드가 큽니다.
프로토콜이 텍스트 기반이다: 텍스트를 데이터화 하는데 시간이 걸립니다.
파일을 가져올 때마다 거의 같은 HTTP 헤더를 송수신한다: 같은 내용을 송수신하는 만큼 오버헤드가 커집니다.

이런 문제점을 받아들여 HTTP/2는 HTTP와 호환성을 유지하면서 새로운 전송 수단을 제공하여 기존 문제점을 해결하고 좀 더 적은 통신량으로 더 신속하게 주고받을 수 있도록 설계되었습니다.

HTTP/2 사양에는 TLS로 암호화된 통신(h2)과 평문 통신(h2c) 두 가지가 정해져 있지만, 파이어폭스, 크롬, 엣지 등 주요 웹 브라우저는 h2만 지원하고 h2c는 지원하지 않습니다. 사실상 h2가 필수 요건이므로 HTTP/2로 웹 콘텐츠를 전달하려면 SSL/TLS가 꼭 필요하다고 할 수 있습니다.

Ajax

웹 편의성을 높이기 위한 기술입니다.

ajax는 웹 페이지 전환 없이 데이터를 송수신할 수 있는 기술로써 XMLHttpRequest 기술을 사용합니다.

또한 XMLHttpRequest로 비동기 통신은 구현할 수 있지만 양방향 통신은 어려웠는데, 이런 점을 해결하고자 웹소켓이라는 기술도 탄생했습니다.

Web API

최근에는 각사의 웹 애플리케이션 기능이 Web API로 제공됩니다. Web API는 사용자 조작과 상관없이 어떤 웹 애플리케이션에서 다른 웹 애플리케이션을 조작할 수 있는 인터페이스 입니다.

대표적인 예로 네이버 api, 카카오 api 등이 있습니다.

스터디 프로필
코드 깎는 다람쥐
의 다른 카테고리
0
👍0
👏0
🤔
댓글 작성