목록분류 전체보기 (112)
Shine's dev log
1. Reliable Data Transfer 신뢰성 있는 데이터 교환(이하 RDT)은 한마디로 "송/수신하는 데이터가 오류없이 온전히 전송되는 것" 이다. Transport Layer 에서는 신뢰성 있는 데이터 교환을 하고싶어 하지만, 그 아래의 레이어에서는 신뢰성을 보장할 수 없기 때문에 신뢰성 있는 통신에 문제가 생길 수 있다. 이러한 문제상황 속에서 Transport Layer 에서 적용 가능한 방식이 바로 RDT 프로토콜을 이용하는 것이다. 아래 그림을 살펴보자. 우선 패킷을 송신하는 경우, 상위레이어에서 보내려는 데이터가 있을 경우 rdt_send() 시스템 콜을 호출하여 RDT 프로토콜로 전송한다. RDT 프로토콜에서 신뢰할 수 없는 채널인 하위 레이어로 보낼 때 udt_send() 를 호출..
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의 시초라고 볼수도 있겠지만, ..