본문 바로가기

Network

[Network] 브라우저에 www.naver.com을 입력하면 어떻게 될까?

브라우저에 www.naver.com 을 입력하면 어떻게 될까?

 

이것만큼 네트워크에 대한 본인의 지식을 설명하는 질문은 없을 것 같습니다.

 

제가 지향하는 정답은

 

"대기열, 캐싱, DNS, 라우팅, ARP, 초기연결을 거쳐 컨텐츠를 다운받게 되고, 브라우저렌더링 과정을 거쳐 네이버라는 화면이 나타나게됩니다. 또한 이러한 과정은 비캡슐화, 캡슐화과정을 거쳐 이뤄지게 됩니다."

 

입니다.

 

 


대기열

브라우저는 주소창 입력에 대한 요청을 대기열에 넣습니다. 

 

 

 

 


캐싱

 

캐싱은 요청된 값의 응답을 저장하고 그 값을 다시 요청하면 가지고 있던 값을 제공하는 기술입니다. 이는 공유 프록시캐시와 브라우저 캐시로 나누어집니다.

 

 

공유 프록시 캐시

요청한 서버에서 프록시 서버가 캐싱하는 것을 말합니다. 예를 들자면 https://mirr-coding.tistory.com/9 에서 설명드린대로 WS에 Apache나 Nginx를 두어 캐싱 서버로 이용할 수 있습니다.

 

 

브라우저 캐시

브라우저 캐시는 쿠키, 로컬스토리지 등을 포함한 캐시입니다. HTTP를 통해 다운받는 모든 문서를 보유하는 것을 말합니다. 예를들어 특정 사이트에 들어갔다가 다시 방문하면 빠른속도로 화면이 띄워지죠? 이것이 브라우저캐시입니다. 

 

 


DNS

브라우저가 요청의 IP주소를 확인하는 단계입니다.

DNS는 Domain Name Server의 약자로 도메인을 주면 IP주소를 찾아주는 서버입니다.

 

예를들어 우리가 네이버에 접속하기 위해 네이버의 IP주소를 알아봅시다. 123.456.789.123 이 네이버의 아이피라고 가정할게요. 하지만 이 IP주소는 변할 때가 생깁니다. 그럼 우리가 시간이 흘러 다시 네이버에 접속하려 했을 때, 또 다시 네이버의 IP를 찾아야하는 상황이 생겨요. 이를 관리해주기 위해 Domain이라는 개념이 생겨요.

사용자가 원하는 Domain을 입력하기만 하면 DNS에서 알아서 변하고있는 네이버의 IP를 찾아준다는 얘기에요.

 

추가로 바로 DNS에 요청하는 것은 아니고, 컴퓨터 메모리에 있는 캐시들을 확인한 후에 원하는 정보가 없다면 DNS서버로 요청합니다.

 

 


라우팅

라우팅은 IP 주소를 찾아가는 과정입니다. 네트워크상에서 길을 찾는 방법이라고 인식하고 있으면 좋아요.

DNS에서 받은 IP 주소를 기반으로 해당 목적지까지 라우팅 테이블, 시브네트워크 등을 거쳐 IP 주소를 찾아갑니다.

 

 

라우팅 테이블

네트워크 상의 특정 목적지까지의 거리와 가는 방법등을 명시하고 있는 테이블입니다.

라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 도달해야하는 다음 라우터의 정보를 가지고 있습니다.

쉽게 말해 라우터가 여러가지 정보를 종합해 얻은 네트워크에 대한 지도입니다.

 

 

게이트 웨이

서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 합니다.

 

 

 

 


ARP

통신하는 것을 배달로 비유했을 때, IP주소가 집 주소를 말한다면 ARP를 통해 나오는 물리적 주소는 특정 사람입니다.

IP 주소는 해당 네트워크이고, 우리는 특정 컴퓨터에 요청을 전달해야하니 물리적 주소가 필요한 것이죠.

이 물리적 주소를 MAC 주소라고 합니다.

 

ARP는 Address Resolution Protocol의 약자로 IP 주소를 통해 MAC 주소를 구하는 역할을 수행합니다.

반대로 RARP는 MAC 주소를 통해 IP 주소를 구할 수도 있습니다.

 

 

 

 


초기 연결 및 컨텐츠 다운로드

브라우저가 TCP 3-way-handshake 과정과 SSL 연결을 통해 연결을 설정합니다. 이 후 요청을 보낸 후 서버로 부터 응답을 받습니다.

 

 

 


브라우저 랜더링

HTML 파일과 CSS 파일을 각각 파싱해 html, body, div, span등 각각의 태그들을 트리화 시킵니다. 

두 Tree를 결합하여 Rendering Tree를 만들고, Rendering Tree에서 각 노드의 위치와 크기를 계산하여, 계산된 값을 이용해 각 노드를 화면상의 실제 픽셀로 변환합니다.

마지막으로 레이어를 합성하여 실제 화면에 나타냅니다.

 

 

 


캡슐화 / 비캡슐화

캡슐화

캡슐화 과정은 상위 계층의(애플리케이션 계층)  헤더와 데이터를 하위 계층의 데이터 부분에 포함 시키고 해당 계층의 헤더를 삽입하는 과정을 말합니다.

 

송신을 하는 입장이라면 애플리케이션 계층부터 링크 계층으로 내려오며 캡슐화 과정을 거치게됩니다.

 

 

비캡슐화

위 그림과 같이 캡슐화된 데이터를 수신하게되면 링크 계층부터 애플리케이션 계측까지 타고 올라오며 프레임화 되어있는 데이터를 메시지화하는 비캡슐화 과정을 거치게됩니다.

 

 

장치와 장치간의 통신을 할 때, 캡슐화 비캡슐화 과정을 거쳐 데이터가 송/수신이 됩니다.

 

 

 


 

● 참고자료 : 면접을 위한 CS 전공지식 노트 (주홍철 | 길벗출판사)

'Network' 카테고리의 다른 글

[Network] DMZ 존  (0) 2023.04.09
[Network] URI, URL, URN  (0) 2023.02.15
[Network] HTTP/x.x  (2) 2023.01.22
[Network] 네트워크 토폴로지  (0) 2023.01.21
[Network] Proxy, CDN, AWS RDS  (0) 2023.01.15