회사에 서버 개발자로 신입으로 들어가고 선임이 질문했다.
00씨 웹이 동작하는 원리를 알고 계세요???
나는 아는대로 대답은 하였고, 선임은 많이 아시네요라고 하였지만 웹 기술에 대한 지식과 개념이 너무나 부족하고 정리가 안되있어, 좀 더 공부해보았다.
1. 기본 용어 정리
- WWW (World Wide Web)
- 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간 - 인터넷
- 전 세계를 연결하고 있는 컴퓨터 네트워크 - 웹
- e-mail 과 같은 인터넷 상에서 동작하는 서비스( 웹 서버 + 웹 브라우저) - Web Server (웹 서버)
- 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML, CSS 등과 같은 웹 페이지를
클라이언트에게 보내는 컴퓨터 프로그램.
- 대표적으로, Apache(아파치), Nginx 등이 있다. - Cleint (웹 브라우저)
- 웹 서버에서 받은 HTML 문서, 이미지 등을 사용자 화면에 보여주는 소프트웨어.
- 대표적으로 익스플로러, Chrome(크롬), Firefox(파이어폭스) 등이 있다. - HTML(HyperText markup Language)
- 프로그래밍 언어는 아니며, 우리가 보는 웹 페이지를 만들기위한 마크업 언어.
- <>(꺽쇠괄호)를 사용한 태그를 이용해 표현한다. - CSS
- HTML이 웹 사이트의 몸체를 담당한다면 CSS는 옷과 액세서리 같은 꾸미는 역할을 담당한다.
- 웹 페이지의 디자인(글자 크기, 색상, 배경 색상 등)을 정의한다.
- HTML 구조는 그대로 두고 CSS 파일만 변경해도 다른 웹 페이지처럼 보여줄 수 있다. - JavaScript
- 객체기반의 프로그래밍 언어
- 웹 페이지의 동작을 담당하는 동적인 컨텐츠(멀티미디어, 움직이는 이미지 등)를 다룬다.
2. 동작 원리
①② 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함.
③ 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색함.
④ DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함.
⑤⑥ 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성함.
이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨.
⑦ 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨.
⑧ 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색함.
⑨⑩ 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성함.
이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송됨.
⑪ 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환됨.
⑫ 변환된 웹 페이지 데이터는 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨.
3. 기타 설명
- DNS (Domain Name Service)
- 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 192.168.xx.xx와 같은 숫자가 아닌
이해하기 쉬운 도메인 이름으로 변환해주는 것
- 예를들어, 인터넷에 naver를 치게되면 DNS를 통해 naver의 IP주소인 125.209.222.142 로 변환하여 연결 - HTTP (HyperText Transfer Protocol)
- 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 요청(Request)/응답(Response) 프로토콜 - TCP/IP (Transmission Control Protocol/Internet Protocol)
- 인터넷과 관련된 프로토콜들을 모은 것
- 데이터가 어떻게 웹에서 동작하는지 정의하는 통신 규약
출처
'Tool, 이론 및 기타 > 이론' 카테고리의 다른 글
Spring MVC vs Struts2 비교하기 (0) | 2022.04.21 |
---|---|
Struts2 Framework(스트럿츠2) 정리 (0) | 2022.04.21 |
[프로그래밍언어] 절차지향 vs 객체지향 vs 함수형 프로그래밍 비교 (4) | 2022.04.20 |
HTTP (2) (0) | 2020.03.01 |
HTTP (1) (0) | 2020.03.01 |