브라우저 URL 파싱
주소창에 devfunny.tistory.com URL을 입력했다. 어떤 일이 발생할까?
1) 브라우저가 해당 URL 구조를 해석한다.
** https://devfunny.tistory.com
1) protocol : https://
2) url : devfunny.tistory.com
3) port : 443
(port는 생략이 가능하다. HTTP 요청일 경우 80, HTTPS의 요청일 경우 443으로 요청한다.)
2) HSTS (HTTP Strict Transport Secucrity) 목록을 조회한다.
HTTPS 프로토콜로만 접속이 가능하도록 강제화하는 기능이다.
만약 HTTP 요청일 경우, HTTP 응답 헤더에 "String Transport Security" 라는 필드를 포함하고 이를 확인한 브라우저는 해당 서버에 요청할때 HTTPS 만을 통해 통신하게 된다.
이때 URL이 HSTS 캐시에 저장되는데 이를 HSTS 목록이라고 한다.
브라우저에서는 이 HSTS 목록 조회를 통해 해당 요청을 HTTPS를 보낼지 판단하고, HSTS 목록에 해당 URL이 존재한다면 명시적으로 HTTP를 통해 요청한다해도 브라우저가 이를 HTTPS로 요청한다.
3) URL을 IP 주소로 변환한다.
우리가 주소창에 입력한건 '도메인'이다. 이를 IP로 변환하는 과정이 필요하다. 도메인으로 컴퓨터끼리 통신이 불가능하므로, 통신이 가능한 IP로 변환해야한다.
- 1. 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재하는지 확인한다.
- 2. 존재하지않으면, DNS(Domain Name System) 서버에 요청하여 해당 URL을 IP 주소로 변환한다.
DNS 동작 원리
1. ROOT DNS 서버에 "www.naver.com" 질의한다.
2. ROOT DNS 서버로부터 "com 도메인"을 관리하는 TLD(Top-Level Domain) 이름 서버 정보를 전달받는다.
3. TLD에서 "www.naver.com" 질의한다.
4. TLD에서 "naver.com"을 관리하는 DNS 정보를 전달받는다.
5. "naver.com" 도메인을 관리하는 DNS 서버에 "www.naver.com" 호스트 네임에 대한 IP 주소를 질의한다.
6. Local DNS 서버에게 "www.naver.com"에 대한 IP 주소는 222.122.195.6 이라고 응답한다.
7. Local DNS는 "www.naver.com"에 대한 IP 주소를 캐싱을 하고 IP 주소 정보를 전달한다.
4) 라우터를 통해 해당 서버의 게이트웨이로 이동한다.
DNS 서버에서 IP 주소를 받았으므로, 해당 요청을 서버로 보낸다. 요청이 어떻게 이동될지는 네트워크 장비인 라우터의 라우팅을 통해 이뤄진다.
5) ARP를 통해 IP 주소를 MAC 주소로 변환한다.
논리주소인 IP주소를 물리 주소인 MAC 주소로 변환하기 위해 해당 네트워크 내에서 ARP를 브로드캐스팅 한다. 해당 IP 주소를 가지고있는 노드는 자신의 MAC 주소를 응답한다.
6) 대상 서버와 TCP 소켓 연결을 진행한다.
소켓 연결은 3-way-handshake 과정을 통해 이뤄진다.
7) HTTP(HTTPS) 프로토콜로 요청 및 응답이 발생한다.
연결이 확정되었으므로 devfunny.tistory.com 페이지를 서버에 요청하고, 서버에서는 요청을 검토한다. 그리고 해당 요청에 대한 응답을 브라우저에 전달해준다.
8) 브라우저에서 응답을 해석한다.
서버에서 응답한 내용을 화면으로 그려준다.
'Computer Science > Network' 카테고리의 다른 글
CORS 개념 (0) | 2021.11.30 |
---|---|
네트워크 스위치의 로드밸런서 (Load Balancer) (0) | 2021.11.28 |
전송 계층에 대한 이해 (0) | 2020.11.06 |
데이터 링크 계층의 역할과 이더넷 (0) | 2020.01.28 |
물리 계층의 역할과 랜 카드의 구조에 대한 이해 (0) | 2020.01.22 |