노트북에서 크롬,사파리등의 브라우저를 키고 원하는 웹사이트로 이동할 때 과연 어떻게 작동할까?
처음 개발을 배울때는 매-우 간단한 방식으로 설명을 들었다. URL을 입력을하면 서버에 요청을 해서 정보를 받아 화면에 띄운다 정도의 지식이다.
틀린말은 아니지만 조금더 복잡한 과정이 있음을 최근에 알게 되었고, 정리를 하려 한다.
브라우저에 URL을 입력한 후 웹 사이트가 뜨기까지의 과정을 정리했다.
이 블로그의 URL 이다.
https://velog.io/@chloe41297
URL은 scheme,계정정보,호스트,포트 등의 정보로 이루어져있다.
특히 http/https등의 scheme는 프로토콜이 들어간 영역이다.
개발 TMI // 슬레쉬 두개는 필수사항이 아닙니다!! 멋있어 보여서 넣은게 학계의 정설!
이처럼 URL을 입력받은 브라우저는 다양한 정보를 담고있는 URL을 해석한다.
Domain Name System 으로 도메인과 IP주소를 서로 변환해 주는 시스템 이다.
브라우저가 URL을 해석하고 바로 DNS를 요청하나요? NOPE
요청하기 전 몇가지를 체크하고 넘어갑니다.
Address Resolution Protocol 로 IP주소를 물리주소인 MAC 주소로 변환해 주는 프로토콜이다.
IP주소는 논리적 주소이다. 예를들면, 도로명 주소 같은 것이다. 시대, 사회에 따라 부르는 주소가 달라지듯이 IP주소로 기계의 실제 위치를 알 수 없다.
반면 MAC주소는 지도상의 GPS처럼 기계의 실제 위치를 알 수 있는 주소이다.
ARP를 이용하여 IP주소를 MAC주소로 변환 한 뒤, 해당 서버로 이동한다.
서버에 바로 접근이 불가하고 socket을 열고 허락을 받아야 data를 전달할 수 있다.
이때 TCP연결을 허락받기 위해 3way handshake가 일어난다.
여기서 요청을 허락받으면, data를 서버에 보낸다.
서버는 앞선 과정을 통해 받은 data를 읽고 요청에 따라 처리합니다.
예를들어, URL을 요청받았다면, HTML을 응답합니다.
서버의 응답에의해 요청한 HTML파일을 기반으로 DOM tree를 구축해 화면에 렌더링을 합니다.
참고로, JS가 있다면 같이 실행 합니다.
이 과정 외에도 다양한 조건들을 고려해 봐야 합니다.
예를 들어, OSI 7계층, Routing Table, Subnet mask등은 더 공부하고 포스팅 하려고 합니다 :)
유용한 정보 저도 공부하고 가요👍