CS/Network

[네트워크/Network] 웹 캐시(Web Cache; 프록시 서버)를 통한 응답 속도 향상 원리 이해하기

💡 0. 웹 캐시? 웹 캐시(Web cache; 프록시 서버)는 원출처의 웹 서버를 대신하여 HTTP 통신을 대신하는 네트워크 개체입니다. 웹 캐시는 자체의 저장 디스크를 가지고 있어서 최근 호출된 객체의 사본을 저장 및 보존하고 아래 그림처럼 모든 브라우저는 사용자의 모든 HTTP 요구가 웹 캐시에 가장 먼저 보내지도록 구성될 수 있습니다. 이 때, 리버스 캐싱(Reverse Caching)이란 웹 서버로 유입되는 HTTP 트래픽을 캐싱 시스템이 저장하고 있다가 동일 요청이 들어왔을 때 캐싱 시스템이 이 데이터를 돌려줌으로써 빠른 응답 성능을 제공하는 방법을 말하는데요. 위 그림에서 사용자가 'http://www.xxxx.com/someImage.png '라는 객체(데이터)를 요구한다고 해봅시다. 그러..

2021.09.29 게시됨

CS/Network

[네트워크/Network] TCP는 어떻게 신뢰적인 데이터 전달을 할까?

👀 0. 들어가면서 이번 시간에는 트랜스포트 계층의 프로토콜은 TCP에 대해 이야기해보려고 합니다. UDP에 대한 정리는 아래 포스팅에 있으니 참고해주세요. [네트워크/Network] 비연결형 트랜스포트 UDP 정리 💡0. 들어가면서 이전 포스팅에서 OSI 7계층에 대해 정리를 했었는데요. 트랜스포트 계층의 기본적인 역할은 네트워크 계층과 애플리케이션 레벨 프로세스 간의 데이터를 넘겨주기 위해서 다중 studyandwrite.tistory.com 한편, TCP는 신뢰적인 데이터 전송, 혼잡 제어 등 여러가지 기능을 제공하는 프로토콜이기 때문에 설명할 내용이 굉장히 많습니다. 그래서 앞으로 몇 개의 포스팅에 걸쳐 이러한 내용들을 다뤄보도록 하겠습니다. 우선, 이번 포스팅에서는 TCP의 가장 기본적이면서도 ..

2021.09.13 게시됨

CS/Network

[네트워크/Network] 인터넷은 어떻게 URL 주소의 서버를 찾아갈까? - DNS의 동작 원리

💡 0. 문제 "내가 나인지 증명할 수 있는 방법은 무엇일까요? 가장 쉽게 떠올릴 수 있는 방법은 자신의 주민등록번호를 가지고 이야기하는 것입니다. 하지만 우리는 일상생활에서 자신을 표현할 때 "안녕하세요 저는 960918-1******" 입니다." 라고 표현하지는 않습니다. 복잡하기 때문이죠. 대신에 우리는 "안녕하세요, 저는 조성현입니다"라고 자신의 이름을 가지고 소개를 합니다. 인터넷도 마찬가지입니다. www.naver.com, www.google.com처럼 호스트 네임(Host name)을 통해 자신을 표현합니다. 하지만 우리 사회와는 다르게 문제가 하나 생깁니다. 그것은 바로, "네트워크 통신에서는 IP Address를 통해 인터넷의 위치에 대한 정보를 얻는데, 호스트 네임에는 IP Addres..

2021.09.10 게시됨

CS/Network

[네트워크/Network] 네트워크의 기본: OSI 계층 구조와 캡슐화

🤔 0. 개요 "OSI 7계층이 무엇인가요?" "컴퓨터 네트워크를 왜 7계층으로 나누나요?" "메시지, 데이터그램, 세그먼트의 차이와 캡슐화는 무엇인가요?" CS를 공부해본 사람이라면 한 번쯤은 OSI 7계층에 대해 들어보았을겁니다. 저 역시 전공 수업에서도 배웠고 인터넷에서도 많이 보았던 내용입니다. 하지만 7개의 계층을 외우려고만 했던 시기에 왜 OSI 7계층이 존재하는지, 어떤 모습으로 존재하는지에 대한 이해는 잠시 뒤로 미뤄뒀던 것 같습니다. 그래서 이번 기회에는 OSI 계층 구조, 그리고 이 맥락과 이어지는 캡슐화에 대한 내용에 대해 이해를 해보려고 합니다. (외우지 말고!) 아래는 [컴퓨터 네트워크 하향식 접근]이라는 전공 서적에 있는 그림입니다. 이 그림이 OSI의 계층 구조를 이해하기 쉽게..

2021.09.08 게시됨

CS/Network

[네트워크/Network] TCP 연결 관리와 2, 3, 4 Way Handshaking(핸드쉐이킹)에 대해

📋 1. 오버뷰(Overview) 아래 간략한 설명을 보면서 TCP 핸드셰이킹에 대해 감을 잡아보겠습니다. TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 "핸드셰이크"를 먼저 해야 한다는 것에서부터 연결지향형(connection-oriented)이라는 특징을 갖고 있습니다. 한 호스트에서 동작하는 프로세스가 다른 호스트의 프로세스와 연결하고 싶다고 해볼까요? 이 때, 연결을 초기화하는 프로세스를 클라이언트 프로세스, 다른 프로세스를 서버 프로세스라고 하겠습니다. 클라이언트 애플리케이션 프로세스는 서버 측의 프로세스와 연결을 설정하기를 원한다고 TCP 클라이언트에게 먼저 말합니다. 그러면 첫번째 TCP 세그먼트를 통해 서버 측 프로세스에게 알림이 가겠죠. "A..

2021.09.08 게시됨

CS/Network

[네트워크/Network] http와 https는 뭐가 다른거야?(feat. SSL, TLS)

💡 0. 들어가면서 1990년대 초, 우리가 많이 들어본 월드 와이드 웹(WWW)이 등장했습니다. 월드 와이드 웹은 온-디맨드(On-demand) 방식으로 동작하면서, 사용자들이 원할 때 원하는 것을 수신할 수 있도록 해주었죠. 웹을 통해 사람들은 어떤 정보에 대해 쉽게 접근할 수 있게 되었고, 모든 사람이 매우 낮은 비용으로 웹에 컨텐츠를 퍼블리시할 수 있게 되었습니다. 또한 웹과 관련된 프로토콜은 유튜브, 웹-기반 이메일, 인스타그램 등 대부분의 모바일 인터넷 애플리케이션을 위한 플랫폼을 제공하게 되었습니다. 월드 와이드 웹에 대해서 더 깊게 설명하는 것은 잠시 미뤄두고, 다음의 세 가지 기능으로 월드 와이드 웹을 요약할 수 있을 것 같습니다. 첫 번째 통일된 웹 자원의 위치 지정 방법 예를 들면 U..

2021.09.06 게시됨