인터넷 주소창에 URL을 입력 후 화면에 출력되는 과정

2022. 5. 25. 17:33 기타 정보/Network

인터넷 주소창에 naver.com 을 입력하고 Enter키를 눌렀을 때 일어나는 과정들을 알아보자.

1. 브라우저의 URL 해석/파싱

크롬 주소창에 www.naver.com을 입력하고 엔터를 눌렀을 때, 가장 먼저 일어나는 일은 URL을 해석하는 과정이다.

즉, 어떤 프로토콜을 사용할 것인지, 어떤 URL로 서버에 요청을 보낼 것인지, 어떤 포트번호로 요청할 것인지 해석하는 과정이 이루어 진다.

여기서 참고해야 할 점은 우리는 주소창에 www.naver.com만 입력했지만 브라우저 내부적으로 기본값으로 http를 사용한다면 포트번호 80을 부여하고, https를 사용한다면 포트번호 443을 부여하게 된다.

☞https, port 용어 설명





1-2 . HSTS

만약 https 프로토콜을 사용하여 접근해야 하는 사이트에 http 프로토콜로 접근하게 되면 어떤 일이 발생할까?

기본적으로 생각할 수 있는것은 https로 접근해야 하는 사이트에 http로 요청이 오게 되었을때 서버측에서 302 : Redirect 를 통해 https로 전환시킬 수 있다.

하지만 이 방법은 http 연결을 거쳐서 https로 전환되는 과정이기 때문에 쿠키 탈취 등 보안상 안전하지 못하다.

따라서 https 를 클라이언트에게 강제하도록 해야하는데, 이 때 HSTS를 사용한다.

☞HSTS란?




브라우저(크롬,사파리 등등)는 이 HSTS의 리스트에 우리가 요청할 웹 사이트가 존재하는지 확인한다. 이후 목록에 해당 웹사이트가 존재한다면 브라우저가 HTTP 대신 HTTPS 프로토콜을 사용하여 요청을 보내게 된다.

2. DNS서버에서 IP주소 받아오기 (URL -> IP Address)

우리가 인터넷에 입력한 www.naver.com은 컴퓨터가 바로 이해할 수 없다. 인간이 이해하기 쉽도록 도메인 이름을 사용하던 URL을 컴퓨터가 이해할 수 있도록 IP 주소로 변경해야 한다. 이 역할을 하는것이 바로 DNS(Domain Name System) 이다.

  1. 브라우저는 해당 URL의 IP 주소를 Local DNS에 요청한다.
  2. Local DNS에 해당 URL이 존재한다면 바로 응답을 보내고 존재하지 않는다면 root DNS 서버에 해당 URL의 IP 주소를 다시 요청한다.
  3. root DNS서버에도 해당 URL이 없다면 하위 DNS 서버에 요청하라는 응답을 준다.
  4. 하위 DNS 서버에 요청하라는 응답을 받은 Local DNS는 .com 도메인을 관리하는 DNS 서버에 해당 URL의 IP주소를 다시 요청한다.
  5. .com을 DNS 서버에 해당 URL의 IP주소가 없다면 또 다시 하위 DNS 서버에 요청하라는 응답을 준다.
  6. Local DNS 서버는 naver.com을 관리하는 DNS서버에 다시 요청을 보낸다.
  7. naver.com을 관리하는 DNS 서버에게 IP주소를 응답받은 Local DNS는 해당 IP 주소를 캐싱하고 응답한다.

7번 과정까지 마치게 되면 URL 주소를 Local DNS에 캐싱하게 된다. 따라서 다음 요청부터는 바로 위 그림처럼 바로 IP주소를 응답받게 되는 것이다.

3. 라우터를 이용해 접속하려는 네트워크로 가는 최적의 경로 찾기

DNS에게 IP주소를 얻었지만 우리가 접속하려는 서버는 동일한 네트워크 안에 위치하고 있지 않다. 따라서 라우터를 통해 해당 서버의 게이트웨이를 찾아 우리가 원하는 서버의 네트워크로 이동해야 한다.

4. DNS서버에서 응답 받은 IP 주소를 MAC 주소로 변환 (APR)

☞IP주소와 MAC 주소의 차이점




IP주소를 통해서 해당 IP 서버가 있는 곳이 로컬 네트워크가 아닌 경우 그 지역 라우터까지 패킷이 전달된다. 라우터에서는 IP 주소에 해당하는 컴퓨터가 누군지 알아내기 위해 MAC 주소가 필요하다.

 

즉, 우리가 접속하려는 서버의 네트워크를 찾기 위해 IP주소를 사용하고, 그 네트워크 내부에 있는 컴퓨터와 통신하기 위해 MAC 주소가 필요한 것이다.

 

ARP(address resolution protocol)는 논리주소인 IP 주소를 물리주소인 MAC 주소로 변환해주는 역할을 한다.

  1. 송신측은 목적지의 MAC주소가 필요하므로 ARP 요청 패킷을 브로드캐스트 방식으로 전달한다. 브로드캐스트 방식으로 전달하는 이유는 최종 목적지의 물리주소를 모르기 때문에 모두에게 요청하는 것이다.
  2. 모든 Host와 Router는 송신자가 보낸 ARP 요청을 수락한다.
  3. 해당되는 수신자만 자신의 IP주소와 MAC 주소를 넣어 응답한다.

4. TCP 소켓 통신

이제 MAC주소도 확보했으니 naver.com 서버와 통신을 하기 위한 TCP 소켓 연결을 진행해야 한다.

TCP 소켓 연결은 3-way-handshake 라는 과정을 통해 이루어진다. 추가적으로 HTTPS의 경우 3-way-handshake에 TLS(Transport Layer security, SSL) handShake가 추가된다.

5. HTTPS(HTTP) 프로토콜 요청 / 응답

이제 TCP소켓을 통해 연결이 완료 되었다. 이제서야 naver.com 페이지를 달라고 서버에 요청을 보낸다. 서버는 응답을 받고, 응답이 가능하다면 브라우저에게 해당 요청에 대한 응답을 생성(HTML,CSS,JS)하여 전달한다.

6. 브라우저가 응답

응답(HTML,CSS,JS등)을 받은 브라우저는 웹 페이지를 표시한다.

 


Reference

그림으로 배우는 HTTP&Network - 우에노 센

https://aws.amazon.com/ko/route53/what-is-dns/

https://deveric.tistory.com/97

 

출처 : https://1-7171771.tistory.com/134?category=972766