WEB 의 동작 방식

이종민·2021년 5월 26일
0

WEB

목록 보기
2/3

오늘은 위코드 사전코스 4주차 웹에 관한 주제로 벨로그를 작성하려고 한다. 자바스크립트와 웹을 함께 진행하며 자바스크립트에 중점을 두는 공부로 방향을 잡았고 오늘은 웹의 역사에 이어서 동작방식에 대해서 알아보려 한다.

아래의 그림을 보자.

아래처럼 웹에 연결된 '클라이언트''서버' 가 존재합니다.

'클라이언트(Client)' 는 간단하게 우리가 인터넷에 접속하는 장치, 대표적으로 컴퓨터와 핸드폰이 있다. 그리고 그 장치 안의 웹에 접근하기 위한 소프트웨어, 대표적으로 크롬과 사파리를 들 수 있겠다.

'서버(Server)' 는 우리가 보는 웹사이트, 그리고 앱들의 정보를 저장하는 컴퓨터 이다. 클라이언트 쪽에서 웹사이트에 접속할 때 서버에 저장된 웹페이지의 사본을 다운받는 방식이다.

큰 틀에서 위와 같은 방식으로 작동하지만 이건 너무나 간략한 설명이다. 우리가 웹페이지의 주소를 입력했을 때 어떻게 구동되는지 디테일하게 들어가보겠다.

우리가 크롬이나 사파리에 웹페이지의 주소를 입력하면

1. 브라우저에서 DNS서버에서 웹페이지 서버의 진짜 주소를 찾는다.

2. 이후에 브라우저는 서버에 있는 웹페이지의 사본을 보내는 HTTP 요청 메세지를 서버에 전송한다. 여기서 클라이언트와 서버 간 전송된 모든 데이터는 TCP/IP 연결을 통해서 전송됩니다.

3. 서버가 클라이언트의 요청에 응하면, '200 OK' 메세지를 클라이언트에게 전송한다. '200 OK''요청이 성공적으로 수행되었음' 이라는 의미이다. 승인 이후 서버는 웹페이지의 파일들을 데이터 패킷이라 불리는 작은 덩어리들로 브라우저에 전송한다.

4. 브라우저는 데이터 패킷들을 받아 완전한 웹페이지를 완성하고, 브라우저에 웹페이지를 띄웁니다.

우리가 인터넷에서 볼 수 있는 웹페이지는 우리 앞에 구현된다. 간단히 비유하면 흡사 우리가 물건을 주문하고 받는거랑 비슷하다. 우리가 쇼핑몰에서 원하는 물건을 입력하여 주문하면 쇼핑몰 측에서 확인 후 재고를 파악하여 원하는 물품을 포장하여 보내고 우리는 그것을 받아 개봉하여 확인하는 것과 비슷하다.
원리는 알았으나 위의 구동방식에서 비전공자 입장에서 생소해 보이는 단어가 많이 등장하였다. 이 단어들에 대해서 알아보겠다. 클라이언트와 서버를 이해하는 데 필요한 단어들이라고 볼 수 있다.

TCP/IP (Transmission Control Protocol / Internet Protocol)
Transmission Control Protocol (전송 제어 규약) 과 Internet Protocol (인터넷 규약) 이다. 이는 풀어쓰자면 상당히 길고 어려운 개념이나 간단히 설명하자면 현재 인터넷의 기본은 패킷 통신이다. TCP/IP 는 패킷 통신을 위한 인터넷 규약이다. IP는 데이터 패킷을 보낼 때 순서에 상관없이 그저 빠르게 보내는 것에 집중하며, TCP는 IP와 다르게 꼼꼼하게 패킷을 정렬하고 누락된 것을 다시 받는 행위를 한다. 이 둘을 합쳐서 하는 방식을 TCP/IP 로 부른다.

DNS (Domain Name System Servers)
Domain Name System Servers (도메인 이름 시스템 서버) 는 웹사이트를 위한 주소록이다. DNS는 영문/한글 주소를 IP 네트워크에서 찾아갈 수 있는 IP로 변환해 준다. 도메인 주소와 IP 주소를 서로 변환하는 역할을 한다고 볼 수 있다. 모든 웹사이트 주소르 IP로 가진 주소록으로 생각하면 편할 것이다.

HTTP (Hypertext Transfer Protocol)
Hypertext Transfer Protocol (하이퍼텍스트 전송 규약) 은 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로 즉, HTTP는 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해놓은 규칙이다.

위의 원리를 이해하기 위해서 나온 단어 중에 비전공자 입장에서 생소할 수 있는 개념을 내 이해와 인터넷 자료들을 바탕으로 정리하였다.

이로써 웹의 역사에 이어서 웹의 동작 방식을 정리해보았다. 자료 자체는 적지만 이는 겉만 간단히 정리하는 것이기 때문에 쉽게 느껴지는 것이라고 생각한다. 아마 웹프로그래밍에 제대로 발을 들인다면 상당히 복잡해질 것 같다.

0개의 댓글