1. 브라우저 캐시 체크
- 사용자가 웹 브라우저를 통해 google.com 을 입력하면 브라우저는 로컬 캐시에서 해당 URL 에 대한 최근 저장된 IP 주소가 있는지 확인한다.
2. DNS 조회
- 요청한 URL 이 캐시에 없으면, ISP 의 DNS 서버에 google.com(도메인)의 IP 주소를 찾기위해 DNS query를 날린다.
3. TCP 연결
- IP 주소를 확인한 후 브라우저는 해당 IP 주소의 서버와 TCP 연결을 시작한다. 3-way-handshake 방식으로 수행되며, 클라이언트와 서버간의 안정적인 연결을 확립한다.
4. HTTP 요청
- TCP 연결이 확립되면, 브라우저는 HTTP 프로토콜을 사용하여 요청 메시지를 생성해서 웹서버에 HTTP 요청을 한다. 요청은 필요한 리소스 (HTML, CSS, JavaScript, 이미지 등)에 대한 정보를 포함한다.
5. HTTP 응답
- 서버는 response 메시지를 생성하여 다시 브라우저에게 데이터를 전송합니다. 응답은 주로 HTML 문서와 함께 다른 필요한 리소스에 대한 정보를 포함한다.
6. 렌더링
- 브라우저는 받은 HTML 문서를 파싱하고 화면에 렌더링합니다.
1. 사용자가 웹 브라우저를 통해 google.com 을 입력하면 브라우저는 로컬 캐시에서 해당 URL 에 대한 최근 저장된 IP 주소가 있는지 확인한다.
컴퓨터는 우리가 입력한 www.google.com 읽을수 없다. 그래서 우리는 서버가 이해할 수 있는 IP주소로 변환해주어야 통신이 가능하다. 이미 내가 google.com 을 요청한 적이 있다면 브라우저는 어딘가에 google.com에 대한 IP주소를 가지고 있을 것이다. 도메인 주소(google.com)에 해당하는 IP주소를 찾기 위해 4가지의 캐쉬 기록을 순차적으로 체크한다.(브라우저 캐시 -> OS 캐시 -> 라우터 캐시 -> ISP 캐시)
웹 사이트 이름을 브라우저에 검색하면 브라우저는 DNS 기록을 4가지의 캐시에서 확인한다. (더보기 누르면 캐시 절차 확인가능)
1) 가장 먼저 브라우저 캐시를 확인합니다.브라우저는 일정 기간 동안의 DNS 기록들을 저장하고 있습니다. DNS Query는 이곳에서 가장 먼저 실행이 됩니다.
2) 그다음에 브라우저는 OS 캐시를 확인합니다.브라우저 캐시에 웹 사이트 이름의 IP 주소가 발견되지 않았다면, 브라우저는 system call을 통해서 OS가 저장하고 있는 DNS 기록들의 캐시에 접근합니다.
3) 그다음에는 router 캐시를 확인합니다.브라우저와 OS 등 유저의 컴퓨터에 기록이 없다면, DNS 기록을 캐싱하고 있는 router와 통신을 해서 찾으려고 합니다.
4) 그래도 못 찾는다면 마지막으로, ISP 캐시를 확인(Recursive DNS Server) 합니다.
ISP는 DNS 서버를 가지고 있고, 브라우저는 마지막으로 DNS 기록이 있기를 바라며 접근하게 됩니다.
✅ 캐시
- 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 보관소(HTTP 장치)
- CPU 와 RAM 사이에 위치해있으며, 자주 사용하는 데이터를 기억
- 캐시는 저장공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
- 웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면, 그 문서는 원서버가 아니라 캐시로부터 제공된다.
- 캐시를 아래와 같은 경우에 사용을 고려하면 좋다
1) 원래 데이터에 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터)
2) 반복적으로 동일한 데이터에 접근해야하는 경우(이미지나 썸네일 등)
특히 웹 서비스에서는 사용하는 이미지, CSS 및 자바스크립트 파일을 매번 네트워크를 통해 불러오지 않고 최초에만 다운로드하여 캐시에 저장해 두고, 그 이후 요청때 저장해 둔 파일을 사용할 때 유용하다.
이를 통해 훨씬 빠르게 웹사이트 컨텐츠를 볼 수 있다.
✅ 캐시 이점
Cache에 데이터를 미리 복사해 놓으면 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여준다.캐시는 원서버에 대한 요청을 줄여준다. 서버는 부하를 줄일 수 있으며 더 빨리 응답할 수 있게 된다.
메모리 : 기억장치 ✅ 컴퓨터 메모리 종류
|
🔸 CPU,캐시메모리, 메인메모리 역할을 보고싶다면 더보기 누르기
- CPU (Central Processing Unit): CPU는 컴퓨터의 '두뇌'라고 생각하면 됩니다. 컴퓨터의 모든 연산과 처리를 담당하며, 프로그램의 명령어를 실행하고 데이터를 처리하는 역할을 합니다.
- 캐시 메모리 (Cache Memory): 캐시 메모리는 CPU가 빠르게 접근할 수 있는 매우 작고 속도가 빠른 메모리입니다. CPU가 자주 사용하는 데이터나 명령어를 저장하여 CPU와 메인 메모리 사이의 속도 차이를 극복하고 시스템 성능을 향상시킵니다.
- 메인 메모리 (Main Memory): 메인 메모리는 CPU가 직접 접근할 수 있는 영역으로, 프로그램의 코드와 데이터를 일시적으로 저장합니다. CPU는 필요한 데이터나 명령어를 메인 메모리에서 가져와 처리하고, 처리 결과를 다시 메인 메모리에 저장합니다.
이런 방식으로 CPU, 캐시 메모리, 메인 메모리는 서로 다른 역할을 하면서 협력해 컴퓨터 시스템을 운영합니다. CPU만으로 모든 작업을 처리하게 된다면, CPU의 속도에 비해 상대적으로 느린 메모리로부터 데이터를 가져오는 데 시간이 많이 소요되어 전체 시스템 성능이 저하될 수 있습니다. 따라서 캐시 메모리와 메인 메모리는 CPU의 작업 효율을 높이는 중요한 역할을 담당하게 됩니다.
✅DNS(Domain Name System)
🔸도메인 : 숫자 형태의 IP 주소를 사람이 기억하기 쉬운 문자로 표현한 주소
🔸DNS : 도메인(URL)과 IP 주소를 저장해 놓은 데이터베이스
전 세계의 IP 주소에 대응하는 도메인을 효율적으로 관리하기 위해 개발된 시스템이다.
휴대폰으로 전화를 걸 때 모든 전화번호를 외우지 않고, 휴대폰 연락처에 저장해 놓은 이름과 전화번호를 사용한다. 전화를 걸 상대방의 이름을 입력하면 연락처에서 이름에 대응하는 전화번호가 검색되는 시스템을 이용한 것.
2. 요청한 URL 이 캐시에 없으면, ISP 의 DNS 서버에 google.com(도메인)의 IP 주소를 찾기위해 DNS query를 날린다.
- 이 단계에서 도메인이름(google.com) 을 해당 IP 주소로 변환한다. IP 주소는 구글 웹 서버의 위치를 나타낸다.
🔸DNS 서버 : IP 주소와 도메인을 저장하고 맵핑하는 컴퓨터나 애플리케이션
우리들은 DNS서버에 도메인주소를 통해 IP를 물어보고 그 IP를 통해 웹 사이트에 접속할 수 있게 되는 것이다.
학교나 기업의 네트워크에서 자체적으로 DNS 서버를 만들어 운영하기도 하고, ISP가 관리하는 DNS 서버를 사용할 수도 있다. 이러한 DNS 서버들이 전 세계의 모든 호스트들의 IP 주소와 도메인을 관리하며 IP 주소를 도메인으로 변환하거나 도메인을 IP 주소로 변환하는 DNS 서비스를 제공하고 있다.따라서 도메인에 대응하는 IP 주소를 알고 싶거나 IP 주소에 대응하는 도메인을 알고 싶으면 DNS 서버에게 물어보면 된다.
DNS 서버에 IP 주소를 질의하기 위해서는 DNS 서버의 IP 주소를 내 컴퓨터가 알고 있어야 합니다. 보통은 ISP에서 기본적으로 제공하는 DNS 서버의 IP 주소가 내 컴퓨터에 설정되어 있다.
🔸ISP : KT/LG/SK 와 같은 ISP(통신사) DNS
🔸DNS 쿼리 : 웹 사이트의 이름을 해당 웹 사이트의 실제 위치를 나타내는 IP 주소로 바꾸는 데 필요한 요청
3. IP 주소를 확인한 후 브라우저는 해당 IP 주소의 서버와 TCP 연결을 시작한다. 3-way-handshake 방식으로 수행되며, 클라이언트와 서버간의 안정적인 연결을 확립한다.
IP 주소를 받았으니, 해당 주소와 서버를 연결해야한다. 브라우저는 인터넷 프로토콜을 사용해서 서버와 연결이 된다. 인터넷 프로토콜의 종류는 여러가지가 있지만, 웹 사이트의 HTTP의 경우에는 일반적으로 TCP를 사용한다.
🔸프로토콜의 뜻 더보기 눌러보기
🔸프로토콜
- 2대 이상의 컴퓨터와 다양한 네트워크 장비가 모인 네트워크에 서로 데이터를 주고받기 위해 합의된 규칙
- 네트워크에서 데이터를 주고받기 위해 네트워크를 구성하는 컴퓨터와 네트워크 장비들이 지켜야 할 규칙
- 프로토콜은 데이터를 누구에게, 무엇을, 언제, 어떻게 전송할 것인지, 즉 데이터 전송 상대방, 데이터의 형식, 데이터의 전송 순서와 절차, 데이터 전송 방법 등을 규정한다.
컴퓨터 간에 데이터를 전송할 때는 다양한 프로토콜 중에서 데이터 전송 목적, 즉 서비스의 종류에 따라 프로토콜을 조합하여 사용합니다. 예를 들어 인터넷에서 웹페이지를 주고받는 웹 서비스에서는 TCP 프로토콜, IP 프로토콜, HTTP 프로토콜을 조합해서 사용합니다.
따라서 다양한 언어 중에서 같은 언어를 사용해야 대화가 가능한 것처럼 네트워크에서도 데이터를 성공적으로 전송하기 위해서는 컴퓨터와 네트워크 장비들이 같은 프로토콜 조합을 사용해야 합니다.
🔸 인터넷에서의 데이터 전송
오늘날 어떤 컴퓨터를 사용하든 전 세계 어디에서나 인터넷에 접속할 수 있는 것은 대부분의 컴퓨터와 네트워크 장비가 인터넷의 표준인 TCP/IP 모델의 프로토콜에 따라 만들어졌기 때문이다. 즉, 기기의 하드웨어는 프로토콜이 정하는 표준 규격에 따라 제작되고 소프트웨어는 프로토콜이 정한 데이터의 전송 순서와 절차, 데이터 전송 방법 등을 구현할 수 있도록 프로그래밍되는 것이다.
내 컴퓨터로 웹 브라우저를 열어 인터넷에 접속할 수 있는 것은 웹 브라우저라는 응용 소프트웨어(애플리케이션)와 응용 소프트웨어를 동작시키는 운영체제라는 시스템 소프트웨어가 프로토콜에 따라 프로그래밍되고, 내 컴퓨터에 설치된 랜 카드, 내 컴퓨터와 연결된 인터넷 공유기 같은 하드웨어가 프로토콜에 따라 만들어졌기 때문이다.
웹 애플리케이션을 만드는 창업자의 입장에서 생각해보면 TCP/IP 모델의 프로토콜에 따라 웹 애플리케이션을 프로그래밍해야 사용자들이 인터넷에서 웹 브라우저를 통해 웹 애플리케이션과 통신하며 웹 애플리케이션이 제공하는 서비스를 이용할 수 있게 되는 것이다. 웹 애플리케이션이 동작하는 웹 서버 컴퓨터의 운영체제도, 웹 서버 컴퓨터의 랜카드나 라우터 같은 네트워크 장비도 TCP/IP 모델의 프로토콜에 따라 만들어야 한다.
✅TCP/IP 프로토콜(Transmission Control Protocol/Internet Protocol)
인터넷에서 가장 널리 사용되는 프로토콜 스택으로, 데이터를 안정적으로 주고받을 수 있게 하는 통신 규약이다. 즉, TCP/IP 두 가지 프로토콜 방식을 조합하여 인터넷 통신하는 것을 TCP/IP 라고 부르는 것.
송신자가 수신자에게 IP 를 사용하여 최대한 빠르게 패킷을 전송하면 TCP 를 활용해 패킷을 정상적으로 수신 받는다.
TCP | IP |
TCP는 데이터를 패킷(인터넷에서 전송되는 데이터의 기본단위로 '헤더' 와 '데이터 조각' 이라는 두부분으로 구성)으로 분할하고, 이 패킷들을 목적지에 안정적으로 전달하는 역할을 합니다. TCP는, 패킷을 정상적으로 받을 수 있도록 하는 프로토콜입니다. 꼼꼼하게 보내는게 목적이기 때문에, IP 보다 패킷 전송 속도는 느리지만, 패킷 전달 여부를 보증하고, 패킷을 송신 순서대로 받게 해줍니다. 즉, 목적지에 도착한 패킷들을 순서대로 정렬하고, 손상되거나 손실된 패킷이 있다면, 출발지에 재요청하는 방식으로 진행됩니다. IP 프로토콜보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 IP 프로토콜의 한계를 보완할 수 있다. |
IP는, 패킷 데이터들을 최대한 빨리 특정 목적지 주소로 보내는 프로토콜입니다.빨리 보내는게 목적이기 때문에, 패킷 전달 여부를 보증하지 않으며, 패킷을 보낸 순서와 받는 순서가 다를 수 있습니다. |
이 두 프로토콜을 합쳐 TCP/IP라 부르며, 이것은 인터넷의 핵심 구조를 이루는 기반 기술이다. 이외에도 TCP/IP 프로토콜 스택에는 다양한 보조 프로토콜이 포함되어 있다. 예를 들어, DNS(Domain Name System)는 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환하는 역할을 하고, HTTP(Hypertext Transfer Protocol)는 웹 페이지를 전송하는데 사용됩니다. 이러한 프로토콜들 모두가 TCP/IP 위에 구축되어 있다.
4. TCP 연결이 확립되면, 브라우저는 HTTP 프로토콜을 사용하여 요청 메시지를 생성해서 웹서버에 HTTP 요청을 한다.
✅HTTP(HyperText Transfer Protocol)
- 인터넷에서 하이퍼텍스트 문서인 HTML로 만든 웹페이지를 전송하기 위해 사용되는 프로토콜
- 즉, HTTP는 웹 브라우저와 웹 서버가 통신하는 절차와 형식을 규정한 것입니다.
- 구체적으로 HTTP는 웹 브라우저가 웹 서버에게 웹 페이지를 요청(리퀘스트, Request)하는 방식과 웹 서버가 웹 브라우저에게 응답(리스폰스, Response)하는 방식을 정합니다.
- 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
✅HTTP 메세지
- 서버와 클라이언트 간에 데이터가 교환되는 방식
- 메세지 타입 : 1) Request : 클라이언트-> 서버 / 1) Response : 서버 -> 클라이언트
메세지는 기본적으로 시작줄(Start-Line) , 헤더 블록(Header), 본문(Body) 세 부분으로 이루어진다.
1) 시작줄 : HTTP 요청메세지에는 서버가 실행해야할 요청(URL 과 메서드)이 들어있고, HTTP 응답 메시지의 시작줄에는 서버가 요청을 실행한 결과(HTTP 버전 + 상태코드)가 한줄로 표시된다.
2) 헤더 블록 : 속성
3) 본문 : 데이터를 담고 있으며, 아예 없을 수도 있다.
시작줄과 헤더 블록을 묶어서 head 라고 부른다.
요청과 응답 모두 기본적으로 구조가 같다.
[GIF image를 가져오기 위한 요청과 응답 메시지]
🔸요청 메세지 형식과 응답 메세지 형식을 보려면 더보기 누르기
요청 메시지 형식
요청 메시지를 간단히 나타내면 다음과 같다.
<메서드> <요청 URL> <버전>
<헤더>
<엔티티 본문>
응답 메시지 형식
응답 메시지 형식은 요청 메시지 형식에서 시작줄만 다르다.
<버전> <상태 코드> <사유 구절>
<헤더>
<엔티티 본문>
5. 서버는 response 메시지를 생성하여 다시 브라우저에게 데이터를 전송합니다.
6. 브라우저는 받은 HTML 문서를 파싱하고 화면에 렌더링합니다.
참고자료
https://better-together.tistory.com/70
https://livenow14.tistory.com/57
https://better-together.tistory.com/128
'컴퓨터 기초 지식 > 네트워크' 카테고리의 다른 글
내부망, 외부망, 망분리 (0) | 2024.09.26 |
---|