목록전체 글 (111)
Shine's dev log

0. Transport Layer 앞서 살펴본 TCP/IP 프로토콜 스택에서 Application Layer 바로 아래에 위치하는 Transport Layer에 대해 알아보자. 1. Transport Layer의 역할 Transport Layer의 역할은 크게 두가지가 있다. 1) Source(출발지) 부터 Destination(도착지) 까지 패킷이 제대로 전송될 수 있도록 함 2) Application Layer에서 만든 데이터를 일정한 크기로 자름 이처럼 Transport Layer는 실질적으로 패킷들이 출발지에서 도착지까지 제대로 전송될 수 있도록 하는 프로토콜을 제공하며, 데이터를 패킷단위로 자르는 역할 또한 수행한다. 2. Transport Layer 프로토콜 종류 물론 세부적으로 들어가면 Tr..

1. 유튜브와 넷플릭스 최근 유튜브나 넷플릭스같은 비디오 스트리밍 사이트가 폭팔적으로 늘어나고 있고, 그 수요도 엄청나게 늘어나고 있다. 해당 서비스를 제공하는 사업자는 늘어난 수요를 맞추기 위해서 다양한 기술을 사용해야 한다. 기본적으로 하나의 서버를 사용하여 클라이언트의 요청에 응답하는 방식은 데이터의 양이 엄청나게 큰 비디오 파일에서는 적합하지 않을 것이다. 이번에는 과연 유튜브나 넷플릭스같은 회사가 어떻게 사용자에게 유연하게 컨텐츠를 제공할 수 있는지 알아보자. 2. DASH (Dynamic, Adaptive Streaming over HTTP) 우선, DASH라는 기술을 알아보자. DASH는 컨텐츠 파일을 서로 다른 rate의 덩어리로 만들어 제공하는 기술이다. 대표적으로 유튜브에서 하나의 영상..

1. 이메일 프로토콜 최근에는 다양한 메신저와 어플리케이션을 통해 서로 대화를 주고받지만, 과거에는 주로 이메일을 통해 인터넷 상에서 대화를 주고받았다. 사실 이메일 프로토콜 자체가 기술적으로 큰 의미가 있는 것은 아니지만, 그래도 기본적으로 어떤 원리로 이메일이 전송되고 수신되는지 간단하게 알아보자. 2. 이메일을 위한 구성요소 이메일을 주고받기 위해서는 크게 4가지 구성요소가 필요하다. 1) User agent - 메일을 송수신하기 위한 어플리케이션으로, 과거에는 전문 프로그램을 사용하기도 했지만 최근에는 그냥 브라우저에서 사용하는 경우가 많다. ex) thunderbird, Outlook, 인터넷 브라우저 2) Mail server - 메일을 송/수신하기 위한 서버. 사용자들이 보낸 메일들을 처리하..

0. DHT란? DHT (Distributed Hash Table)은 파일을 공유하는 방법 중 하나이다. 앞서 살펴본 P2P모델의 Gnutella는 중앙 서버가 없지만 속도가 느리다는 단점이 있고, Napster는 중앙 서버가 있어 속도는 빠르지만 중앙 서버의 부담이 크다는 단점이 있었다. DHT는 위의 약점들을 보완할 수 있는 방식으로, Gnutella와 유사하다고 볼 수 있지만, 해시 테이블을 사용해 더 효율적으로 처리한다는 특징이 있다. 자세한 원리를 살펴보자. 1. 해시테이블 DHT의 핵심은 해시테이블이다. 해시 함수는 Key와 Value로 구성되어 있고, 해시함수에 Key값을 넣으면 테이블의 index가 나오는 형태이다. 해시 테이블에서 index의 값은 범위가 지정되어 있는 경우가 많은데, 주..

1. P2P 구조 앞서 인터넷을 통해 여러 서비스를 이용할 때, 기본적으로 서버 - 클라이언트 모델을 살펴보았다. 서버가 서비스를 제공하고 클라이언트는 서비스를 이용하는 서버 - 클라이언트 모델은 가장 기본적이면서도 널리 사용되는 통신 모델이다. 하지만, P2P (Peer 2 Peer) 모델도 실생활에서 심심치않게 찾아볼 수 있다. P2P는 서버가 컨텐츠를 제공하는 것이 아니라 임의의 end system 들끼리 직접 컨텐츠를 송/수신하는 구조이다. 대표적으로 파일을 공유하는 서비스인 BitTorrent, 음성 서비스를 제공하는 Skype, 스트리밍 서비스를 제공하는 Kankan 등이 P2P 모델을 이용한다. 2. P2P의 역사 1980년대에 Usenet이라는 서비스가 P2P의 시초라고 볼수도 있겠지만, ..

1. DNS (Domain Name System)란? DNS는 한마디로 말해서 사람들이 쓰기 편한 호스트 네임(www.naver.com)을 컴퓨터가 알아들을 수 있는 아이피 주소(125.209.222.141)로 바꿔주는 서비스이다. 세상에 있는 모든 서버의 주소는 IP 주소를 가지고 있다. 따라서 사용자들이 해당 서버에 접속하기 위해서는 그 서버의 IP 주소를 외우고 입력해야 한다. 하지만, IP 주소는 보다시피 그냥 숫자와 점의 조합으로 이루어진 주소로, 사람들이 외우고 사용하기 매우 불편하다. 그래서 DNS 라는 서비스를 이용해 영문 주소와 IP 주소를 쉽게 매핑(mapping)하여 사용할 수 있는 것이다. 즉, 우리는 인터넷을 사용할 때 항상 DNS 서비스를 이용하는 셈이다. 유튜브를 보려고 www..