호우동의 개발일지

Today :

[Network] 트랜스포트 계층 프로토콜의 정의와 논리적 통신

트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜의 논리적 통신 다른 호스트에서 동작하는 애플리케이션 프로세스 간 논리적 통신을 제공 논리적 통신(logical communication) 애플리케이션 관점, 프로세스를 동작시키는 호스트들이 직접 연결된 것처럼 보인다는 의미 호스트는 수많은 라우터와 다양한 형태의 링크를 통해 연결되어 있음 → 이를 통해 서로 다른 지역에 존재할 수 있음 애플리케이션 프로세스는 메시지 송신을 하는데 논리적 통신을 사용한다. ← 메시지 운반에 사용되는 인프라스트럭처의 세부사항에 상관없이 메시지를 송신하기 위해서 논리적 통신의 개념(과정) 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현됨 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터..

article thumbnail
[Network] TCP 소켓 프로그래밍 개념 및 구현(Python)

클라이언트-서버 애플리케이션 개발 애플리케이션에 TCP, UDP 중 어떤 것을 사용할지 결정해야 함 TCP : 연결지향적 서비스 신뢰적 바이트 스트림 채널 제공 해당 채널을 통해 데이터가 두 종단 시스템 사이를 흐름 UDP : 비연결형 서비스 한 종단 시스템에서 다른 곳으로 데이터를 독립적인 패킷으로 만들어 전송 전송에 대한 보장을 하지 않는다. RFC 표준 프로토콜 vs 개인 독점 프로토콜 RFC 표준 프로토콜 오늘날 대부분의 네트워크 애플리케이션 독립 개발자가 개발한 클라이언트와 서버 프로그램 간의 통신을 포함 RFC에 정의된 프로토콜을 구현할 때, 해당 프로토콜과 잘 알려진 포트 번호를 사용 개인 독점 프로토콜 공개된 프로토콜을 구현하지 않음 → 다른 독립 개발자는 이 애플리케이션과 상호작용하는 코..

article thumbnail
[Network] UDP 소켓 프로그래밍 개념 및 구현(Python)

UDP를 이용한 소켓 프로그래밍 UDP 소켓 프로그래밍 과정 송신 프로세스가 데이터 패킷을 소켓 밖으로 내기 전에 먼저 패킷에 목적지 주소를 붙여 넣음 패킷이 송신자의 소켓을 통과 해당 소켓을 인터넷을 통해 수신 프로세스에 있는 소켓으로 라우트함 패킷이 수신 소켓에 도착 수신 프로세스는 소켓을 통해 해당 패킷을 추출하고 다음에 패킷의 콘텐츠를 조사 및 동작 UDP 패킷 구성 목적지 주소 목적지 주소 = 목적지 호스트 IP 주소 + 소켓 포트 번호 목적지 호스트 IP 주소 → 이를 통해 인터넷의 라우터는 목적지 호스트로 인터넷을 통해 패킷을 라우트 가능 소켓 포트 번호 포트 번호(port number) : 소켓이 생성될 때 소켓에 할당되는 식별자 호스트는 여러 개의 소켓을 갖는 많은 네트워크 애플리케이션 ..

[Network] 넷플릭스와 유튜브의 비디오 스트리밍 방식

스트리밍 저장 비디오 - 넷플릭스 넷플릭스 비디오 배포에는 2가지 주요 구성요소 아마존 클라우드 자체 CDN 인프라가 있음 아마존 클라우드 웹사이트는 아마존 클라우드에서 모든 것이 실행된다. 넷플릭스에서의 웹사이트 사용자 등록 및 로그인, 결제, 영화 장르 검색, 영화 추천 서비스 등 다양한 기능 처리 아마존 클라우드의 주요한 기능 콘텐츠 수집(contetent ingestion) 넷플릭스는 고객들에게 비디오 분배 전, 먼저 영화를 수집하고 처리해야 한다. 영화의 스튜디오 마스터 버전을 받아서 클라우드 시스템의 호스트에 업로드함 콘텐츠 처리(content processing) 아마존 클라우드 시스템의 기기에서는 각 영화의 여러 가지 형식의 비디오를 생성 ← 고객들의 다양한 플레이어 기기 사양에 적합하기 ..

article thumbnail
[Network] CDN의 구축 방식과 클러스터 선택 정책 및 DNS 활용

거대 데이터 센터 구축 및 직접 전송 인터넷 비디오 회사에서 스트리밍 서비스를 제공하는 가장 단순한 방법 인터넷 비디오 회사들은 엄청난 스트리밍 트래픽을 전 세계에 걸친 지점에 끊김 없이 안정적으로 제공하는 일을 한다. 이러한 일들은 매우 어려운 문제임 과정 단일한 거대 데이터 센터를 구축하여 모든 자료를 센터에 저장 전 세계의 사용자에게 비디오 스트림을 데이터 센터로부터 직접 전송 문제점 클라이언트가 데이터 센터로부터 멀리 있는 경우 서버로부터 클라이언트로의 패킷 경로는 많은 통신 링크와 ISP를 거쳐감 거쳐가는 많은 통신 링크 중 하나라도 비디오 소비율보다 낮은 전송용량인 경우 → 종단 간에 처리율이 낮아지고, 결국 사용자는 화면 정지 현상을 겪음 종단 간의 길이가 길어질수록 이런 현상은 증가 인기 ..

[Network] 인터넷 비디오 매체와 HTTP 스트리밍 및 DASH

인터넷 비디오 스트리밍 비디오 애플리케이션 → 미리 녹화된 비디오를 대상으로 한다. 녹화된 비디오는 서버에 저장되어 사용자가 서버에게 온디맨드 요청을 통해 시청 예 : 넷플릭스, 유튜브, 아마존, 틱톡 등 많은 인터넷 회사가 비디오 스트리밍 지원 비디오 매체의 특징 비디오는 일반적으로 초당 24개 혹은 30개의 이미지로 일정한 속도로 표시 비디오는 이미지의 연속이다. 압축되지 않은 디지털 인코딩된 이미지는 픽셀 단위로 구성 각 픽셀은 휘도와 색상을 나타내는 여러 비트들로 인코딩 됨 비디오의 중요 특징 - 압축 가능 비디오 품질과 비트 전송률은 서로 반비례하다. 현대 상용 압축 알고리즘은 원하는 모든 비트 전송률로 비디오 압축 가능 비트 전송률이 높을수록 이미지 품질이 좋아지고 사용자 시청 환경이 향상 압..

article thumbnail
[Network] P2P 파일 분배의 개념과 비트 토렌트

P2P 파일 분배 P2P 구조는 항상 켜져 있는 인프라스트럭처 서버에 최소한으로 의존한다. 인프라스트럭처 서버에 전혀 의존 안 할 수도 있음 cf ) 클라이언트-서버 구조 → 인프라스트럭처 서버에 많이 의존함 P2P는 간헐적으로 연결되는 피어(호스트 쌍)들이 서로 직접 통신 피어는 사용자가 제어하는 데스크톱과 랩톱, 스마트폰이 보유한다. 서비스 제공자가 소유하는 것이 아님 자연적인 P2P 애플리케이션 커다란 파일을 한 서버에서 다수의 호스트(피어)로 분배한다. 파일이 될 수 있는 것 리눅스 운영체제의 새로운 버전 기존 운영체제 혹은 애플리케이션을 위한 소프트웨어 패치(patch) MP3 음악파일 혹은 MPEG 비디오 파일 클라이언트-서버 파일 분배에서 서버는 파일 복사본을 각 피어들에게 보내야 함 → 이..

article thumbnail
[Network] DNS 레코드와 메시지

자원 레코드(resource record, RR) DNS 서버들은 호스트 이름을 IP 주소로 매핑하기 위해 자원 레코드를 저장한다. 각 DNS는 하나 이상의 자원 레코드를 가진 메시지로 응답 자원 레코드의 구성 4개의 튜플(tuple)로 구성 → {Name, Value, Type, TTL} TTL(time to live) : 자원 레코드의 생존 기간 자원이 캐시에서 제거되는 시간을 결정 Type의 종류 Name과 Value의 의미는 Type에 따른다. 여기서의 서술은 TTL을 무시한 채 작성 Type = A인 경우 Type A 레코드는 표준 호스트 이름의 IP 이름의 IP 주소 매핑을 제공 Name : 호스트 이름 Value : 호스트 이름에 대한 IP 주소 Type A 레코드 예시 → ( relay1...