본문 바로가기
Computer Science/컴퓨터 네트워크

웹 브라우저에 URL을 입력했을 때 발생하는 일

by Libi 2021. 7. 9.
반응형

우리는 네이버에 접속하기 위해서 웹 브라우저를 열고 주소창에 www.naver.com입력하여 Enter를 누른다.

그렇다면 Enter를 눌렀을 때 내부적으로 어떠한 과정을 통해 해당 웹사이트의 내용들이 화면에 보이게 되는 것일까? 각 과정들을 살펴보도록 하자.

1. 브라우저의 URL 파싱

우리는 주소창에 URL만 입력하였으며 브라우저는 입력한 URL을 활용하여 해당 웹사이트의 서버와 통신하여 웹사이트의 내용을 우리에게 보여주게 된다.

즉, 브라우저의 입장에서는 입력된 URL 내에서 필요한 모든 정보를 파악해야 한다. 그렇다면 URL은 어떤 구조로 이루어져 있으며 어떤 정보를 얻을 수 있는 것일까?

URL의 구조는 다음과 같이 Protocol, URL, Port로 이루어져 있다.

 

근데 사실 네이버를 접속할 때 Protocol과 Port을 제외하고 www.naver.com만 입력하여도 Protocol과 Port가 자동으로 구성되는 것을 확인할 수 있다.

www.naver.com 입력 => 주소창은 https://www.naver.com 가 나옴

 

이는 브라우저에서 제공해주는 기능이다.

먼저 Protocol 부분이다. www.naver.com을 흔히 도메인이라고 말하는데 도메인만을 입력하여 웹사이트에 접속하였을 때 브라우저는 기본 세팅으로 HTTP 프로토콜을 사용하여 접속을 시도한다.

만약 해당 웹사이트가 HTTPS 프로토콜이 적용된 사이트라면 HTTP 접속이 시도되었을때 301, 302 HTTP 상태 코드를 통해 리다이렉트를 하라는 메시지를 브라우저에게 보내게 된다.

브라우저는 이 요청을 통해 다시 해당 사이트에 HTTPS 프로토콜로 접속하게 되는 원리이다.

한 번이라도 HTTPS 프로토콜로 접속한 적이 있다면 HSTS(HTTP Strict Transport Security) 목록에 저장되며, 이후에 접속하게 되면 바로 HTTPS 프로토콜로 요청을 하게 된다.

다음으로 Port 부분이다. Port는 명시적으로 선언하지 않더라도 브라우저에서 설정된 기본값을 이용해 요청하게 된다. 443은 https 프로토콜에 설정된 기본값이다.

만약, URL의 구조가 문법에 맞지 않는다면 입력을 웹 브라우저의 기본 검색엔진으로 검색을 요청한다.

 

 

2. HSTS 목록 조회

HSTS는 HTTP 프로토콜을 허용하지 않고 HTTPS 프로토콜을 통한 연결만 허용하는 기능이다.

위에서 언급한 것처럼 해당 URL이 HSTS에 존재하면 HTTPS 프로토콜로 요청을 보내고 만약 존재하지 않으면 HTTP 프로토콜로 요청을 보낸다.

만약 해당 웹 사이트가 HTTPS 프로토콜 연결만 허용한다면 HTTP 프로토콜로 요청이 왔을 시 HTTP 응답 헤더에 "Strict Transport Security"라는 필드를 포함하여 응답하고 이를 확인한 브라우저는 해당 서버에 요청할 때 HTTPS 프로토콜만을 통해 통신하게 된다. 그리고 해당 URL을 HSTS 캐시에 저장한다.

 

 

3. URL을 IP 주소로 변환

URL에서 Protocol과 Port 부분은 파악하였다. 남은 부분은 도메인인데 사실 도메인 네임(Domain Name-www.naver.com)은 우리가 해당 사이트를 쉽게 접근할 수 있도록 편의성을 위해 만들어진 주소이다.

실제로 모든 인터넷 주소는 IP 주소로 이루어져 있다. 네이버(www.naver.com)의 실제 IP 주소는 125.209.222.141 이다.

즉, 도메인 네임으로는 컴퓨터끼리 통신할 수 없기 때문에 이를 IP 주소로 변환해줘야 한다.

브라우저는 자신의 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재한다면 바로 접속하고, 존재하지 않는다면 DNS(Domain Name System) 서버에 요청하여 해당 URL을 IP 주소로 변환한다.

DNS 서버는 도메인 네임과 해당하는 IP 주소를 관리하고 있는 서버이다.

 

 

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

DNS 서버에게 IP 주소를 받았으니 해당 서버로 요청을 보낸다. 네트워크 장비인 라우터가 해당 주소까지의 경로를 라우팅 하여 통해 해당 주소에 요청을 전달한다.

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

실질적인 통신을 하기 위해서는 논리 주소인 IP 주소를 물리 주소인 MAC 주소로 변환해야 한다.

IP와 MAC의 차이를 간단하게 설명하자면 택배를 A 아파트 306호에 보내야 할 경우 A 아파트의 주소는 IP 주소에 해당되며 306호는 MAC 주소에 해당된다.

이를 위해 해당 네트워크 내에서 ARP를 브로드 캐스팅한다. 해당 IP 주소를 가지고 있는 노드는 자신의 MAC 주소를 응답한다.

ARP는 Address Resolution Protocol의 약자로써 IP 주소를 MAC(Media Access Control) 주소로 변환해주는 프로토콜이다.

반대로 MAC 주소를 IP 주소로 변환해주는 프로토콜은 RARP(Reverse Address Resolution Protocol)이다.

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

MAC 주소를 통해 통신할 서버에 접근하였으니 실제로 통신하기 위해 TCP 소켓 연결을 진행한다. TCP 소켓 연결은 3-way-handshake라는 과정을 통해 이루어진다.

TCP와 3-way-handshake에 관해서는 다음 글을 참고하면 좀 더 자세히 알 수 있다.

https://sorjfkrh5078.tistory.com/62

 

TCP & UDP

이전 글들을 통해 전송 계층에서 신뢰적인 데이터를 전송하기 위해 어떠한 상황들을 고려하고 구축했는지 간단하게 살펴봤다. 이번에는 최종적으로 구축한 프로토콜을 토대로 현재 TCP/IP 전송

sorjfkrh5078.tistory.com

 

만약, 현재 요청이 HTTP가 아닌 HTTPS 요청이라면 암호화 통신을 위한 TLS 핸드셰이킹이 추가된다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있다.

 

 

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

해당 서버와 통신하기 위한 모든 과정이 완료되었으니 서버에게 www.naver.com을 달라고 요청한다. 서버에서 해당 요청을 받고, 이 요청을 수락할 수 있는지 검사한다. 그리고 서버는 이 요청에 대한 응답을 생성하여 브라우저에게 전달한다.

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

서버에서 보낸 응답(HTML, CSS, Javascript 등으로 구성)을 브라우저에서 해석하여 요청한 www.naver.com 페이지를 화면에 보여준다.

[ Reference ]

· https://deveric.tistory.com/97

· https://run-it.tistory.com/19

반응형

댓글