항상 무엇인가 어떻게 동작되는지 이해를 해야 분석하기 편하기 때문에 찾아서 정리한 내용입니다.
우리가 어떤 사이트에 접속 하고, 접속 요청한 URL 은 서버의 API 를 호출하기 까지 어떠한 과정을 거치는가?
- URL 을 입력한다
- 웹 브라우저가 URL 을 해석한다.
- HSTS (*HTTP Strict Transport Security)목록을 로드해서 확인한다.
- HSTS 목록에 있으면 첫 요청을 HTTPS로 보내고, 아닌경우 HTTP로 보낸다.
- DNS(Domain Name Server) 조회한다.
- DNS에 요청을 보내기 전에 먼저 Browser에 해당 Domain이 cache돼 있는지 확인한다. (Chrome의 경우 chrome://net-internals/#dns 에서 확인 가능)
- 없을 경우 로컬에 저장돼 있는 hosts파일에서 참조할 수 있는 Domain이 있는지 확인한다.
- 위 두 경우가 모두 실패 했을 경우 Network stack에 구성돼 있는 DNS로 요청을 보낸다. (DNS는 일반적으로 Local router, ISP의 캐싱 DNS)
- ARP(Address Resolution Protocol)로 대상의 IP와 MAC address를 알아낸다.
- 대상과 TCP 통신을 통해 Socket을 연다.
- HTTP 프로토콜로 요청한다.
- HTTP 서버가 응답한다.
- HTTP Strict Transport Security란?
HTTP 대신 HTTPS만을 사용하여 통신해야 한다고 웹 사이트가 웹 브라우저에 알리는 보안기능