CS
-
[Network]TCP 계층 혼잡제어 완벽 정리CS/Network 2022. 7. 29. 21:46
0. 들어가기 전에 TCP 계층의 혼잡제어 알고리즘은 크게 3가지 단계이지만 조건과 작동이 꽤나 복잡하다. 게다가 블로그마다 설명이 제각각인 경우를 많이 보았다. 이번 글에서는 Computer Networking A Top-Down Approach, 7th의 TCP 혼잡제어 FSM을 보고 정리한 내용을 다룰 것이다. 1. TCP 혼잡제어 네트워크의 혼잡을 어떻게 감지하고 해결할 수 있을까? 타임아웃 또는 3중의 중복 ACK 발생에 의한 세그먼트 손실을 네트워크 혼잡의 발생으로 생각할 수 있다. 그리고 이에 따라 송신측의 윈도우 크기를 줄이면 된다. 즉 종단간의 혼잡을 제어하는 접근이다. 만약 네트워크 계층에서 직접적인 피드백을 준다면 송신자가 전송률을 증가시키거나 감소시킬 수 있을 것이다. 하지만 TCP..
-
[Network]TCP 연결 관리 - 3/4way handshakeCS/Network 2022. 7. 29. 20:11
TCP 연결관리 클라이언트 호스트의 애플리케이션이 서버 호스트와 연결을 원한다는 것을 클라이언트 TCP에게 알린다. 클라이언트 TCP는 서버와 연결 설정을 시작한다. +) ACK 세그먼트는 확인응답 세그먼트라는 의미이며, ACK 플래그를 의미하는 것이 아니다. ACK 플래그는 1비트이기 때문에 순서번호 +1 을 저장할 수 없다. ACK 플래그는 “수신한 세그먼트가 성공했다는 것을 확인 응답”하는 비트이다. 3-way에서 1단계에는 0으로 설정 / 2,3단계에서는 1으로 설정되어 있다. 3-way handshake SYN 세그먼트 전송 : 클라이언트 측 TCP는 SYN 플래그 비트를 1로 표시하고, 순서번호 필드에 임의의 숫자로 자신의 최초 순서번호를(clinet_isn) 설정하고 전송한다. 이 때, **..
-
[OS]운영체제 기본 개념CS/OS 2022. 7. 28. 17:59
0. 운영체제란? 사용자와 여러 소프트웨어를 하드웨어와 연결하는 소프트웨어 계층 좁은 의미 : 커널; 메모리에 상주하는 부분 넓은 의미 : 각종 시스템 유틸리티를 포함한 개념 1. 운영체제의 목적 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 편리하게? : 각 사용자/프로그램들이 독자적인 컴퓨터에서 수행되는 것 같은 환경을 제공하기 위해 하드웨어 관련 일을 수행한다. 프로그래머는 하드웨어의 동작에 대하여 몰라도 된다. 자원을 효율적으로 관리 자원? : CPU, 메모리, I/O 효율적? : 형평성 있는 분배, 한정된 자원으로 최대 효율 how? : CPU 스케줄링, 메모리 관리, 디스크 스케줄링, 인터럽트&캐싱 2. 운영체제의 분류 동시 작업 가능 여부 - single-tasking/ multi-ta..
-
[Network]신뢰적인 데이터 전송과 TCP(1)CS/Network 2022. 7. 28. 17:59
UDP와 TCP의 가장 큰 차이는 TCP가 신뢰적인 데이터 전송을 기반으로 하는 프로토콜이라는 것이다. 이번 글에서는 신뢰적인 데이터 전송이란 무엇인 지 알아본 뒤 다음 글에서 본격적으로 TCP에 대하여 다뤄보자. 1. 신뢰적인 데이터 전송 신뢰적인 채널에서는 데이터가 손상되거나 손실되지 않는다. 신뢰적인 채널에서 발생하는 일들을 차례대로 살펴보자. 일종의 프로토타입을 살펴보는 것이다. 1.1 완벽하게 신뢰적인 채널에서 데이터 전송, rdt1.0 만약 하위 채널이 완전히 신뢰적인 상황이라면 수신 측에서는 송신측으로 어떠한 피드백도 보낼 필요가 없다. 1.2 손실은 없으나 손상이 있는 채널에서 데이터 전송, rdt2.0 우리가 전화 통화를 하는 경우를 생각해보자. 상대가 말할 때, 어. 응. 음. 등의 피..
-
[OS]임계 구역 문제와 해결 방안(1) - 하드웨어 지원CS/OS 2022. 7. 27. 17:52
1. 임계 구역 문제 프로세스 동기화는 임계 구역 문제로부터 시작한다. 각 프로세스는 임계 구역이라고 부르는 코드 부분을 포함하고 있다. 임계 구역은 다른 프로세스와 공유하는 데이터에 접근하고 갱신할 수 있는 코드 영역이다. 즉 임계 구역은 경쟁 상태가 발생할 수 있는 곳이다. 임계 구역 문제 해결을 위한 조건 상호 배제(mutual exclusion) : 프로세스가 자신의 임계 구역에서 실행된다면, 다른 프로세스들은 자신의 임계 구역에서 실행될 수 없다. 진행(progress) : 다른 프로세스가 임계 구역에서 실행 중이지 않다면 프로세스는 임계 구역에서 실행될 수 있다. 한정된 대기(bounded waiting) : 프로세스가 자기의 임계 구역에 진입하려는 요청을 한 뒤부터 그 요청이 허용될 때까지 ..
-
[자료구조]정렬 알고리즘 비교 정리CS/Data Structure 2022. 7. 27. 17:52
1. O(n²) 정렬 1.1 선택 정렬 원소를 넣을 위치는 정해져있고, 어떤 원소를 넣을지 선택 1번째 인덱스부터 배열을 탐색하여 1번째로 작은 값을 1번째에 위치 → 2번째 인덱스부터 탐색 & 2번째에 위치 → 3번째부터 탐색 & 3번째에 위치 → … → 총 (n-1)번 반복 추가 공간 없이 주어진 배열에서 위치만 변경한다. O(1)의 공간 복잡도 시간 복잡도 1번째 루프에서 비교 : n-1 2번째 루프에서 비교 : n-2 (n-1)+(n-2)+…+1 = n(n-1)/2 최선, 최악, 평군 모두 O(n²) def selection_sort(L): for i in range(N): #해당 위치 i에 들어갈 원소를 선택 minVal_idx = i for j in range(i+1,N): if L[j] < ..
-
[Network]다중화와 역다중화란 무엇인가?CS/Network 2022. 7. 26. 09:03
0. 들어가기 전에… TCP가 제공하는 신뢰적인 데이터 전달 서비스는 무엇일까? TCP는 프로세스가 자신의 수신 버퍼로부터 읽은 데이터 스트림이 손상되지 않았으며 손실이나 중복이 없다는 것과 순서가 유지된다는 것을 보장한다. 즉, 수신자가 받은 바이트 스트림은 송신자가 전송한 것과 같은 바이트 스트림이다. 어떻게 이러한 서비스를 제공하는 것일까? 1. 트랜프스포트 계층 서비스 1.0 트랜스포트 계층과 애플리케이션 계층 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적인 통신을 제공한다. 즉, 애플리케이션의 관점에서 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보이도록 한다. 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 애플..
-
[Network]애플리케이션 계층과 HTTPCS/Network 2022. 7. 26. 09:03
1. 네트워크 애플리케이션 1.1 프로세스 간 통신 네트워크 애플리케이션이 통신할 때 실제 통신하는 것은 프로그램이 아닌 프로세스다. 같은 종단 시스템에서 실행되는 프로세스들의 통신은 운영체제에서 자세하게 다루는 내용이다. 서로 다른 종단 시스템에서 프로세스들은 네트워크를 통해 메시지를 교환한다. 클라이언트와 서버 네트워크 애플리케이션은 네트워크에서 서로 메시지를 보내는 두 프로세스로 구성된다. (ex. 웹 애플리케이션에서 클라이언트 브라우저 프로세스는 웹 서버 프로세스와 메시지를 교환한다. P2P 파일 공유 시스템에서 한 피어의 프로세스에서 다른 피어의 프로세스로 파일을 전송한다.) 네트워크를 통해 통신하는 프로세스는 클라이언트 프로세스와 서버 프로세스 중 하나로 이름 짓는다. 소켓 프로세스가 집이라면..