본문 바로가기
CS/Study

[CS] 기초지식 총 정리 (네트워크, 운영체제, 데이터베이스, 자료구조)

by bona.com 2025. 2. 7.

누군가 나에게 개발자 이상형이 있냐고 물었을 때 망설임 없이 'CS 지식을 가지고 있는 사람'이라고 답했다.

내가 되고 싶은 이상향이기도 하다.

 

그래서 이번에는 3년 동안 학교에서 배웠던 CS 지식을 복습겸 스스로 정리해보고 싶어서 글을 쓰게 되었다. (중간중간 내가 재학 당시 공부했던 내용을 추가로 첨부했다.)

앞으로 각 주제마다 심화로 더 공부할 예정이다.🔥

 

I. 트워크

네트워크란, 컴퓨터들이 통신망을 통해 서로 그물처럼 연결돼 있는 것을 의미한다.

 

📍IP 주소

첫 번째로 알아볼 개념은 IP 주소이다.

IP 주소는 네트워크에 연결된 각 컴퓨터를 구분하는 유일한 주소를 의미한다.

이는 클라이언트가 서버에게 요청을 하고 응답을 받을 때 서로의 위치를 알려주는 역할을 하는 것이다.

 

IP 주소는 4byte로 이루어진 고유한 값이다. 알아보기 쉽도록 1byte씩 10진수로 나타내기도 한다.

ex. 172.217.174.100

 

* 참고로 IP 주소에는 IPv4와 IPv6이 있다. 네트워크에 연결된 컴퓨터가 증가함에 따라 IPv4로 구분할 수 있는 주소의 수가 부족해져 16byte로 확장한 IPv6이 나온 것이다.

 

📍도메인 네임

도메인 네임은 사용자가 쉽게 기억할 수 있도록 IP 주소를 문자열로 변환한 것이다.

예를 들어, 보통 사용자는 웹 사이트에 접속할 때 "www.naver.com"으로 접속한다. 이것이 바로 도메인 네임인 것이다.

네이버의 IP 주소를 "223.130.195.200"이라고 한다면 이 IP 주소와 도메인 네임이 매핑되어 있어 도메인 네임만으로 네이버 웹사이트에 접속이 가능한 것이다.

 

📍DNS

이어서 나오는 개념은 바로 DNS이다. 

DNS는 Domain Name System의 약자로 도메인과 IP 주소의 매핑 정보를 가지고 있는 시스템이다.

DNS 서버는 매핑 정보를 위와 같이 계층 구조로 분산해 저장한다.

도메인의 각 계층은 "."을 기준으로 구분한다.

위 그림은 "www.naver.com"의 예시를 그린 것이다.

 

IP 주소를 찾는 과정은, 상위 계층 서버가 알고 있는 하위 계층 서버의 IP 주소를 반환하는 과정을 거치면서 최종적으로 원하는 IP 주소를 얻을 수 있는 것이다.

 

즉, 해당 예시로 보았을 때 순서는 아래와 같다.

'com' DNS 서버의 IP 주소 반환 -> 'naver.com' DNS 서버의 IP 주소 반환 -> 'www.naver.com' DNS 서버의 IP 주소 반환

 

📍포트

포트는, 프로그램을 식별해주는 번호이다.

IP 주소로 특정 컴퓨터를 찾았다고 할지라도 해당 컴퓨터에서 어떤 프로그램이 실행되어야 할지도 알아야 하기 때문에 포트번호가 필요한 것이다.

 

대표적인 포트번호는 외워두는 것이 좋다.

포트 번호 프로그램 프로토콜
80 웹 서비스 HTTP
443 보안이 강화된 웹 서비스 HTTPS
22 외부 접속 서비스 SSH
53 DNS 서비스 DNS
20, 21 파일 전송 서비스 FTP
25 메일 전송 서비스 SMTP

 

📍프로토콜

바로 위에서도 나오는 프로토콜은, 컴퓨터 네트워크에서 컴퓨터 간에 통신할 수 있도록 정해놓은 규칙과 절차를 의미한다.

* 이는 내가 2학년 2학기 재학 당시 아래 링크에서도 정리한 바 있다.

https://comyou.tistory.com/34

 

[컴퓨터네트워크] Ch1.5 프로토콜 계층과 서비스 모델

1.5 프로토콜 계층과 서비스 모델 네트워크 프로토콜의 설계 구조를 제공하기 위해, 네트워크 설계자는 프로토콜을 계층(layer)으로 조직한다. 즉, 각각의 프로토콜은 한 계층에 속하며, 프로토콜

comyou.tistory.com

 

TCP/IP의 4계층을 이해해 보자.

우선, TCP/IP는 인터넷에서의 데이터 통신이 주로 TCP와 IP로 이루어지기 때문에 이 둘을 합친 것을 의미한다.

  • 1계층 : 네트워크 접근 계층 (HTTP, FTP..)
  • 2계층 : 인터넷 계층 (TCP, UDP)
  • 3계층 : 전송 계층 (IP)
  • 4계층 : 응용 계층 (Ethernet..)

HTTP 통신을 한다고 했을 때 위에서 볼 수 있듯이 HTTP로 처리한 데이터는 TCP와 IP를 거쳐 인터넷 통신망으로 전송되는 것이다.

 

* TCP와 UDP의 차이점에 대한 설명은 아래 링크에서 확인할 수 있다.

https://comyou.tistory.com/36

 

[컴퓨터네트워크] Ch2.1 네트워크 애플리케이션의 원리

Client-server architecture 항상 동작하고 있는 서버가 존재하고, 클라이언트라는 다른 호스틀로부터 서비스 요청을 받는다. 클라이언트는 서로 직접적으로 통신하지 않는다. 서버는 잘 알려진 고정된

comyou.tistory.com

 

HTTP 요청과 응답은 메세지 형태로 주고 받는데, 이를 HTTP 메세지라고 한다.

위에서부터 시작행, 헤더, 빈 행, 본문으로 구성되어 있다.

특히나 시작행의 경우 어떤 것이 요청되었고, 응답값은 제대로 되었는지 정보가 들어있기 때문에 매우 중요하다.

이는 클라이언트 개발자와 백엔드 개발자 모두 알고 있어야 하는 사항이기도 하다.

 

II. 운영체제

운영체제는, 사용자가 컴퓨터를 쉽게 다룰 수 있도록 사용자와 컴퓨터 사이에서 인터페이스를 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리 및 분배하는 역할을 한다.

 

📍프로세스 

프로세스란, 컴퓨터에서 현재 실행 중인 프로그램을 의미한다.

프로그램은 평소에 보저 기억 장치인 디스크에 저장되어 있다. 

그러다가 사용자가 실행하면 디스크에 있던 프로그램이 메모리에 올라오고, 메모리에 저장된 명령어가 CPU를 차지함으로써 실행할 수 있게 된다.

 

이렇게 메모리에 올라와 CPU를 점유하며 실행 중인 프로그램을 프로세스라고 하는 것이다.

 

📍스레드

스레드는, 프로세스 내에서 작업을 처리하는 실행 단위로, 프로세스가 할당받은 자원을 이용해 작업을 처리한다.

 

이때, 프로세스는 최소 하나 이상의 스레드를 가지는데 이를 메인 스레드라고 한다.

이처럼 하나의 프로세스에 여러 개의 스레드가 존재할 수 있고, 두 개 이상의 스레드가 동시에 작업을 처리하는 방식을 멀티 스레드라고 한다.

 

📍콘텍스트 스위칭

컴퓨터에서 동시에 처리할 수 있는 최대 작업 수는 CPU의 코어 수와 같다.

하지만 우리는 컴퓨터를 사용할 때 코어 수보다 훨씬 많은 작업을 동시에 처리한다.

 

이때, 콘텍스트 스위칭을 통해 문제를 해결할 수 있는 것이다.

콘텍스트 스위칭은 프로세스나 스레드가 번갈아가며 CPU를 할당받아 실행된다.

 

📍공유 자원과 동기화 문제

여러 스레드가 프로세스의 변수나 매모리 등의 자원을 함께 사용하기 때문에 공유 자원 문제가 발생하기도 한다.

 

대표적으로 경쟁 조건이 있다.

경쟁 조건은 2개 이상의 스레드가 동시에 같은 자원에 접근해 읽기나 쓰기 작업을 수행했을 때 발생한다.

 

경쟁 조건 문제가 발생할 수 있는 코드상의 특정 부분을 임계점이라고 하는데, 임계 영역에서 경쟁 조건 문제가 발생하지 않으려면 상호 배제, 진행, 한정 대기 조건을 만족해야 한다.

 

* 운영체제 관련 사항은 3학년 2학기 재학 당시 자세하게 정리해 놓았다.

https://comyou.tistory.com/122

 

[운영체제] Introduction to Operating Systems

I. Introudction to Operating Systems운영체제(OS)란, 컴퓨터에서 실행되고 컴퓨터 하드웨어를 관리하는 소프트웨어로, 다양한 애플리케이션 소프트웨어의 효율적인 실행을 위해 공통 서비스를 제공한다.

comyou.tistory.com

* 추가로 컴퓨터구조 시간에 배운 내용도 첨부하겠다.

https://comyou.tistory.com/38

 

[컴퓨터구조] Lecture 3 MIPS Instructions

명령어: 컴퓨터 언어의 단어에 해당, 컴퓨터가 실행할 수 있는 프로그램의 최소 단위 MIPS의 산술 연산은 레지스터에서만 실행되므로 메모리와 레지스터 간에 데이터를 주고 받는 명렁어가 있어

comyou.tistory.com

* 마지막으로, 내가 아주 초창기에 코루틴 관련해서 글을 적은 적이 있는데 Android에서 비동기 프로그래밍을 작성하는 방법이 궁금하다면 참고해도 좋을 것 같다.

https://comyou.tistory.com/58

 

[Android] 코루틴이란?

💡블로그 이동 원래 Velog에 Android 관련된 글을 썼었는데 하나로 통합하는 게 좋을 것 같아서 Tistory에 통합하려고 합니다! 아래는 링크는 본문입니다. [Android] 코루틴이란? 코루틴 개념 뿌시기!👊

comyou.tistory.com

 

III. 데이터베이스

클라이언트와 서버가 네트워크 통신을 통해 주고받는 것은 데이터이고, 이 데이터는 데이터베이스에 저장해 관리한다.

 

📍DBMS

데이터베이스에 있는 데이터를 효율적으로 관리하기 위해 사용하는 시스템을 DBMS라고 한다.

 

📍데이터 저장 방식

  • 엔티티: 데이터베이스에서 표현하려는 유무형의 객체를 뜻한다.
  • 속성: 엔티티의 성질을 나타내는 엔티티의 구성요소이다.
  • 릴레이션: 데이터베이스에서 데이터를 저장하는 기본 단위이다.
  • 테이블: 데이터를 행과 열로 이뤄진 표 형태로 저장하는 관계형 데이터베이스를 의미한다.
  • 키: 테이블 내 속성 간의 관계와 테이블 간의 관계를 명확하게 하기 위해 지정된 특별한 속성이다.

* 엔티티, 속성, 키에 대한 내용은 3학년 2학기에 기록한 내용을 참고 바란다.

https://comyou.tistory.com/120

 

[데이터베이스] Ch2 Relational Data Model (1)

2-1 Relation Data Model 관계형 데이터모델에서 의미하는 관계는 '테이블 형식'이다.위의 그림은 student 관계의 예제이다.7개의 속성(attribute)과 5개의 터플(tuple)을 가지고 있다. 각 속성은 속성헤드(att

comyou.tistory.com

 

📍데이터베이스 정규화

데이터베이스 설계 과정을 통해 엔티티와 관계를 추출하더라도 발생할 수 있는 이상 현상이 있다.

삽입 이상, 갱신 이상, 삭제 이상이 그 원인이다.

 

이러한 현상을 방지하기 위해 나타난 것이 정규화이다.

  • 제 1 정규화(1NF): 속성값 하나에 2개 이상의 값이 들어가면 안 된다.
  • 제 2 정규화(2NF): 속성 중 하나라도 기본키에 부분적 함수 종속이면 안 된다.

* 정규화 관련해서는 아래 링크에 아주 자세하게 작성해두었다.

https://comyou.tistory.com/146

 

[데이터베이스] Ch11 RDB design

11.1 Good Schema and Bad Schema나쁜 테이블의 기준은 무엇일까?나쁜 테이블은 갱신 이상(update anomaly), 삭제 이상(delete anomaly), 입력 이상(insert anomaly)를 가지고 있다.우선 위의 mybadtable1 테이블을 보자. ch

comyou.tistory.com

 

📍트랜잭션

트랜잭션이란, 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행돼야 할 일련의 연산을 의미한다.

만약 논리적 기능을 트랜잭션 단위로 수행하는 것이 아니라 개별 연산으로 수행한다면 데이터가 중간에 증발할 수 있다.

트랜잭션이 정상적으로 처리됐다면 커밋을 수행해 작업을 완료하고, 오류가 발생했다면 롤백을 통해 전 상황으로 돌린다.

 

IV. 자료구조

자료구조는, 데이터를 어떤 형식으로 조직해 저장할 것인지와 관련된다.

 

📍배열

배열은, 동일한 데이터 타입의 여러 데이터를 저장하는 자료구조이다.

데이터 하나하나의 크기가 모두 같고, 메모리상의 연속된 공간에 데이터가 저장된다.

  • 탐색 시간복잡도: O(1)
  • 삽입/삭제 시간복잡도: 맨 마지막 요소는 O(1), 가운데 요소는 O(n)

📍연결 리스트

연결 리스트는, 포인터를 통해 여러 노드가 연결돼 있는 자료구조이다.

  • 탐색 시간복잡도: O(n)
  • 삽입/삭제 시간복잡도: O(1)

📍그래프

그래프는, 정점간선으로 이뤄진 자료구조이다.

* 그래프는 2학년 1학기에 기록한 내용으로 확인바란다.

https://comyou.tistory.com/15

 

[자료구조] 그래프(Graph)

그래프(Graph) 선형 자료구조나 트리 자료구조로 표현하기 어려운 관계를 가지는 원소들을 표현하기 위한 자료구조 그래프 G는 객체를 나타내는 정점(vertex)과 객체를 연결하는 간선(edge)의 집합이

comyou.tistory.com

 

📍트리

트리는 그래프의 일종으로, 계층적 데이터의 집합이다.

* 트리도 자료구조 시간에 작성한 내용으로 대체하겠다.

https://comyou.tistory.com/12

 

[자료구조] 트리(Tree)

트리(Tree) 트리(Tree)는 원소들 간에 1 : N 관계를 가지는 비선형 자료구조이다. 한 개 이상의 노드(node)로 이루어진 유한 집합으로서 노드 중에는 루트(root)라고 하는 노드가 하나 있고 나머지 노드

comyou.tistory.com

 

공부를 마치며

CS의 기초지식을 보다 보니 내가 그동안 공부하고 정리한 내용들이 같이 떠올라 신나서 링크를 여러 개 첨부한 것 같다. (매 학기마다 기록해두길 참 잘했다.)

시험기간에 급하게 이해하고 넘어간 부분들도 다시 천천히 되돌아보니 내가 놓친 부분을 찾을 수도 있어서 좋았다! (대부분 직접 말하면서 공부했다.)

 

그리고 다시 한번 컴퓨터과학은 다 연결이 되어있구나도 느낀다.

CS 지식을 안드로이드에 어떻게 녹일 수 있을지 이해하면서 보는 것도 재밌었고, 백엔드 개발자가 보았을 때는 다른 시각에서도 볼 수 있을 거란 기대감이 들었다.

 

컴공생이라면 알겠지만 내가 이번에 정리한 내용은 빙산의 일각일 뿐이다.. 아직 가야 할 길이 멀다.

더 열심히 공부해서 기반을 잘 다지고 싶다.

'CS > Study' 카테고리의 다른 글

[객사오] 코드로 알아보는 객체의 "역할, 책임, 협력"  (0) 2025.03.16
[C++] 템플릿(Template)  (1) 2023.05.27