yunki Kim Blog

「Do What You Love」

내 컴퓨터가 IP 주소를 할당받기 까지의 과정

Address block 할당받기 하나의 그룹이 자신들만의 서브넷을 할당받기 위해선 ISP를 통해야 합니다. 네트워크 관리자는 ISP에게 서브넷 할당을 요청하면 ISP 자신들이 가지고 있던 subnet block에서 일부분을 할당해 줍니다. 예를 들어 ISP가 200.23.16.0/20이라는 subnet block을 가지고 있고 이를 8개의 동일한 ...

NAT - Network Address Translation

IPv4와 IP 주소 고갈 인터넷에 연결돼 있는 기기에게 IP 주소를 할당할 때는 각 기기마다 고유한 주소를 할당하는 것이 기본입니다. 그래야 기기를 식별할 수 있기 때문이죠. 하지만, 현재 사용 중인 IPv4는 2^32개, 약 43억 개의 주소만 할당할 수 있습니다. 인터넷에 연결되는 기기 대수가 폭발적으로 증가하면서 IPv4 주소는 2011년에 ...

TCP의 flow control과 congestion control

이 글을 읽기 전 TCP 송수신 과정에 대해 알고 있어야 합니다. TCP 송수신 과정에 대해 잘 알지 못한다면 다음 글을 우선 읽는 것을 추천합니다. Chapter 2 story 3. 데이터 송/수신한다. Flow control   TCP 커넥션이 성사되면 송수신 측은 각자의 수신 버퍼를 가지게 됩니다. TCP 커넥션을 통해 올바른 데이터를 ...

Chapter5-3 임계구역 해결 방법

임계구역 문제를 해결하는 가장 단순한 방법은 락을 거는 거다. 임계구역 문제를 해결하기 위한 세 가지 조건인 상호 배제, 한정 대기, 진행의 융통성을 모두 만족하는 락, 락 해제, 동기화 구현 방법을 알아보자. 아래 설명에서 다음과 같은 코드를 사용할 예정이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio....

Chapter5-2. 공유 자원과 임계구역

  여러 프로세스가 한정된 자원을 가지고 공동 작업을 하면 여러 문제가 발생할 수 있습니다. 공유 자원의 접근   공유 자원은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 racing condition이 발생할 수 있다. 이런 racing condition이 발생할 수 있...

chapter5-1. 프로세스간 통신.

  프로세스 간 통신은 하나의 컴퓨터에 존재하는 여러 프로세스끼리의 통신과 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신이 있다. 프로세스 간 통신 종류는 다음과 같이 크게 세 종류로 나뉜다. 1. 프로세스 내부 데이터 통신   하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신이다. 프로세스 내부의 스레드는 전...

QUIC protocol

TCP   TCP는 패킷 스위칭을 하는 컴퓨터 커뮤니케이션 네트워크 호스트들 간에 고신뢰성 프로토콜로 사용하기 위해 1970년대에 고안되었습니다. TCP는 HTTP와 같은 application layer protocol들의 기반으로 사용되고 있으며, 현재는 암호화된 데이터를 송수신하기 위해 때로는TLS도 같이 사용하고 있습니다.   ...

개략적인 컴퓨터 구조와 프로그램 동작 과정

  아래와 같이 "Hello world"를 출력하는 간단한 프로그램은 개발 공부를 처음 시작하는 사람이라면 누구나 한 번쯤은 작성해 봤을 겁니다.  1 2 3 4 5 #include <stdio.h>   int main(void) {    &...

Interrupt

  현대의 범용 PC는 한 개 이상의 CPU와 한 개 이상의 디바이스 컨트롤러가 버스를 통해 이어져 있는 형태를 띠고 있습니다. 버스는 컴포넌트들과 shared memory 간의 접근을 제공합니다. 버스는 data control signal을 싣고 다니는 통로입니다. 각 디바이스 컨트롤러는 특정 유형의 장치들을 제어합니다. 디바이스 컨트롤러에...

Chapter3-5. 동적 할당 영역과 시스템 호출

프로세스의 동적 할당 영역   프로세스는 다음과 같은 구조를 가진다.     코드 영역에는 프로그램 본체가 위치한다. 데이터 영역은 프로그램이 사용하려고 정의한 변수와 데이터가 존재한다. 포인터를 제외하면 일반적인 변수는 크기가 결정된다. 따라서 프로세스 실행 직전에 위치와 크기가 결정되기 때문에 정적 할당 영역...