브라우저 주소창에 특정 사이트 주소를 입력했을 때 일어나는 일에 대해 알아보자 ❕
이해를 위해 먼저 IP, 도메인, DNS 개념을 공부해보자
1. IP (Internet Protocol)
IP는 인터넷에 연결된 장치들 간의 정보를 원활하게 주고받기 위해 정한 규약이다.
IP주소
인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰 등)들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는데 이를 IP주소라고 한다. 인터넷의 모든 장치에는 고유한 IP주소가 할당되며 이는 *ISP(Internet Service Provider)에 의해 할당되는 주소이다.
IP주소는 IPv4, IPv6 두 가지 버전이 있는데, IPv4주소는 .
으로 구분되어 xxx.xxx.xxx.xxx
(xxx = 0~255) 형식의 숫자 4개로 표현한다. IPv4주소 공간부족 문제로 생겨난 IPv6주소는 :
으로 구분되어 16진수 8개로 표현한다.
*ISP(Internet Service Provider)?
통신사 같이 사용자에게 인터넷 서비스를 제공하는 업체들을 말한다. 사용자들이 인터넷에 접속할 때 중간 매개체로서 역할을 하며, 사용자가 데이터를 주고받을 수 있도록 도와준다.

터미널에서 `ping google.com`을 입력해 google의 ip주소를 확인하면 `142.251.42.206`를 사용하는 것을 알 수 있다.
2. 도메인 (domain)
인터넷 주소. 인터넷에서 리소스를 식별하기 위한 문자열로, IP 주소를 찾기 위한 이름이다. 우리가 구글에 접속하려면 142.251.42.206
같이 IP 주소를 입력하지 않고 google.com
혹은 www.google.com
을 입력해 접속하는데, 이런 문자열을 도메인이라고 한다. IP주소는 기억하기 어렵기 때문에 문자열 인터넷 주소인 도메인을 사용하는 것이다.
www
: 서브도메인google
: 도메인 이름com
: 최상위 도메인
URL과 차이? URL은 도메인을 포함한 경로이다. https://www.google.com
전체 주소는 URL, www.google.com
을 도메인으로 분류할 수 있다.
3. DNS (Domain Name System)
DNS는 도메인 이름과 IP 주소를 저장하고 있는 분산 데이터베이스로, 웹사이트를 위한 주소록이라고 생각하면 된다. 인터넷에서 도메인 이름을 IP 주소로 변환해주거나, 그 반대로 IP 주소를 도메인 이름으로 변환해준다.

우리가 웹브라우저에서 google.com를 입력하면 크게 다음과 같은 과정을 거치게 된다.
- DNS서버에 접속해 도메인(
google.com
)과 매핑된 IP 주소(142.251.42.206
)를 확인 - 해당 IP를 사용자 PC에 전달
- 사용자 PC는 전달받은 IP 주소로 접속
- IP에 연결된 브라우저에 서버의 내용을 출력

DNS는 하나의 서버로 이루어지지 않고 계층적으로 구성된다. 도메인을 .
로 구분해 최상위 도메인
, 도메인 이름
, 서브도메인
까지 DNS 서버에 순차적으로 방문하여 IP주소를 찾는다.
- 최상위 도메인(Top-Level Domain, TLD) : 인터넷 계층 구조에서 가장 높은 수준의 도메인이다. 'com', 'org'과 같은 일반 최상위 도메인, 'kr', 'uk'과 같은 나라 코드 최상위 도메인이 있다.
- 도메인 이름(Domain Name) : 최상위 도메인 아래에 위치하며, 특정 조직이나 서비스를 식별하는데 사용한다. 'google', 'naver' 등이 있다.
- 서브도메인(Subdomain) : 도메인 이름 아래에 위치하며, 추가적으로 식별하는데 사용한다. 도메인 등록 기관에 등록되어 있는 하나의 루트 도메인을 목적에 맞게 분리하고 싶을 때 사용한다.
https://news.naver.com
,https://shopping.naver.com
에서 'news', 'shopping'은 'naver.com'의 서브도메인이다.
DNS 동작 원리
앞서 설명한 것처럼 우리가 웹브라우저에서 도메인명을 검색하면 DNS 서버로 가서 도메인과 일치하는 IP 주소를 알려주고, 우리는 다시 그 IP 주소로 접속해 홈페이지가 열린다.
그럼 DNS 서버는 IP주소는 어떻게 얻는 걸까?

- 사용자가 웹 브라우저에서 도메인 이름을 검색하면
로컬 DNS 서버
에게 질의를 보낸다. (로컬 DNS 서버는 사용자가 속한 지역이나 조직 내에 위치하며, 일반적으로 ISP나 기업 네트워크에서 관리하는 서버이다) - 로컬 DNS 서버는 먼저 자신의 캐시에서 해당 도메인의 IP주소를 찾아보고, 캐시에 없거나 만료되었을 경우
루트 DNS 서버
에 질의를 보낸다. - 루트 DNS 서버를 확인한 후
최상위 도메인(TLD) 서버
에 질의를 보낸다. 순차적으로 도메인을 관리하는 DNS 서버를 찾아가며 IP주소를 찾아낸다. - 찾아낸 IP주소는
로컬 DNS 서버
의 캐시에 저장되고, 사용자 PC로 전달된다.
4. 통신 흐름
이제 웹 브라우저에 주소창에 특정 사이트 주소를 입력했을 때 일어나는 일을 확인해보자
브라우저
- 브라우저는 URL에 입력된 값을 분석한다.
- 도메인 이름에 대응하는 IP주소를 찾기위해 DNS 서버를 조회한다.
- 얻은 IP주소를 사용해 최종적으로 HTTP Request 메시지를 만든다.
- 메시지를 OS에 전달한다.
브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰해 메시지를 전달한다. OS에 의뢰할 때는 도메인명이 아니라 IP주소로 수신 상대를 지정해야 하는데, 이 과정에서 DNS 서버를 조회한다.
프로토콜 스택, LAN 어댑터
- 프로토콜 스택이 브라우저로부터 메시지를 받는다.
- 메시지를 패킷 속에 저장한다.
- 패킷에 제어정보를 덧붙여 LAN 어댑터에 전송한다.
- LAN 어댑터는 이를 전기신호로 변환시켜 LAN 케이블에 송출시킨다.
프로토콜 스택은 운영체제에 내장된 네트워크 제어용 소프트웨어로, 네트워크에서 데이터 통신을 위한 프로토콜들의 계층적인 집합을 나타낸다. 데이터를 전송하기 위한 각 단계를 분리하여 구현함으로써 효율적이고 안정적인 통신을 할 수 있도록 도와준다. 대표적인 프로토콜 스택으로 OSI 모델(7계층), TCP/IP 모델(4계층)이 있다.

허브, 스위치, 라우터
- LAN 어댑터가 송신한 전기신호는 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
- 라우터는 패킷을 ISP에게 전달한다.
- 인터넷으로 들어가게 된다.
LAN 어댑터는 컴퓨터와 네트워크 간의 인터페이스 역할을 하며, 데이터를 전기 신호로 변환하여 네트워크에 송신한다.
스위칭 허브는 MAC 주소를 기반으로 같은 네트워크에서 디바이스 간 데이터 스위칭을 담당한다. (Link Layer)
라우터는 IP 주소를 기반으로 서로 다른 네트워크 간 데이터를 전달하고, 패킷 라우팅 및 보안 기능을 수행한다. (Internet Layer, network Layer)


액세스 회선, 프로바이더
- 패킷은 인터넷 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
- POP를 거쳐 인터넷 핵심부로 들어가게 된다.
- 고속 라우터들 사이로 패킷이 목적지까지 흘러간다.
방화벽, 캐시서버
- 패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN 에 도착한다.
- 방화벽이 도착한 패킷을 검사한다.
- 캐시 서버로 보내어 웹 서버까지 갈 필요가 있는지 검사한다.
웹 서버
- 패킷이 웹 서버에 도착하면 웹 서버의 프로토콜 스택이 패킷을 추출하여 메시지를 복원하고 웹 애플리케이션 서버(WAS)에 넘긴다.
- 메시지를 받은 웹 애플리케이션 서버는 요청에 대한 응답 데이터를 작성하여 클라이언트로 회송한다.
- 왔던 방식 그대로 전송된다.
✅ 따라서 큰 흐름을 요약하면 다음과 같다.
- 브라우저 주소창에 특정 사이트의 URL을 입력한다.
- 입력된 도메인 이름에 대응하는 IP주소를 찾기 위해 DNS 서버를 조회한다.
- 브라우저는 IP주소를 담아 HTTP Request 메시지를 만들고, OS의 프로토콜 스택에 전달한다.
- 메시지가 패킷에 담기고 제어정보를 덧붙여 전기신호로 변환돼 송출된다.
- 패킷은 허브 - 스위치 - 라우터를 경유해 목적지 서버로 이동한다.
- 서버는 패킷을 검사해 요청에 맞는 HTTP Response 메시지를 만든다.
- 요청된 곳에 동일한 방법으로 응답을 전달한다.
참고자료 😃
https://github.com/ksundong/backend-interview-question
https://velog.io/@tnehd1998/%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90-www.google.com%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%96%88%EC%9D%84-%EB%95%8C-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EA%B3%BC%EC%A0%95
https://etloveguitar.tistory.com/112
'Network' 카테고리의 다른 글
[Network] HTTP & HTTPS 개념 및 동작방식 (0) | 2024.03.10 |
---|---|
[Network] TCP & UDP (0) | 2024.03.10 |
브라우저 주소창에 특정 사이트 주소를 입력했을 때 일어나는 일에 대해 알아보자 ❕
이해를 위해 먼저 IP, 도메인, DNS 개념을 공부해보자
1. IP (Internet Protocol)
IP는 인터넷에 연결된 장치들 간의 정보를 원활하게 주고받기 위해 정한 규약이다.
IP주소
인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰 등)들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는데 이를 IP주소라고 한다. 인터넷의 모든 장치에는 고유한 IP주소가 할당되며 이는 *ISP(Internet Service Provider)에 의해 할당되는 주소이다.
IP주소는 IPv4, IPv6 두 가지 버전이 있는데, IPv4주소는 .
으로 구분되어 xxx.xxx.xxx.xxx
(xxx = 0~255) 형식의 숫자 4개로 표현한다. IPv4주소 공간부족 문제로 생겨난 IPv6주소는 :
으로 구분되어 16진수 8개로 표현한다.
*ISP(Internet Service Provider)?
통신사 같이 사용자에게 인터넷 서비스를 제공하는 업체들을 말한다. 사용자들이 인터넷에 접속할 때 중간 매개체로서 역할을 하며, 사용자가 데이터를 주고받을 수 있도록 도와준다.

터미널에서 ping google.com
을 입력해 google의 ip주소를 확인하면 142.251.42.206
를 사용하는 것을 알 수 있다.
2. 도메인 (domain)
인터넷 주소. 인터넷에서 리소스를 식별하기 위한 문자열로, IP 주소를 찾기 위한 이름이다. 우리가 구글에 접속하려면 142.251.42.206
같이 IP 주소를 입력하지 않고 google.com
혹은 www.google.com
을 입력해 접속하는데, 이런 문자열을 도메인이라고 한다. IP주소는 기억하기 어렵기 때문에 문자열 인터넷 주소인 도메인을 사용하는 것이다.
www
: 서브도메인google
: 도메인 이름com
: 최상위 도메인
URL과 차이? URL은 도메인을 포함한 경로이다. https://www.google.com
전체 주소는 URL, www.google.com
을 도메인으로 분류할 수 있다.
3. DNS (Domain Name System)
DNS는 도메인 이름과 IP 주소를 저장하고 있는 분산 데이터베이스로, 웹사이트를 위한 주소록이라고 생각하면 된다. 인터넷에서 도메인 이름을 IP 주소로 변환해주거나, 그 반대로 IP 주소를 도메인 이름으로 변환해준다.

우리가 웹브라우저에서 google.com를 입력하면 크게 다음과 같은 과정을 거치게 된다.
- DNS서버에 접속해 도메인(
google.com
)과 매핑된 IP 주소(142.251.42.206
)를 확인 - 해당 IP를 사용자 PC에 전달
- 사용자 PC는 전달받은 IP 주소로 접속
- IP에 연결된 브라우저에 서버의 내용을 출력

DNS는 하나의 서버로 이루어지지 않고 계층적으로 구성된다. 도메인을 .
로 구분해 최상위 도메인
, 도메인 이름
, 서브도메인
까지 DNS 서버에 순차적으로 방문하여 IP주소를 찾는다.
- 최상위 도메인(Top-Level Domain, TLD) : 인터넷 계층 구조에서 가장 높은 수준의 도메인이다. 'com', 'org'과 같은 일반 최상위 도메인, 'kr', 'uk'과 같은 나라 코드 최상위 도메인이 있다.
- 도메인 이름(Domain Name) : 최상위 도메인 아래에 위치하며, 특정 조직이나 서비스를 식별하는데 사용한다. 'google', 'naver' 등이 있다.
- 서브도메인(Subdomain) : 도메인 이름 아래에 위치하며, 추가적으로 식별하는데 사용한다. 도메인 등록 기관에 등록되어 있는 하나의 루트 도메인을 목적에 맞게 분리하고 싶을 때 사용한다.
https://news.naver.com
,https://shopping.naver.com
에서 'news', 'shopping'은 'naver.com'의 서브도메인이다.
DNS 동작 원리
앞서 설명한 것처럼 우리가 웹브라우저에서 도메인명을 검색하면 DNS 서버로 가서 도메인과 일치하는 IP 주소를 알려주고, 우리는 다시 그 IP 주소로 접속해 홈페이지가 열린다.
그럼 DNS 서버는 IP주소는 어떻게 얻는 걸까?

- 사용자가 웹 브라우저에서 도메인 이름을 검색하면
로컬 DNS 서버
에게 질의를 보낸다. (로컬 DNS 서버는 사용자가 속한 지역이나 조직 내에 위치하며, 일반적으로 ISP나 기업 네트워크에서 관리하는 서버이다) - 로컬 DNS 서버는 먼저 자신의 캐시에서 해당 도메인의 IP주소를 찾아보고, 캐시에 없거나 만료되었을 경우
루트 DNS 서버
에 질의를 보낸다. - 루트 DNS 서버를 확인한 후
최상위 도메인(TLD) 서버
에 질의를 보낸다. 순차적으로 도메인을 관리하는 DNS 서버를 찾아가며 IP주소를 찾아낸다. - 찾아낸 IP주소는
로컬 DNS 서버
의 캐시에 저장되고, 사용자 PC로 전달된다.
4. 통신 흐름
이제 웹 브라우저에 주소창에 특정 사이트 주소를 입력했을 때 일어나는 일을 확인해보자
브라우저
- 브라우저는 URL에 입력된 값을 분석한다.
- 도메인 이름에 대응하는 IP주소를 찾기위해 DNS 서버를 조회한다.
- 얻은 IP주소를 사용해 최종적으로 HTTP Request 메시지를 만든다.
- 메시지를 OS에 전달한다.
브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰해 메시지를 전달한다. OS에 의뢰할 때는 도메인명이 아니라 IP주소로 수신 상대를 지정해야 하는데, 이 과정에서 DNS 서버를 조회한다.
프로토콜 스택, LAN 어댑터
- 프로토콜 스택이 브라우저로부터 메시지를 받는다.
- 메시지를 패킷 속에 저장한다.
- 패킷에 제어정보를 덧붙여 LAN 어댑터에 전송한다.
- LAN 어댑터는 이를 전기신호로 변환시켜 LAN 케이블에 송출시킨다.
프로토콜 스택은 운영체제에 내장된 네트워크 제어용 소프트웨어로, 네트워크에서 데이터 통신을 위한 프로토콜들의 계층적인 집합을 나타낸다. 데이터를 전송하기 위한 각 단계를 분리하여 구현함으로써 효율적이고 안정적인 통신을 할 수 있도록 도와준다. 대표적인 프로토콜 스택으로 OSI 모델(7계층), TCP/IP 모델(4계층)이 있다.

허브, 스위치, 라우터
- LAN 어댑터가 송신한 전기신호는 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
- 라우터는 패킷을 ISP에게 전달한다.
- 인터넷으로 들어가게 된다.
LAN 어댑터는 컴퓨터와 네트워크 간의 인터페이스 역할을 하며, 데이터를 전기 신호로 변환하여 네트워크에 송신한다.
스위칭 허브는 MAC 주소를 기반으로 같은 네트워크에서 디바이스 간 데이터 스위칭을 담당한다. (Link Layer)
라우터는 IP 주소를 기반으로 서로 다른 네트워크 간 데이터를 전달하고, 패킷 라우팅 및 보안 기능을 수행한다. (Internet Layer, network Layer)


액세스 회선, 프로바이더
- 패킷은 인터넷 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
- POP를 거쳐 인터넷 핵심부로 들어가게 된다.
- 고속 라우터들 사이로 패킷이 목적지까지 흘러간다.
방화벽, 캐시서버
- 패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN 에 도착한다.
- 방화벽이 도착한 패킷을 검사한다.
- 캐시 서버로 보내어 웹 서버까지 갈 필요가 있는지 검사한다.
웹 서버
- 패킷이 웹 서버에 도착하면 웹 서버의 프로토콜 스택이 패킷을 추출하여 메시지를 복원하고 웹 애플리케이션 서버(WAS)에 넘긴다.
- 메시지를 받은 웹 애플리케이션 서버는 요청에 대한 응답 데이터를 작성하여 클라이언트로 회송한다.
- 왔던 방식 그대로 전송된다.
✅ 따라서 큰 흐름을 요약하면 다음과 같다.
- 브라우저 주소창에 특정 사이트의 URL을 입력한다.
- 입력된 도메인 이름에 대응하는 IP주소를 찾기 위해 DNS 서버를 조회한다.
- 브라우저는 IP주소를 담아 HTTP Request 메시지를 만들고, OS의 프로토콜 스택에 전달한다.
- 메시지가 패킷에 담기고 제어정보를 덧붙여 전기신호로 변환돼 송출된다.
- 패킷은 허브 - 스위치 - 라우터를 경유해 목적지 서버로 이동한다.
- 서버는 패킷을 검사해 요청에 맞는 HTTP Response 메시지를 만든다.
- 요청된 곳에 동일한 방법으로 응답을 전달한다.
참고자료 😃
https://github.com/ksundong/backend-interview-question
https://velog.io/@tnehd1998/%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90-www.google.com%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%96%88%EC%9D%84-%EB%95%8C-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EA%B3%BC%EC%A0%95
https://etloveguitar.tistory.com/112
'Network' 카테고리의 다른 글
[Network] HTTP & HTTPS 개념 및 동작방식 (0) | 2024.03.10 |
---|---|
[Network] TCP & UDP (0) | 2024.03.10 |