CS/Network

[네트워크/Network] IPv4 주소 체계와 DHCP

1. 용어 정리 지난 포스팅에서는 IPv4 데이터그램의 포맷과 단편화에 대한 공부를 했고, 이번 시간에는 IPv4 주소체계에 대해서 공부를 해보려고 합니다. 본격적인 논의를 하기에 앞서, 호스트와 라우터가 인터넷에 연결되는 방식에 관한 몇 가지 단어를 정의해보려고 하는데요. 호스트는 일반적으로 네트워크와 연결되는 하나의 링크를 가집니다. 호스트 IP는 이 링크를 통해 데이터그램을 보내게 되며, 이 때 호스트와 물리적 링크 사이의 경계를 "인터페이스"라고 합니다. 한편, 라우터의 작업은 한 링크로부터 데이터그램을 수신하여 다른 링크로 전달하는 것이므로 라우터는 2개 이상의 연결된 링크가 필요합니다. 라우터와 이런 링크 사이의 경계 또한 인터페이스라고 하며 각 링크마다 하나의 인터페이스를 가지고 하나의 라우..

2021.10.13 게시됨

CS/Network

[네트워크/Network] IPv4 데이터그램의 형식과 단편화(Fragmentation)

💡 0. 들어가면서 이전에 OSI 7계층에 대해 공부하면서 정리한 내용 중에 일부를 가져와봤는데요. 아래 설명처럼 네트워크 계층은 출발지 호스트에서 트랜스포트 계층 프로토콜(TCP, UDP)의 세그먼트를 받아서 캡슐화하고 전달합니다. 그리고 이 때 네트워크 계층에서 움직이는 패킷을 "데이터그램"이라고 하죠. 그래서 이번 시간에는 IPv4 데이터그램의 형식에 대해 살펴보고 단편화(Fragmentation)라는 개념에 대해 알아보려고 합니다. 그리고 이 후 포스팅에서는 IPv4의 주소체계에 대해 공부해보고 IPv6에 대한 내용까지 공부해보겠습니다. 이번 포스팅에서는 IPv4 기반 데이터그램의 형식과 각 필드가 어떤 역할을 하는지, 그리고 데이터그램이 링크 계층을 통해 전달될 때 '프레임'이라는 단위로 단편화..

2021.10.12 게시됨

CS/Network

[네트워크/Network] 라우터의 패킷 지연과 패킷 스케줄링 방법

💡 0. 들어가면서 지난 포스팅에서는 라우터의 구조를 간단하게 살펴보고, 입력포트의 기능에 대해 공부했습니다. 특히, 입력 포트의 마지막 부분에서는 포워딩 테이블을 참조하여 도착된 패킷이 스위칭 구조를 통해 전달되는 라우터 출력 포트를 결정했는데요. 이 때 수많은 패킷 주소를 적은 수의 포워딩 테이블 엔트리로 관리하기 위해 프리픽스(Prefix)를 이용한 목적지 기반 전달 방법에 대해 살펴봤었습니다.

2021.10.11 게시됨

CS/Network

[네트워크/Network] HTTP 스트리밍 및 대시(DASH) 기술

📺 인터넷 비디오 얼마 전에는 넷플릭스에서 DP가 정말 흥행했고, 요즘에는 오징어게임이 전세계적으로 각광을 받고 있는데요. 그래서 이번 포스팅에서는 이와 관련된 인터넷 비디오의 개념과 HTTP 스트리밍 및 대시(DASH) 기술에 대해 알아보려고 합니다. 먼저, 비디오 애플리케이션이란 녹화된 영화나 TV 프로그램, 스포츠 경기 등을 대상으로 하는 애플리케이션을 말합니다. 녹화된 비디오는 서버에 저장되고, 사용자는 비디오 시청을 서버에게 온디맨드(On-Demand)로 요청하게 되죠. 넷플릭스나 유튜브, 왓챠 등이 이런 비디오 스트리밍을 지원하고 있습니다. 한편 비디오는 이미지의 연속으로서 일반적으로 초당 24개 또는 30개의 이미지로 일정한 속도로 표시됩니다. 여기서 비디오의 중요한 특징 중 하나는 "압축"..

2021.10.10 게시됨

CS/Network

[네트워크/Network] 라우터의 입력 포트 처리 및 목적지 기반 전달

0. 들어가면서 이전 포스팅에서 OSI 7계층에 대해 공부했었습니다. [네트워크/Network] 네트워크의 기본: OSI 계층 구조와 캡슐화 🤔 0. 개요 "OSI 7계층이 무엇인가요?" "컴퓨터 네트워크를 왜 7계층으로 나누나요?" "메시지, 데이터그램, 세그먼트의 차이와 캡슐화는 무엇인가요?" CS를 공부해본 사람이라면 한 번쯤은 OSI 7계층 studyandwrite.tistory.com OSI 7계층은 애플리케이션 계층 → 프레젠테이션 계층 → 세션 계층 → 트랜스포트 계층 → 네트워크 계층 → 링크 계층 → 물리 계층으로 이루어져 있었는데요. 네틍워크 계층의 근본적인 역할은 송신 호스트에서 수신 호스트로 패킷을 전달하는 것이며, 이를 위해 포워딩(Forwarding)과 라우팅(Routing)이라..

2021.10.09 게시됨

CS/Network

[네트워크/Network] TCP 혼잡제어에 대한 정리

💡 1. TCP 혼잡제어 TCP 프로토콜하면 가장 먼저 떠오르는 특징은 무엇인가요? 아마 많은 분들이 '신뢰적인 전송 서비스'를 TCP의 가장 큰 특징으로 꼽으실텐데요. 그런데 이 특징만큼 중요한 또 다른 특징이 있습니다. 바로 TCP 프로토콜의 혼잡제어 기능입니다. IP 계층은 네트워크 혼잡에 대해 종단 시스템에게 어떤 정보도 제공하지 않고 데이터그램을 운반하는 역할밖에 하지 않기 때문에, TCP는 네트워크 지원 혼잡제어가 아닌 종단 간의 혼잡제어를 사용합니다. 즉, TCP는 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하도록 하는데요. 만약 TCP 송신자가 자신과 목적지 간의 경로에서 혼잡이 없다고 여기면 송신자는 송신율을 높이고, 반면 혼잡한 상황을 마주하면 송신자는 송신율..

2021.10.08 게시됨

CS/OS

[운영체제/OS] 레이드(RAID; Redundant Array of Independent Disks)

[이전 포스팅] [운영체제/OS] 디스크 구조와 I/O 작업 스케줄링 💡0. 들어가면서 이전 포스팅까지 OS의 메모리 관리 기법에 대해 살펴봤습니다. 험난한 길이었죠... 이번 시간부터는 OS가 어떻게 디스크를 탐색하는지에 대해 공부해보려고 하는데요. 먼저 구글 studyandwrite.tistory.com 🤔 레이드(RAID)? 레이드(RAID)는 쉽게 말해서 값싼 디스크를 여러 개 사용해서 대용량으로 쓴다는 개념입니다. 이 방식은 여러 개의 디스크에 데이터를 나눠서 저장하기 때문에 데이터를 읽고 쓸 때 병렬 처리가 가능합니다. 그러면 I/O 작업에 대한 Throughput이 높아질 수 있고, 하나의 디스크가 터져도 다른 디스크에 백업을 해둠으로써 데이터의 다중성(Redundancy)을 확보할 수 있죠..

2021.10.06 게시됨

CS/Network

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

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

2021.09.29 게시됨

CS/Database

[데이터베이스/DB] 키(Key)의 종류와 개념

1-1. 들어가면서 데이터베이스는 수 많은 테이블과 그 안의 데이터들로 구성되어 있습니다. 그리고 그 테이블은 정렬되지 않고 조직화되지 않은 수천 개, 수만 개의 레코드로 확장되어 있습니다. 이러한 테이블 속에서 특정 레코드를 가져오려면 그 레코드를 유일하게 식별할 수 있는 조건으로 조회하는 작업이 필요한데요. 이 때 필요한 개념이 데이터베이스에서 키(Key)이며, 이번 시간에는 여러가지 키에 대한 개념에 대해 정리해보겠습니다. 우선 키의 정의는 아래와 같습니다. 키(Key): 관계형 데이터베이스(RDBMS)에서 테이블 관의 관계를 설정 및 식별하고, 테이블 내부의 레코드를 고유하게 식별하는 데 사용할 때 사용하는 속성 그리고 밑에서 강한 엔티티 타입과 약한 엔티티 타입을 설명하면서 부분키(Partial..

2021.09.26 게시됨

CS/OS

[운영체제/OS] 동기화 이슈 처리하기 - (2)

💡 1. High-level Synchronization ? 예전 포스팅에서 Software-only solution(피터슨 알고리즘)과 Hardware Atomic solution(Test-and-Set, Swap)으로 동기화 이슈를 처리하는 방법에 대해 공부해봤는데요. * 해당 부분에 대한 포스팅이 궁금하신 분은 아래 링크에서 확인해주세요. [운영체제/OS] 동기화 이슈 처리하기 - (1) 0. 문제 상황 // Producer = 데이터를 추가하는 역할(counter 증가) register A := counter; // load register A := registerA + 1; // add counter := registerA; // store // Consumer = 데이터를 빼는(소모하는.. s..

2021.09.24 게시됨