📙 CS

📙 CS/📙 Network

[Network] 3-way & 4-way handshake (TCP Connection)

1️⃣ TCP (Transmission Control Protocol) TCP (Transmission Control Protocol) 란 전송 제어 프로토콜로, IP와 함께 'TCP/IP'로도 불린다. OSI 7 계층 중 전송 계층과 관련있으며, UDP와 함께 가장 널리 쓰인다. TCP는 연결형 서비스로, 패킷의 순서를 보장하며 신뢰성있는 전송을 위해 연결을 시작할 때와 종료할 때 handshake 과정을 거치게 된다. 즉, 3-way handshake 과정을 통해 연결을 설정하고, 4-way handshake 과정을 통해 안전하게 연결을 해제한다. TCP와 UDP의 개념은 중요하므로 다른 글에서 좀 더 자세히 다뤄보도록 하겠다. 2️⃣ Information 1) Port State Informatio..

📙 CS/📙 Network

[Network] OSI 7 계층 (OSI 7 Layer)

1️⃣ OSI 7 계층 개념 OSI 7 계층(OSI 7 Layer)은 'Open System Interconnection'의 참조 모델로, 1984년 국제 표준화 기구인 ISO에서 발표하였다. 통신 기술의 도입 및 기능 확장의 편의를 위해 프로토콜을 7 계층으로 나눴다. 이렇게 통신 기능을 계층화하여 프로토콜을 규정한 규격을 OSI 모델이라고 한다. 쉽게 말해 우리가 인터넷을 사용하는 등 네트워크간 통신이 발생할 때의 과정을 7계층으로 분류한 것이다. OSI 모델은 프로토콜이 아니라 유연하며 안전하고, 상호 연동이 가능한 네트워크 구조를 설계하고 이해할 수 있다. OSI 7 계층은 말 그대로 각각 특정 기능을 수행하는 서로 다른 7단계의 흐름을 나타낸다. 각 계층은 '헤더(Header)'와 '데이터 단위..

📙 CS/📙 OS

[OS] Synchronous / Asynchronous & Blocking / Non-Blocking

1️⃣ Synchronous(동기) vs Asynchronous(비동기) 1) 개념 우선 '동기'와 'Synchronous'의 어원부터 살펴보자. 한자로는 '同期'로, '같은 시각'이라는 뜻을 가진다. 이를 보면 얼추 이해할 수 있을 것 같지만, 꽤나 헷갈릴 수 있는 개념이기 때문에 영어의 어원도 함께 살펴보자. 우선 그리스어로 'Syn' 은 with, together인 '같이, 함께'의 뜻을 가진다. 다음으로 'chrono'는 '시각'의 뜻을 가진다. 즉, Syn + chrono + us 이 세 단어가 합쳐져 'Synchronous'가 완성된 것이다. 'Asynchronous'는 'Synchronous'에 반대를 나타내는 접두어인 'a'를 붙였다. 다시 말해 동기와 비동기는 반대의 개념이다. 이러한 개..

📙 CS/📙 Network

[Network] Load Balancing

1️⃣ 로드 밸런싱 개념 로드 밸런싱(Load Balancing)은 컴퓨터 네트워크 기술의 일종으로, 부하 분산이라고도 한다. 이는 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다. 쉽게 말해 서버가 처리해야 할 작업이나 요청을 여러 대의 서버로 분산하여 부하를 낮춰 처리하는 기술이다. 보통 트래픽이 많은 웹 사이트, FTP 사이트, NNTP 서버, DNS 서버 등에서 적용된다. 우리가 대형 마트에 갔을 때 계산대가 하나만 존재한다면 어떨까? 계산하려는 많은 사람들이 모이면서 일을 처리하는 속도가 굉장히 느려질 것이다. 하지만 계산대가 여러 개 존재하면 계산 업무를 적절히 배분하여 효율적으로 진행할 수 있게 된다. 혹은 새로 발매한 게임에 갑기 많은 사용자가 몰린다면..

📙 CS/📙 Network

[Network] SSL/TLS handshake

네트워크를 공부했던 사람이라면 TCP 의 접속 과정인 '3-way handshake', '4-way handshake' 등의 용어를 들어봤을 것이다. CS 스터디를 하던 중 나는 이번에 'SSL/TLS handshake'를 주제로 발표를 맡았다. 처음 들어봤기 때문에 생소했지만 꽤나 흥미로운 내용들이 많았다. 가령 HTTPS 에 접속하는 과정이 어떻게 이루어지는지 등 말이다. 공부하기 전 개념과 과정을 살펴보니 웹 개발자로서 꼭 필요한 내용이라고 생각이 된다. 우리가 단순히 인터넷에 접속하기까지 수 많은 패킷이 오가며 암호화 통신을 한다. 실제로 우리는 기존 인터넷 방식인 'http' 에 보안을 결합한 'https' 를 자주 접하고, 이 때 암호화 통신이 적용 된다. SSL/TLS handshake 를 ..

📙 CS/📙 Network

[Network] SSL/TLS

1. 개념 1) SSL (Secure Sockets Layer) SSL은 '보안 소켓 계층' 이라고 불리는 암호화 기반 인터넷 프로토콜이다. 1995년 Netscape 사에서 처음 개발되었으며, 인터넷 통신에서 개인 정보 보호, 인증, 데이터 무결성을 보장한다. 즉, 네트워크상의 두 디바이스 또는 애플리케이션 간에 보안 연결을 생성한다. SSL은 'Certificate Authority (CA)' 라는 디지털 인증서 발급 엔티티로부터 클라이언트와 서버의 인증을 하는데 사용된다. 특히 OSI 7계층 중 전송계층(4계층)과 응용계층(7계층) 사이에서 보안 관련 역할을 수행한다. 하지만 SSL은 오래된 기술이며, 보안적 결함이 몇몇 발견되어 현재는 이를 개선한 TLS를 사용한다. 2) TLS (Transpor..

📙 CS/📙 Algorithm

[Algorithm] 구간 합(prefix sum)

1️⃣ 구간 합 (prefix sum) '구간 합' 또는 '누적 합' 은 합 배열을 통해 특정 구간의 합을 구하는 알고리즘이다. 비교적 간단하지만 코딩 테스트 출제 빈도가 꽤나 높다고 하니 잘 공부 해놔야겠다. 구간 합에서 가장 중요한 것은 합 배열이다. 다음은 합 배열을 구하는 방법을 정의한 것이다. // 기존 배열을 arr, 합 배열을 sumArr 라고 한다면 1) sumArr[i] = arr[0] + arr[1] + ... + arr[i - 1] + arr[i] 2) sumArr[i] = sumArr[i - 1] + arr[i] 예시 1) array 5 4 3 2 1 sumArr 5 9 12 14 15 만약 2번 ~ 4번 숫자의 합을 구해야 한다면 간단하게 4 + 3 + 2 = 9 라는 것을 알 수..

📙 CS/📙 Algorithm

[Algorithm] DFS (깊이 우선 탐색)

DFS (Depth - First Search) 깊이 우선 탐색 (DFS) 는 그래프 탐색 기법 중 하나이다. 간단히 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기의 최대 깊이까지 탐색 후, 다른 분기로 이동한 뒤 탐색을 수행하는 알고리즘이다. 기능 특징 시간 복잡도 (노드 수:V , 에지 수:E) 그래프 완전 탐색 1. 재귀 함수로 구현 2. 스택 자료 구조 이용 O(V + E) DFS 는 크게 두 가지 방법으로 구현할 수 있다. 1. 재귀 함수 2. 스택 나는 두 방법 중 재귀 함수로 구현을 많이 한다. 사실은 재귀 함수 또한 스택의 성질인 후입선출(FIFO)을 갖는다. 또한 DFS 는 한 번 방문한 노드를 재방문하면 안되기에 이를 체크해주는 배열이 필요하다. 이제 예시를 보자. 아래와 같은 그..

박갈
'📙 CS' 카테고리의 글 목록 (2 Page)