대범하게

웹 통신의 큰 흐름(브라우저, 프로토콜 스택, LAN 어댑터, 허브, 스위치, 라우터, 방화벽, 캐시 서버, 웹 서버) 본문

Development/Web

웹 통신의 큰 흐름(브라우저, 프로토콜 스택, LAN 어댑터, 허브, 스위치, 라우터, 방화벽, 캐시 서버, 웹 서버)

대범하게 2023. 1. 9. 00:08
반응형

웹 브라우저에 google.com을 입력했을 때 어떤 일이 일어날까?

in 브라우저

1. 주소창에 입력된 URL 파싱

2. HTTP request 메시지 생성

3. 웹 서버에 HTTP request 메시지를 전송

 

이 때 만들어진 메시지 전송은 브라우저가 직접하는 것이 아니다.
브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰하여 메시지를 전달한다. 우리가 택배를 보낼 때 직접 보내는게 아니라, 이미 서비스가 이루어지고 있는 택배 시스템(택배 회사)을 이용하여 보내는 것과 같은 이치이다. 단, OS에 송신을 의뢰할 때는 도메인명이 아니라 IP주소로 메시지를 받을 상대를 지정해야 하는데, 이 과정에 DNS 서버를 조회해야 한다.

네트워크에 HTTP 요청을 보내는 것은 네트워크를 담당하는 하드웨어(NIC)가 해야할 일

- OS별 제공되는 API 이용

네트워크에서 호스트는 도메인 네임(google.com)로 식별되는 것이 아니라, IP 주소로 식별됨

- 도메인 네임으로부터 IP 주소를 알아낼 방법이 필요한데, 그것이 DNS

- DNS 서버에 질의하여 도메인 네임에 해당하는, IP 주소를 알아낼 수 있음

 

in 프로토콜 스택, LAN 어댑터

1. 프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지를 받는다.

2. 브라우저로부터 받은 메시지를 패킷 속에 저장한다.

3. 그리고 수신처 주소 등의 제어 정보를 덧붙인다.

4. 그런 다음, 패킷을 LAN 어댑터에 넘긴다.

5. LAN 어댑터는 다음 Hop의 MAC 주소를 붙인 프레임을 전기신호로 변환시킨다.

6. 신호를 LAN 케이블에 송출시킨다.

 

프로토콜 스택은 통신 중 오류가 발생했을 때, 이 제어 정보를 사용하여 고쳐 보내거나, 각종 상황을 조절하는 등 다양한 역할을 하게 된다. 네트워크 세계에서는 비서가 있어서 우리가 비서에게 물건만 건네주면, 받는 사람의 주소와 각종 유의사항을 써준다. 여기서 프로토콜 스택이 비서의 역할을 한다고 볼 수 있다.

- 프로토콜 스택 => 말그대로 각 계층별 프로토콜을 쌓아놓은 형태

- Network Enxapsulation(네트워크 캡슐화)

- link 계층의 네트워크 패킷을 프레임이라고 함

- LAN 어댑터에서 다음 Hop의 MAC주소를 붙인 프레임을 전기신호로 변환

- 전기 신호를 LAN 케이블(Physical Layer)에 송출

 

in 허브, 스위치, 라우터

1. LAN 어댑터가 송신한 프레임은 스위칭 허브(공유기)를 경유하여 인터넷 접속용 라우터에 도착한다.

2. 라우터는 패킷을 프로바이더(통신사)에게 전달한다.

3. 인터넷으로 들어가게 된다.

- LAN 어댑터가 송출한 프레임은 스위칭 허브(공유기)를 경유하여 인터넷 접속용 라우터에 도착

- 라우터는 패킷을 ISP(Interner Service Provider)에 전달

- ISP: 인터넷 서비스 제공사업자(SKT, KT, LGU+)

- ISP는 POP(Point of Presence)라고 불리는 교환 센터를 가지고 있음

- POP는 더 큰 POP에 연결됨

 

in 방화벽, 캐시 서버

1. 패킷은 인터넷 핵심부를 통과하여 웹 서버 측의 LAN에 도착한다.

2. 기다리고 있던 방화벽이 도착한 패킷을 검사한다.

3. 패킷이 웹 서버까지 가야하는지 가지 않아도 되는지를 판단하는 캐시 서버가 존재한다.

 

굳이 서버까지 가지 않아도 되는 경우를 골라낸다. 액세스한 페이지의 데이터가 캐시서버에 있으면 웹 서버에 의뢰하지 않고 바로 그 값을 읽을 수 있다. 페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장된다.

 

- 패킷은 웹 서버 측 호스트의 LAN에 도착

- 신뢰 수준이 낮은 네트워크로부터 오는 패킷은 방화벽에서 차단

- 캐싱된 응답은 캐시 서버에서 응답

 

in 웹 서버

1. 패킷이 물리적인 웹 서버에 도착하면 웹 서버의 프로토콜 스택은 패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘긴다. 

2. 메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 회송한다.

3. 왔던 방식대로 응답 메시지가 클라이언트에게 전달된다.


📍웹 통신의 큰 흐름을 설명해주세요.

1. 먼저 주소창에 google.com와 같은 URL을 입력합니다.

2. 입력된 URL 중 도메인 네임DNS 서버에서 검색합니다.

3. DNS 서버에서 도메인 네임에 해당하는 IP 주소를 알아냅니다.

4. 웹 페이지 URL 정보와 전달받은 IP 주소를 이용해 HTTP 요청 메시지를 생성합니다.

5. HTTP 요청 메세지네트워크 계층을 따라 캡슐화합니다.

4. 허브 - 스위치 - 라우터를 경유해 서버에 네트워크 패킷이 도착합니다.

5. 서버는 네트워크 패킷을 역캡슐화하여 HTTP   요청에 맞는 HTTP 응답을 생성합니다.

6. 동일한 순서로 클라이언트에게 HTTP 응답을 보냅니다.

 

Reference

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#%EC%9B%B9-%ED%86%B5%EC%8B%A0%EC%9D%98-%ED%81%B0-%ED%9D%90%EB%A6%84

Comments