[ Server ] 주소 창에 URL를 입력했을 때 일어나는 일

5tr1ker·2023년 7월 3일
0

Server

목록 보기
5/10
post-thumbnail

용어

- DNS ( Domain Name system Server )

도메인 이름 시스템 서버는 도메인 이름에 매핑되는 IP 주소를 저장하는 서버입니다.
숫자로 된 주소 ( ex. 112.451.562.53 ) 를 사용자가 편리하게 www.domain.com 처럼 도메인으로 매핑해 주는 역할을 합니다.

- TCP / IP ( Transmission Control Protocol / Internet Protocol )

전송 제어 규약인터넷 규약은 웹 환경에서 데이터가 어떻게 전송되는지 정의하는 통신 규약입니다.
이는 IP 주소 체계를 따르며 TCP 의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지하는 역할을 합니다. 즉 송신자는 수신자에게 IP 주소를 활용하여 데이터를 전송하고 전송됐는지 확인합니다.

더 자세히 말하면 TCP는 전송 제어 규약으로 데이터의 전송을 제어하고 어떻게 주고 받을 지 정합니다. IP의 특징인 비연결성과 비신뢰성으로 IP 만으로 통신을 하기 어려워, 신뢰성과 연결성을 위해 TCP를 활용하여 통신을 합니다.

- HTTP ( Hypertext Transfer Protocol )

클라이언트와 서버가 통신하기 위해 정의한 규약으로 요청과 응답으로 나뉘어져 있습니다.

웹 동작 방식

1. 클라이언트가 검색창에 URL를 입력

2. 웹 브라우저는 캐싱된 DNS 기록을 통해 해당 도메인 주소에 매핑되는 IP 주소를 탐색

이때 캐싱된 DNS 기록이 있다면 3번 4번의 과정은 생략됩니다.

3. 웹 브라우저가 HTTP를 이용하여 DNS 에게 도메인 주소를 요청

4. DNS는 해당 도메인 주소에 매핑되는 IP주소를 응답

ISP ( Internet Service Provider ) 를 통해 DNS 서버가 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS Query를 날립니다.

ISP 의 예시로 SK 브로드밴드 , KT.. 등을 들 수 있습니다.

이때 DNS Query는 해당하는 IP 주소를 찾기위해 여러 DNS 서버를 거치게 되는 Recursive Query를 수행합니다.

이때 도메인 주소에 점.를 기준으로 뒤에서부터 해당 도메인에 맞는 Local DNS 부터 탐색하며 root DNS 가 나올때 까지 탐색합니다.

Recursive Query는 정확히 Local DNS 서버가 여러 DNS 서버를 거쳐 답을 찾는 과정을 말합니다. 아래의 그림처럼 도메인 주소인 download.microsoft.com 에 매핑되는 IP 주소를 찾기 위해서 .com -> microsoft.com -> download.microsoft.com 순으로 탐색을 합니다.

5. 웹브라우저가 IP주소를 이용하여 웹서버에게 HTML 문서를 요청

TCP/IP를 이용하여 웹 브라우저가 GET 요청을 통해 해당 도메인 서버의 HTML 문서를 요청합니다.

6. 웹 어플리케이션 서버 ( WAS ) 와 데이터베이스가 웹 페이지 작업을 우선 처리

요청을 받으면 웹 서버는 로직이나 데이터베이스의 연동을 위해 WAS 에게 요청을 합니다.
그러면 WAS 동적인 페이지 처리와 DB 에서 필요한 정보를 처리합니다.

7. 위의 작업 결과를 웹 서버로 전송

8. 웹 서버는 웹 브라우저에게 HTML 를 응답

이때 Response 로 Status Code 를 함께 보냅니다.

9. 화면에 웹페이지를 출력

웹 서버 : 정적인 파일을 처리 ( HTML , CSS , 이미지 )
WAS : 동적인 파일을 처리 ( PHP , JS , TS ) 를 처리

웹 서버 혼자서 비즈니스 로직을 수행하고 데이터를 관리할 수 있지만 서버에 부하가 일어날 수 있기 때문에 이를 대신 처리하는 웹 어플리케이션 서버 ( WAS ) 를 사용합니다. 즉 WAS는 사용자의 컴퓨터나 장치에 웹 어플리케이션을 수행하는 미들웨어입니다.

참고

참고 블로그 1 : 링크
참고 블로그 2 : https://superohinsung.tistory.com/85
참고 블로그 3 : 링크

profile
https://github.com/5tr1ker

0개의 댓글