yunki Kim Blog

「Do What You Love」

Chapter 2. Story 5. IP와 이더넷의 패킷 송/수신 동작

패킷의 기본   TCP가 속한 레이어는 접속, 송/수신, 연결 끊기에서 통신 상대와 대화 시 필요한 데이터를 IP 담당 레이어에 의뢰해 패킷의 모습으로 만들어 상대에게 도착하게 한다.   패킷은 크게 헤더와 데이터 두 부분으로 나뉜다. 헤더는 패킷 맨 앞에 있는 제어정보이다. 데이터는 패킷으로 운반하는 패킷의 내용이다.  ...

Chapter 2. Story 3. 데이터 송/수신 한다.

프로토콜 스택에 HTTP Request message 를 넘긴다.   connect() 호출로 인한 3-way-handshake가 완료되면 데이터 송/수신이 시작된다. 송/수신 동작은 다음과 같은 순서로 진행된다.   1. 애플리케이션이 write()를 호출해 송신 데이터를 프로토콜 스택에 건네준다.   2. 프로토...

Chapter 2. Story 4. 서버에서 연결을 끊어 소켓을 말소한다

데이터 보내기를 완료했을 때 연결을 끊는다.   애플리케이션이 송신해야 하는 데이터를 송신 완료했다고 판단하면 송/수신을 종료한다. 이때, 어디에서 송/수신을 종료하는지는 애플리케이션마다 다르다. 웹의 경우 서버가 요청에 대한 응답을 보내면 완료로 간주하고 서버 측에서 끊기에 들어간다. 구체적인 동작 과정은 다음과 같다.  1.F...

티스토리 버리기

  최근 카카오와 관련된 모든 서비스가 먹통됨에 따라 티스토리 블로그 역시 한동안 먹통이된 경험을 했다. 티스토리가 먹통이 되자마자 내가 그동안 작성해 놓았던 글들을 복구할 수 없을지도 모른다는 걱정이 앞섰다. 다행이 데이터에는 아무런 이상이 없었지만, 블로그 서비스에 대한 믿음이 사라졌다. 그에 따라 "차라리 github.io로 하나 만들어...

1.9~1.11 비트 연산

1.9 비트 연산   모든 논리적 처리를 분해해 비트로 표현할 수 있다고 해도, 비트 자체로는 아무런 정보가 되지 못한다. 비트 자체는 다른 비트와의 관계를 가질 가능성이 없다. 비트를 통해 결과를 내기 위해선 한 개 이상의 비트를 통해 어떤 관계성을 판단하고 한 개 이상의 비트를 출력하는 비트 연산이 필요하다.   가장...

1.6~1.8 비트

1.6 조지 부울의 등장   조지 부울은 모든 논리는 0과 1의 두 값으로 환원할 수 있다는 논리를 발표했고 이를 부울 대수라 부른다. 부울 대수는 컴퓨터에는 왜 True(1), False(0)만 표현할 수 있는 2치 논리형이 좋은가의 논리적 근거가 된다.    조지 부울이 밝힌 논리를 실제의 전기 회로로 실현한 것이 논리 ...

1.2~1.5 디지털과 아날로그

1.2 연속과 이산   아날로그와 디지털의 차이는 연속과 이산에 있다. 연속은 끊어진 자국이 없는 상태, 이산은 끊어진 자국이 있는 상태이다.   연속은 끊어진 단위가 존재하지 않기 때문에 무한하게 자를 수 있는 반면 이산은 사전에 결정된 최소한의 해상도(또는 단위)가 존재하기 때문에 더 이상 자를 수 없다....

로직 처리 순서와 방식에 따른 속도 차이 비교

  리팩터링 미션을 수행하던 중 하나의 리팩터링 지점을 여러 방식으로 리팩터링 할 수 있다는 생각을 하게 되었고, 이 방식들의 차이가 프로그램 실행 속도에 얼마나 영향을 미치는지 궁금증이 들었다.   궁금증이 발생한 부분은 다음과 같다.     1. 객체 상태를 변경해야 할 때 단순 setter를 사용하는 것과 새로...

무중단 배포 전략

  많은 서비스 기업들이 짧은 주기로 배포를 진행하고...

Rolling deployment를 위한 nginx 설정

  프로젝트를 진행하면서 무중단 배포를 적용하기 위해...