ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 브라우저에 URL을 입력하면? (What happens when you enter a URL in a web browser?)
    Web 2023. 2. 11. 18:21
    반응형

    면접을 위한 많은 문제 은행 중 항상 빠지지 않고 나오는 질문이 있다.

    바로 "주소창에 네이버(혹은 구글)를 검색하면 무슨 일이 일어나는지 아는대로 말씀해주세요" 이다.

    .

    .

    .

    과연 무슨 일이 일어날까?

    주니어 개발자의 얕은 지식을 공유한다.


    1. 주소창에 입력하기

    우선 브라우저를 켜고 URL 혹은 Domain name을 검색하게 될 것이다.

    URL은 "https://www.naver.com"을 말하고, Domain name은 "naver"를 말한다.

     

    이를 통해, naver.com 도메인에 속해있는 www 컴퓨터의 인터넷망에서 통신을 하려면 당연히 기본적으로는 목적지(네이버 or  구글 등)의 IP주소를 알아야 한다.

    그런데 이는 숫자로 이루어져 있어서 수 많은 주소들을 다 외울 수 가 없을 것이고, 사용도 힘들다.

    이런 숫자를 대신에 의미를 부여하여 외우기 쉽도록 만든 것이 Domain name 되겠다.

     

    2. hosts 파일, DNS cache 찾기

    일반적으로 DNS로 가게 되는데 그 전에 내 PC의 hosts 파일을 살펴보고, 그리고 DNS를 사용하고 나면 DNS의  Response를 caching하게 되는데 이 DNS cache를 살펴본다.

    이 때 원하는 결과를 찾을 수 있다면 DNS에게 물어보지 않아도 된다.

     

    이 때도 두 가지로 구분이 되는데, 내 PC의 network 설정이 되어있느냐 아니냐가 구분된다.

    - 내 PC의 network 설정이 따로 되어있다면?

    기본적으로는 PC 설정을 따라가기 때문에 이 설정에 따라 DNS에게 질문을 하게 된다.

    그런데 내가 공유기를 사용하고 있다면 DNS 서버가 공유기로 지정 되어있을 수도 있다.

    그래서 공유기가 DNS Forwarding 기능을 갖고 PC내에 지정 된 DNS 서버로 Request를 보내고, Response를 받아서 전달하는 구조가 될 수 있는 것이다.


    - 내 PC의 설정이 따로 되어있지 않다면?

    이 때는 ISP(Internet Service Provider)업체에서 전달해준 DNS 서버를 사용한다.

    ISP란 소위 "인터넷 회사"라고 부르는 것들을 생각하면 된다.

    미국의 경우 AT&T, Verizon 등이 있을 것이고, 한국에서는 큰 업체로는 KT, LGU+, 케이블TV로는 CJ헬로비전, 티브로드 등이 있을 것이다.

    이런 경우에는 ISP업체에서 전달해준 ISP업체의 DNS 서버를 사용하게 된다.

    즉, DNS에 직접 질문하게 되는 것이다.

     

    3. DNS (Domain Name System)

    소위 "인터넷 전화번호부" 라고 불리는 DNS서버는 분산형 DB구조로 되어있고, 서버의 IP 주소를 Domain name으로 변경해주는 역할을 하고 있다. 여기에는 DDNS의 개념도 함께 볼 수 있다.

    분산형 DB(Database)란?

    여러 곳으로 분산 되어있는 데이터베이스를 하나의 가상 시스템으로 사용 할 수 있도록 한 데이터베이스를 말한다.
    즉, 논리적으로는 하나의 시스템이지만 네트워크를 통해 물리적으로는 분산이 되어있는 것이다.
    DDNS(Dynamic DNS)란?

    DNS 서버와 같은 역할을 한다.
    다만 다른 점은 DNS는 고정 IP만 등록 할 수 있는데, DDNS는 유동 IP에 대응 할 수 있다는 점이다.
    기업의 경우 보통 전용선을 이용하여 고정 IP를 사용하기에 일반적인 DNS 서버의 사용이 가능하다.
    그러나 가정이나 소규모 네트워크 망에서는 비용 문제 등으로 인해서 통신사에서 제공하는 기본 설정인 유동 IP를 사용하게 된다.
    IP 주소가 유동적으로 계속 변하게 되면, 이를 계속해서 알려주고 기억해야 사용 할 수 있을 것이다.
    그런데 DDNS는 프로그램을 이용하여 수시로 갱신해 유동적으로 IP가 변경 될 때 마다 DNS 서버에 변경 된 IP주소를 전달해준다.
    즉, 유동 IP가 바뀌게 되면 자동적으로 DDNS서버에 접촉하여 현재 상태를 업데이트 할 수 있게 하는 것이다.

    여기까지 하고 나면 IP 주소를 획득 할 수 있는데, 이 후부터는 해당 값이 캐싱 되어서 위와 같은 동작이 생략 가능하다


     4. TCP  연결

    이제 내 PC에서 원하는 목적지의 IP주소를 얻었다.

    웹에서는 브라우저를 사용하게 되므로 HTTP 통신을 하게 되는데 HTTP는 TCP 연결을 기반으로 하고 있다.

    TCP(Transmission Control Protocol) 란?

    해석 그대로 "전송 제어 규약(약속)"을 말한다. 이는 연결지향이며 주로 신뢰성 있는 연결을 지향 할 때 사용한다.
    연결지향이라는 것은 정확한 데이터의 전송을 위해 보내는 측과 받는 측에서 사전에 세션을 수립하는 것을 말한다.
    즉, Browser와 Server의 연결을 성립해 전용의 데이터 전송 선로(Session)를 만든다는 것이다.

    이러한 전용선로를 만들기 위해서는 3번의 데이터 전송이 일어나는데 이를 "3 way handshake"라고 부른다.

    TCP의 기능으로는 패킷이 빠진 경우 재전송을 요청하는 기능, 패킷의 순서를 재조합하여 순서대로 하는 기능이 있다.
    이를 통해서 올바른 통신을 할 수 있도록 한다.
    패킷이란?

    데이터를 보내기 위한 라우팅(경로 배정)을 효율적으로 하기 위해 데이터를 여러 조각으로 나눠 전송하는데 이 조각을 패킷이라고 부른다.
    데이터 순서가 바뀌어서 전달 될 수 있는 이유는 패킷이 전달 될 때 하나의 고정 된 전달 경로를 사용하는 것이 아니라 임의의 경로를 사용하기 때문에 각 경로를 구성하는 회선의 품질이 다르면 먼저 보내진 패킷이라도 늦게 도착하는 경우가 발생 할 수 있는 것이다.

    이런 경우 TCP 기능을 이용하는데 패킷에 일련번호를 부여해 패킷이 서로 다르게 도착해도 순서를 재조합하여 순서를 맞출 수 있게 된다.

     

    5. HTTP Request, Server Response

    TCP 연결이 success(성공)하게 되면 HTTP Request가 나가게 되고, 그리고 그에 따르는 Response가 오게 되면서 내가 원하는 목적지로 접속 할 수 있게 된다.

     

    TCP & UDP 설명 참고

     

    .

    .

    .

    .

    .

     

    **** 잘못 된 내용이 있다면 알려주세요..! 😅

    반응형
Designed by Tistory.