브라우저에 URL을 입력하면 발생하는 일

이원석·2022년 4월 10일
1

Network

목록 보기
7/7

인터넷 브라우저에 특정 URL을 입력하면 일어나는 과정을 알아보겠습니다.

1. 브라우저의 URL 파싱

URL을 입력받은 브라우저는 URL을 파싱하여 구조를 해석합니다. 어떤 프로토콜, 어떤 도메인, 어떤 포트로 보낼지를 해석합니다.

https://www.google.com:443

  • https (Protocol)
  • www.google.com (URL)
  • 443 (Port)

명시적으로 포트를 선언하지 않는다면 브라우저에서 기본 설정된 값을 이용해 요청합니다. (HTTP - 80 port, HTTPS - 443 port)



2. HSTS 목록 조회

HSTS(HTTP Strict Transport Security)는 HTTP를 허용하지 않고 HTTPS를 사용하는 연결만 허용하는 기능입니다. 만약 HTTP로 요청이 왔다면 HTTP 응답 헤더에 "Strict Transport Security" 라는 필드를 포함하여 응답하게 되면, 이를 확인한 브라우저는 해당 서버에 요청할 때 HTTPS만을 통해 통신하게 됩니다. 그리고 자신의 HSTS 캐시에 해당 URL을 저장하는데 이를 HSTS 목록이라고 부릅니다.

이를 통해 브라우저에서는 이 HSTS 목록 조회를 통해 해당 요청을 HTTPS로 보낼지 판단합니다. HSTS목록에 해당 URL이 존재한다면 명시적으로 HTTP를 통해 요청한다 해도 브라우저가 이를 HTTPS로 요청합니다.



3. URL을 IP 주소로 변환

브라우저에 입력한 URL을 컴퓨터가 읽을 수 있는 IP주소로 변환해야 서로 통신이 가능하게 됩니다. 우선 브라우저에서는 자신의 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재하는지 확인합니다. 존재하지 않는다면 도메인 주소를 IP주소로 변환하는 DNS(Domain Name System) 서버에 요청하여 해당 URL을 IP 주소로 변환합니다.


DNS 서버로 요청하는 과정

  1. 미리 설정 된 Local DNS에 해당 URL 주소의 IP주소를 요청합니다.

  2. Local DNS에 해당 IP주소가 존재한다면 이를 응답하고, 없다면 다른 DNS 서버와 통신합니다. root DNS 서버에 해당 URL의 IP주소를 요청합니다.

  3. root DNS서버에 해당 IP주소가 없다면 하위 DNS 서버에 요청하라고 응답합니다. 이 응답을 받은 Local DNS는 .com 도메인을 관리하는 DNS 서버에 같은 내용을 요청합니다.

  4. .com DNS 서버에 해당 IP주소가 없다면 하위 DNS 서버에 요청하라고 응답합니다. 이 응답을 받은 Local DNS는 google.com 도메인을 관리하는 DNS 서버에 같은 내용을 요청합니다.

  5. google.com DNS 서버에서 IP주소를 응답받은 Local DNS는 해당 IP주소를 캐싱하고 응답합니다.



4. 라우터를 통해 해당 서버의 게이트웨이까지 이동

IP주소를 할당 받은 후, 해당 서버로 요청을 보냅니다. 이 요청이 네트워크를 어떻게 이동할지는 네트워크 라우터의 라우팅이 경로를 설정합니다.

라우터에서는 라우팅 테이블을 통해 해당 요청이 어떤 경로를 통해 가야할지 경로를 지정해줍니다.



5. ARP를 통해 IP 주소를 MAC 주소로 변환

실질적 통신을 위해 논리 주소인 IP를 물리 주소인 MAC 주소로 변환합니다. 이를 위해 네트워크 내에서 ARP를 브로드캐스팅 합니다. 해당 IP 주소를 가지고 있는 노드는 자신의 MAC 주소를 응답합니다.

ARP(Address Resolution Protocol)

ARP의 뜻은 주소 결정 프로토콜이다. 이는 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC) 로 대응(Bind) 시키기 위해 사용되는 프로토콜 이다.

ARP를 사용하는 이유는 로컬 네트워크(LAN, Local Area Network) 에서 단말과 단말 간 통신을 위해서는 IP 주소와 함께 MAC 주소를 이용하게 되는데, IP 주소를 MAC 주소와 매칭하여 목적지 IP의 단말기가 소유한 MAC 주소와 매칭하여 테이블로 정리하고 목적지 IP의 단말이 소유한 목적지 MAC 주소로 제대로 찾아가기 위함입니다.


LAN(Local Address Network)

LAN을 한마디로 정의하면 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크 입니다.

같은 IP 대역을 공유하는 LAN에서 단말간 통신을 하기 위해 IP 주소를 목적지로 지정하지만, 실질적 물리 주소(MAC)를 사용해 목적지를 찾게 됩니다. (ARP Requset)

따라서 LAN은 ARP Request가 미치는 영역이라고도 할 수 있다고 합니다.

BroadCasting을 통해 ARP Request를 받은 같은 IP 대역 내의 단말들 중 IP-MAC 매핑에 목표인 단말이 이에 반응하여 ARP Response(목적지 단말의 MAC 주소) 를 보냅니다.

이러한 ARP Response들을 받아 ARP Table에 해당 단말의 IP와 MAC 주소를 적습니다. 그 이후로는 ARP Table을 참조해 IP와 매핑되는 MAC 주소를 전달합니다.



6. 대상 서버와 TCP 소켓 연결

대상 서버와 통신하기 위해 TCP 소켓 연결을 진행합니다. 소켓 연결은 3-way-handshaking을 통해 이루어집니다. 서버에게 접속 요청을 보내면, 서버는 해당 요청을 확인하고 수락하는 메시지를 보냅니다. 또한, 클라이언트는 서버의 요청 수락 메시지를 받고 알겠다는 응답 메시지를 보내줍니다.

HTTPS 요청의 경우에는 암호화 통신을 위한 TLS 핸드쉐이킹이 추가됩니다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있습니다. (HTTPS의 작동 원리)



7. HTTP(HTTPS) 프로토콜로 요청, 응답

연결이 확정된 후, 해당 페이지 www.google.com 을 달라고 서버에 요청하게 됩니다. 서버에서 요청을 받고 이 요청을 수락할 수 있는지 검사후, 요청에 대한 응답을 생성하여 브라우저에게 전달합니다.



8. 브라우저에서 응답을 해석

서버의 응답 내용은 HTML, CSS, JS등으로 이루어져 있습니다. 일반적인 웹 페이지로 인식하기 어려운 문자들로 구성되어 있습니다.

이를 브라우저에서 해석하여 화면을 출력합니다.





[참고문헌]
https://deveric.tistory.com/97
https://aws-hyoh.tistory.com/entry/ARP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
https://blog.naver.com/goduck2/220138802591

0개의 댓글