1. 브라우저가 URL을 해석/파싱한다.
주소창에 www.naver.com을 입력하고 엔터를 누른다
- https : 프로토콜
- www.naver.com : Domain Name
- 443 : Port
어떤 프로토콜을 사용할 것인지, 어떤 URL로 서버에 요청을 보낼 것인지, 어떤 포트번호로 요청할 것인지 해석하는 과정이 이루어 진다.
2. URL이 문법에 맞으면 Punycode encoding을 URL의 HOST 부분에 적용한다.
3. HSTS(HTTP Strict Transport Security)목록을 로드해서 확인한다.
http 연결을 거쳐서 https로 전환되는 과정은 쿠키 탈취 등 보안상 안전하지 못하기때문에, https 를 클라이언트에게 강제하도록 하기위해 HSTS를 사용한다.
브라우저는 HSTS 목록에 우리가 요청할 웹 사이트가 존재하는지 확인한다. 목록에 해당 웹사이트가 있으면 브라우저가 HTTP 대신 HTTPS 프로토콜을 사용하여 요청을 보낸다.
4. DNS서버를 조회해서 IP주소를 받아온다.
사람이 이해하기 쉽게 도메인 이름을 사용하던 URL을 컴퓨터가 이해할 수 있게 IP 주소로 변경해야 한다. 이 역할을 하는것이 DNS이다.
5. DNS서버에서 응답 받은 IP 주소를 ARP를 통해 MAC 주소로 변환한다.
IP주소를 통해 해당 IP 서버가 있는 곳이 로컬 네트워크가 아닌 경우 그 지역 라우터까지 패킷이 전달된다. 라우터에서는 IP 주소에 해당하는 컴퓨터가 누군지 알아내기 위해 MAC 주소가 필요하다.
6. 3-way-handshake를 통해 TCP 소켓 연결을 한다.
MAC주소를 확보했으니 naver.com 서버와 통신을 하기 위한 TCP 소켓 연결을 진행해야 한다.
TCP 소켓 연결은 3-way-handshake 과정을 통해 이루어진다.
7. HTTPS의 경우 3-way-handshake에 TLS(Transport Layer security, SSL) handShake가 추가된다.
TCP소켓을 통해 연결이 완료되었다. 이제 naver.com 페이지를 달라고 서버에 요청을 보낸다.
8. HTTP 프로토콜로 요청한다.
9. HTTP 서버가 응답한다.
10. 웹 브라우저가 그린다.
참고자료
https://github.com/ssi02014/Front-Interview/blob/master/documents/CS/enter-url-process.md
https://1-7171771.tistory.com/134
https://juyoung-1008.tistory.com/m/19
'TIL' 카테고리의 다른 글
기술면접 준비 (0) | 2023.11.26 |
---|---|
useEffect() 종속성으로 추가할 항목 및 추가하지 않을 항목 (0) | 2023.10.15 |
브라우저의 기본 구조와 렌더링 과정 (0) | 2023.09.26 |
제품 이미지 주소가 담긴 배열 요소 받아오기 (0) | 2023.08.16 |
next.js에서 reactQuill useRef 사용해서 게시글 수정페이지에서 기존값 받아오기 (0) | 2023.08.14 |