하루에 한 문제

주소창에 naver.com을 치면 일어나는 일 본문

CS/네트워크

주소창에 naver.com을 치면 일어나는 일

dkwjdi 2021. 3. 31. 21:14

우선 이해하기 전에 IP 주소와 도메인에 대한 사전 지식이 필요하다!

 

IP주소

  • IP 주소란 컴퓨터들이 인터넷 상에서 서로를 인식하기 위해 지정받은 식별용 번호라고 할 수 있다.
  • 현재는 IPv4(32비트)로 구성되어 있으며, 한번씩은 들어봤을 법한 127.0.0.1 같은 주소를 말한다.
  • 시간이 갈수록 IPv4주소의 부족으로 IPv6가 생겼는데 이는 128비트로 구성되어 있기 때문에 IP주소가 부족하지 않다는 특징이 있다.

도메인 네임

  • IP 주소는 12자리의 숫자로 되어 있기 때문에 사람이 외우기는 힘들다.
  • 12자리의 IP주소를 문자로 표현한 주소를 도메인 네임이라고 한다.
  • 즉, 'naver.com'처럼 몇 개의 의미있는 문자들과 . 의 조합으로 구성된다.
  • 도메인 네임은 사람의 편의성을 위해 만든 주소이므로 실제로 컴퓨터가 이해할 수있는 IP주소로 변환하는 작업이 필요하다.
  • 이때, 사용할 수 있도록 미리 도메인 네임과 그에 대응하는 IP주소값을 한 쌍으로 저장하고 있는데 데이터 베이스를 DNS(Domain Name System)이라고 부른다.
  • 도메인 네임으로 입력하면 DNS를 이용해 컴퓨터는 IP 주소를 받아 찾아갈 수 있다.

①② 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함.

③ 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색함.

④ DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함.

 

⑤⑥ 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성함.

이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨.

 

⑦ 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨.

⑧ 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색함.

 

⑨⑩ 검색된 웹 페이지 데이터는 또다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성함.

이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송됨.

 

⑪ 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환됨.

⑫ 변환된 웹 페이지 데이터는 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨

 

URL 해석

URL 문법은 다음과 같다.

protocol : [//[user:password@] host[:port]][/] path[?query][#fragment]

 

https://dkwjdi.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 

host : dkwjdi.tistory.com

path: manage/newpost/

query : ?type=post&returnURL=%2Fmanage%2Fposts%2F 

 

  • 문법에 맞지 않는 URL이 들어온다면, 기본 검색 엔진으로 검색한다.
  • 문법에 맞는 URL이 들어온다면, host 부분을 인코딩한다.
  • HSTS(HTTP Strict Transport Security) 목록을 확인하고 있으면 HTTPS, 없으면 HTTP로 요청한다.
  •  

작동 방식

TCP 소켓 오픈

TCP 소켓을 열고 3-way handshake로 연결을 설정한다. HTTPS 요청이라면 TLS(Transport Layer Security) handshake 과정을 통해 세션키를 생성한다.

서버와 연결

세션이 유지되는 동안 서버에게 요청하고 응답받는 과정을 반복한다.

이때 요청과 응답은 모두 HTTP 프로토콜을 사용하여 메시지를 생성한다.

응답의 상태 코드에 따라 다르게 처리한다. 응답을 디코딩하고 캐싱이 가능하다면 캐싱 한다.

브라우저 렌더링

웹 브라우저는 응답받은 HTML/CSS/JS 및 이미지, 폰트 등의 리소스를 사용하여 페이지를 렌더링 한다.

연결 종료

서버와의 세션이 종료되면 4-way handshake로 연결을 종료한다.

 

 

 

참고

m.blog.naver.com/adamdoha/222080758916

github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90%20naver.com%EC%9D%84%20%EC%B9%98%EB%A9%B4%20%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94%20%EC%9D%BC.md

yoon1fe.tistory.com/129

'CS > 네트워크' 카테고리의 다른 글

Blocking-NonBlocking-Synchronous-Asynchronous  (0) 2021.04.02
로드 밸런싱  (0) 2021.04.01
UDP  (1) 2021.03.31
TCP ( 흐름 제어, 오류 제어)  (0) 2021.03.31
OSI 7계층 & TCP/IP 4계층  (0) 2021.03.31
Comments