2018/01 19

[Network] Transport Layer (트랜스포트 계층) - 3.3 비연결형 트랜스포트: UDP

3.3 Connectionless Transport: UDP만약 우리가 트랜스포트 계층 프로토콜의 설계에 관심이 있다고 하자. 그렇다면, 이 프로토콜은 적어도 네트워크 계층과 해당하는 애플리케이션 레벨 프로세스 간의 데이터를 넘겨주기 위해서 multiplexing과 demultiplexing 서비스를 제공해야 한다. [RFC 768]에 정의된 UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 통신한다. UDP는 multiplexing과 demultiplexing 기능과 간단한 오류 검사 기능을 제외하면 IP에 아무것도 추가하지 않는다. 다시 말해, 애플리케이션이 UDP로 통신한다면, 이는 IP와 직접 통신하는 것과 다름없다. UDP는 세그먼트를 송신하기 전에 송신 트랜스포트 계층의 개체들과 ..

IT/Network 2018.01.16

[Network] Load Balancing and Clustering (로드밸런싱과 클러스터링)

Load Balancing and Clustering (로드밸런싱과 클러스터링)1. 로드밸런싱이란?서버의 로드를 클러스터링한 서버별로 균등하게 나누어주는 서버를 말한다. 예를 들어, 하나의 서버에 사용자가 많이 몰릴 경우, 해당 서버가 다운될 수 있다. 또 서버에 이상이 생기는 경우에도 서버가 다운될 수 있다. 로드밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에서 서비스를 지속하여, 사용자들이 문제를 인지하지 못하게 할 수 있다. 로드밸런싱의 성능과 안정성이 보장되어야 하는 경우 특별한 하드웨어 장비가 이용되는데, 이것이 로드밸런서 이다. (물론 로드밸런서는 소프트웨어로도 구현이 가능하다.) 로드밸런싱을 위한 서비스 요청 처리 알고리즘은 다양하다. 랜덤, 라운드 로빈, CPU나 메모리 사..

IT/Network 2018.01.15

[Network] Transport Layer (트랜스포트 계층) - 3.2 다중화와 역다중화

3.2 Multiplexing and Demultiplexing 네트워크 계층이 제공하는 host-to-host delivery service에서 host에서 동작하는 애플리케이션에 대한 process-to-process delivery service로 확장하는 것을 transport 계층의 다중화 (multiplexing)와 역다중화 (demultiplexing)라고 한다. 목적지 호스트에서의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신한다. 트랜스포트 계층은 호스트에서 동작하는 해당 애플리케이션 프로세스에게 이 세그먼트의 데이터를 전달하는 의무를 가진다. 네트워크 애플리케이션의 한 부분으로서 프로세스는 socket 을 가진다. 이를 이용해서 네트워크에서 프로세스로 데이터를 전달..

IT/Network 2018.01.15

[Python] import this

[Python] import thispython을 다루다가 이스터에그처럼 보이는 모듈을 만났다. 바로 import this이다. 이스터에그처럼 보였지만, 읽어보고 나면 굉장히 철학적인 글을 보았다는 생각이 들지도 모른다. 12345678910111213141516171819202122232425> python> import this The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than d..

IT/Python 2018.01.14

[Network] Transport Layer (트랜스포트 계층) - 3.1 트랜스포트 계층 서비스 및 개요

3.1 Introduction and Transport-Layer ServicesTransport Layer Protocol은 서로 다른 호스트에서 동작하고 있는 애플리케이션 프로세스에 논리적 통신(logical communication)을 제공한다. Logical communication 을 통해 애플리케이션의 관점에서 프로세스가 실행 중인 두 호스트가 직접 연결되어 있는 것처럼 느끼게 한다. 물론 현실적으로는 서로 정반대에 서서 셀 수 없이 많은 라우터와 다양한 링크들을 통해 연결되어 있는 것이지만 말이다. 애플리케이션 프로세스는 Transport layer가 제공하는 Logical communication을 이용하며, 서로에게 message를 보낼 수 있다. 그리고 이를 통해 애플리케이션 프로세스는..

IT/Network 2018.01.13

[Network] Application Layer (애플리케이션 계층) - 2.6 비디오 스트리밍 및 DASH 정리

2.6 Video Streaming and Content Distribution Networks현재 스트리밍 영상은 북미 지역의 가정 ISP의 트래픽 대다수를 차지하고 있다. 특히, 2015년 가정 ISP의 트래픽 중 Netflix나 YouTube 서비스는 그 자체만으로도 엄청나게도 각각 37%와 16%를 차지하고 있다.2.6.1 Internet Video스트리밍 비디오 애플리케이션은 영화나 TV 쇼나 녹화된 스포츠 경기나 Youtube에서 흔히 보이는 유저들이 직접 만든 영상과 같은 사전에 녹화된 비디오를 기반으로 한다. 이렇게 녹화된 영상은 서버에 위치하며, 사용자는 필요에 따라 비디오를 보기 위해 서버로 요청을 보낸다. Netflix, YouTube(Google), Amazon, Youku와 같은 ..

IT/Network 2018.01.12

[Network] Application Layer (애플리케이션 계층) - 2.4 DNS 정리 2.4.3 DNS Records and Messages

180111_CN_2_4_3 2.4.3 DNS Records and Messages 분산된 DNS 데이터베이스를 수행하는 DNS servers는 "Resource Records (RRs)" 를 저장한다. RR에는 hostname과 IP address를 이어주는 mapping도 포함하고 있다. 각각의 DNS reply message는 하나 이상의 resource records를 싣고 간다.Resource Records는 다음 4개의 필드를 4-tuple로 포함한다. (Name, Value, Type, TTL) • TTL은 RR의 수명 (Time to Live)으로 cache에서 해당 resource가 언제 지워져야 하는지 나타낸다. 일단 이 예제에서는 TTL은 무시하기로 한다. Name과 Value fie..

IT/Network 2018.01.11

[Network] Application Layer (애플리케이션 계층) - 2.4 DNS 정리 2.4.2 Overview of How DNS Works

2.4.2 Overview of How DNS Works 가령 사용자의 host에서 동작하는 웹 브라우저나 메일 앱이 hostname을 IP address로 변환할 필요가 있다고 가정하자. 이 애플리케이션은 변환되어야 하는 hostname을 담아 client side의 DNS를 호출할 것이다. 호출된 사용자의 host에 위치한 DNS는 네트워크로 query message를 보낼 것이다. 모든 DNS query와 reply message는 port 53을 통해 UDP datagram이 되어 전송된다. 수 ms에서 sec의 시간이 흐른 잠시 후, 사용자의 host에 위치한 DNS는 가장 바람직한 mapping을 DNS reply message를 통해 받는다. 그리고 해당 mapping을 자신을 호출한 애플리..

IT/Network 2018.01.10

[Python] "Python API tutorial - An Introduction to using APIs" - 파이썬 API 튜토리얼 (번역)

Python API tutorial - An Introduction to using APIs API라고 불리는 Application Program Interfaces는 원격 웹 사이트에서 데이터를 검색해오는데 흔히 사용된다. Reddit이나 Twitter, Facebook은 모두 그들의 API를 활용해 특정 데이터를 제공한다. API를 사용하기 위해서는 원격 웹 서버에 요청하고, 필요한 데이터를 검색해야 한다. 하지만 왜 쉽게 다운로드할 수 있는 static dataset 대신에 API를 이용할까? APIs는 다음과 같은 케이스에 유용하다. 데이터가 빠르게 변화하는 경우이다. 주식 가격 데이터를 예로 들 수 있다. 생각해보면, 그 데이터 셋을 매분마다 새로 생성하고 새로 다운로드 받는다는 것은 상식적이지..

IT/Python 2018.01.10