인터넷의 작동 원리
먼저, 인터넷에 연결된 각 장치는 고유한 IP 주소를 가지고 있으며, 사용자가 웹사이트에 접근할 때는 도메인 이름을 통해 IP 주소를 찾아냅니다. 이 과정은 DNS 서버를 통해 이루어집니다.
데이터는 작은 패킷으로 나뉘어 전송되며, 각 패킷은 라우터를 통해 목적지까지 전달됩니다. 이때 TCP/IP 프로토콜이 데이터를 신뢰성 있게 전달하는 역할을 합니다.
사용자가 웹사이트를 요청하면, 클라이언트는 서버에 HTTP 또는 HTTPS 요청을 보내고, 서버는 요청에 따라 웹 페이지나 데이터를 응답합니다. 이러한 모든 과정은 ISP를 통해 이루어집니다.
HTTP란?
HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 표준 프로토콜입니다. 사용자가 웹사이트에 접속할 때, 브라우저가 서버에 요청을 보내고, 서버가 그에 대한 응답을 반환하는 과정을 정의합니다.
HTTP는 비연결성과 무상태성을 특징으로 합니다. 비연결성은 요청과 응답이 끝나면 연결을 끊어 리소스를 효율적으로 관리하게 하며, 무상태성은 각 요청이 독립적으로 처리된다는 것을 의미합니다. 그래서 요청 간의 상태를 유지하려면 쿠키나 세션 같은 추가 기술이 필요합니다.
브라우저와 그 작동 원리
웹 브라우저는 사용자가 인터넷을 통해 웹 페이지를 탐색하고, 상호작용할 수 있도록 해주는 소프트웨어입니다. 브라우저의 기본 역할은 사용자가 입력한 URL을 통해 웹 서버에서 데이터를 요청하고, 그 데이터를 사용자가 볼 수 있는 형태로 렌더링하는 것입니다.
- URL 입력 및 요청: 사용자가 브라우저 주소 창에 URL을 입력하면, 브라우저는 DNS(Domain Name System)를 통해 해당 도메인의 IP 주소를 찾습니다. 이 IP 주소를 사용해 웹 서버에 HTTP(S) 요청을 보냅니다.
- 서버 응답 수신: 서버는 요청된 리소스(예: HTML 문서, 이미지, CSS 파일, 자바스크립트 파일 등)를 포함한 HTTP 응답을 브라우저에 반환합니다.
- 렌더링 엔진 작동: 브라우저의 렌더링 엔진이 서버에서 받은 HTML, CSS, 자바스크립트 파일을 파싱하여 DOM(Document Object Model) 트리, CSSOM(CSS Object Model) 트리 등을 생성합니다. 이 트리들을 결합하여 렌더 트리를 형성하고, 이를 통해 웹 페이지를 화면에 그립니다.
- 자바스크립트 처리: 브라우저의 자바스크립트 엔진은 HTML 문서 내에 포함된 자바스크립트를 실행하여, 웹 페이지의 동적 기능을 구현합니다. 이때 DOM 트리나 CSSOM 트리에 변화를 주어 페이지의 일부를 재렌더링할 수도 있습니다.
- 리소스 관리: 브라우저는 캐시와 쿠키 등을 사용하여 자주 사용하는 리소스를 저장하고, 네트워크 트래픽과 로딩 시간을 줄이는 등 효율적으로 리소스를 관리합니다.
DNS와 그 작동 원리
DNS(Domain Name System)는 인터넷에서 사용자가 쉽게 기억할 수 있는 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 시스템입니다. DNS는 인터넷의 전화번호부와 같은 역할을 합니다.
DNS의 작동 원리는 다음과 같습니다:
- 도메인 이름 입력: 사용자가 웹 브라우저에 도메인 이름을 입력하면, 브라우저는 이 도메인의 IP 주소를 알아내기 위해 DNS 요청을 시작합니다.
- 캐시 확인: 먼저, 브라우저는 로컬 캐시(컴퓨터나 네트워크에 저장된 최근 DNS 조회 결과)에서 해당 도메인의 IP 주소를 찾습니다. 캐시에 없으면, DNS 서버에 요청을 보냅니다.
- DNS 서버 요청: DNS 요청은 ISP(인터넷 서비스 제공자)의 DNS 서버로 전달됩니다. 이 서버도 캐시를 가지고 있으며, 만약 여기서도 IP 주소를 찾지 못하면, 루트 네임 서버로 요청이 전달됩니다.
- 루트 네임 서버: 루트 네임 서버는 최상위 도메인(TLD) 서버로 요청을 안내합니다. 예를 들어, 'example.com'의 경우 '.com' TLD 서버로 요청이 전달됩니다.
- TLD 서버: TLD 서버는 해당 도메인에 대한 권한이 있는 권한 있는 네임 서버(Authoritative Name Server)의 주소를 반환합니다.
- 권한 있는 네임 서버: 최종적으로, 권한 있는 네임 서버가 도메인 이름에 대한 IP 주소를 반환합니다. 이 IP 주소는 사용자의 브라우저로 돌아가고, 브라우저는 이 주소를 사용해 해당 웹 서버에 연결하여 웹 페이지를 요청합니다.
- 결과 캐싱: 이 과정에서 얻은 IP 주소는 다시 브라우저나 로컬 시스템에 캐시되어, 다음에 동일한 도메인에 접속할 때 더 빠르게 연결할 수 있도록 합니다.
도메인 이름의 구조
도메인 이름은 여러 부분으로 나뉘며, 각각의 부분은 점(.)으로 구분됩니다. 예를 들어, www.example.com이라는 도메인 이름은 다음과 같은 구성 요소로 이루어져 있습니다:
- 최상위 도메인(TLD): 도메인의 가장 오른쪽 부분으로, com, org, net 같은 일반적인 TLD뿐만 아니라, kr, jp 같은 국가 코드 TLD도 있습니다.
- 2차 도메인(Second-level Domain): TLD 왼쪽에 위치하며, 웹사이트의 이름을 나타내는 부분입니다. 예를 들어, example이 2차 도메인입니다.
- 서브도메인(Subdomain): 필요에 따라 2차 도메인 왼쪽에 추가될 수 있는 부분으로, www가 서브도메인의 예입니다. 서브도메인은 동일한 도메인 내에서 다른 서비스를 구분하는 데 사용됩니다.
호스팅이란?
호스팅(Hosting)이란 웹사이트나 애플리케이션이 인터넷에서 접근 가능하도록 서버 공간과 관련 서비스를 제공하는 것을 의미합니다. 웹사이트를 운영하려면 HTML 파일, 이미지, 동영상, 데이터베이스 등 다양한 데이터를 저장하고 관리할 서버가 필요합니다. 호스팅 서비스는 이러한 서버를 제공하여, 사용자가 자신의 컴퓨터를 서버로 운영할 필요 없이 웹사이트를 운영할 수 있도록 돕습니다.
'WIL > 스터디' 카테고리의 다른 글
PintOS의 메모리에 관한 공부 (0) | 2024.09.10 |
---|---|
OS 지식 (0) | 2024.08.27 |
Thread & Process (0) | 2024.08.25 |
Malloc Lab (0) | 2024.08.25 |
Virtual Memory (0) | 2024.08.23 |