📘 전체글 122

HOCO 스터디, [컴퓨터 밑바닥의 비밀]을 파헤쳐보자!

저는 현재 하비스트코딩 클럽 에서 활동하며, 스터디 모임에 참여하고 있습니다. Join the HOCO(하코) Discord Server!HOCO는 가장 빠르게 성장하는 개발자 & IT 직군 커뮤니티입니다. | 3586 membersdiscord.com 요즘은 루샤오펑의 [컴퓨터 밑바닥의 비밀] 이란 책을 읽으며, 코드를 실행하면 컴퓨터 내부에서 벌어지는 일과 같은 컴퓨터 공학 기본 지식을 탐구하고 있습니다. 공부한 내용은 깃허브를 통해 관리되고 있기에 해당 링크를 이 글에 첨부합니다. GitHub - RyuWoong/book-thesecretoftheunderlyingcomputer: 컴퓨터 밑바닥의 비밀을 읽고 함께 리뷰합니다.컴퓨터 밑바닥의 비밀을 읽고 함께 리뷰합니다. Contribute..

4. 네트워크 계층

Keyword: 라우팅, IP, ARP, IPv4, IPv6주요 프로토콜, IP 주소의 개념과 구조 할당 방법, 라우터의 역할과 라우팅 테이블 LAN을 넘어서 다른 네트워크와 통신하기 위해서는 네트워크 계층의 역할이 필요하다. 네트워크 계층에서는 IP 주소를 이용해 송·수신지 대상을 지정하고 다른 네트워크에 이르는 경로를 결정하는 라우팅을 통해 다른 네트워크와 통신한다. 데이터 링크 계층의 한계물리 계층과 데이터 링크 계층만으로는 다른 네트워크 까지의 도달 경로를 파악하기 어렵다.이는 패킷이 이동할 최적의 경로를 결정하는 Routing을 통해 진행된다.routing을 수행하는 장비의 대표적인 예는 Router가 있다.MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치를 특정하기 어렵다.수신지는 IP ..

네트워크 2025.08.18

3. ALU, 제어장치, 레지스터

CPU 내부에는 계산을 담당하는 ALU(Arithmetic Logic Unit)와 명령어를 읽어 들이고 해석하는 제어장치(Control Unit), 작은 임시저장 장치인 레지스터(Register)가 있다. ALU는 피연산자를 레지스터를 통해 받고 제어장치로 부터 수행할 연산을 제어신호로써 받는다. 연산을 수행한 결과는 특정 숫자나 문자가 될수도있고, 메모리 주소가 될수도 있다. 이 결과 값은 일시적으로 레지스터에 저장된다. 바로 메모리에 저장되지 않는다. 메모리 보다 레지스터의 처리 속도가 더 빠르기 때문이다. ALU는 연산 결과에 대한 추가적인 상태정보로 Flag를 내보낸다.부호, 제로, 캐리, 오버플로우, 인터럽트, 슈퍼바이저 등등 과 같은 플래그 들을 통해 정보를 다룬다.제로 플래그: 연산 결과가 ..

3. 물리계층과 데이터 링크 계층

NIC(Network Interface Controller)와 케이블 NIC는 LAN card 라고도 불린다. 호스트와 통신 매체를 연결하며, NIC에는 MAC주소가 부여된다.케이블은 흔히 Twisted cable 과 광섬유 케이블로 나뉜다. 초기 NIC는 Expansion Card(확장 카드)로 컴퓨터에 설치됐다. 통신 매체에 흐르는 신호를 호스트가 이해하는 프레임으로 변환 하거나 프레임을 통신 매체에 흐르는 신호로 변환한다. NIC는 MAC 주소를 통해 자기 주소는 물론, 수신되는 프레임의 수신지 주소를 인식한다. 어떤 프레임이 자신에게 도달했을 때 자신과 관련없는 수신지 MAC 주소라면 해당 프레임을 폐기할 수도 있다. 또는 FCS 필드를 토대로 오류를 검출하여 프레임을 폐기할 수도 있다. Hub..

네트워크 2025.08.13

2. 이더넷(Ethernet)

Ethernet은 주로 llocal network area 의 유선 환경에서 사용된다.다양한 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등의 정의된 네트워크 기술이다.e.g. 이더넷 규격 케이블, 이더넷 프레임 형식 물리 계층통신 매체 표기 형태전송속도: 10 GBASE-T 는 10Gbps 속도를 지원하는 케이블이다.BASE: 변조 타입을 의미한다.추가특성: 전송가능한 최대거리, 물리계층 인코딩 방식, 비트 신호를 옮길 수 있는 전송로 수(레인수)통신 매체 종류가장 대중적인 통신 매체의 종류는 다음과 같다.통신 매체의 종류케이블 종류C동축 케이블T트위스티드 페어(구리선 이용)S단파장 광섬유L장파장 광섬유 데이터 링크 계층이더넷 프레임: 상위 계층으로부터 받아들인 정보에 헤더와..

네트워크 2025.08.13

2. 소스코드와 명령어

소스코드1. 소스코드 분류고급언어(High-Level Language): 사람이 이해하기 쉬운 문법이다. (C, Java, Python 등)저급언어(Low-Level Language)어셈블리어(Assembly): 기계어를 사람이 읽을 수 있도록 기호화한 언어이다.기계어(Machine Code): 0과 1로 표현된 CPU가 직접 해석할 수 있는 명령어 비트다. 2. 변환(Translation) 방식컴파일 언어(Compiled Language)전체 소스코드를 한 번에 번역하여 실행 파일을 생성한다. (예: C, C++, Go)인터프리터 언어(Interpreted Language)실행 시 한 줄씩 해석하여 실행한다 (예: Python, JavaScript)혼합형: Java: 소스 -> 바이트코드 -> JVM이..

1. 거시적, 미시적 관점에서 네트워크 살펴보기

거시적 관점 모든 네트워크는 데이터 지점을 의미하는 Node(노드)와 노드를 연결하는 간선을 의미하는 Edge(엣지) 그리고 노드간 주고 받는 Message(메세지)로 구성된다. 네트워크 장비는 호스트 간 정보를 주고 받을 때 거치게 되는 중간 장비들이다. 중간 노드에는 이더넷 허브, 스위치, 라우터, 공유기 등이 있다. 각 노드를 연결하는 간선인 통신매체가 있으며 이는 유선과 무선의 형태가있다. 메세지는 통신매체로 연결된 노드가 주고받는 정보를 뜻한다. 웹페이지, 파일, 메일 과 같은것 들이 메세지다. 범위에 따른 네트워크 분류LAN(Local Area Network): 가까운 지역을 연결하는 근거리 통신망. 가정, 기업, 학교와 같은 한정된 공간에서 네트워크를 이룬다.WAN(Wide Area N..

네트워크 2025.08.11

1. 컴퓨터 구조의 큰그림

컴퓨터 구조는 컴퓨터가 이해하는 정보와 컴퓨터의 네가지 핵심부품으로 나눌수 있다. 컴퓨터가 이해하는 정보: 데이터와 명령어네가지 핵심 부품: CPU, Main Memory(주기억장치), Secondary Storage(보조기억장치), I/O device(입출력 장치) 명령어는 컴퓨터를 작동시키는 정보이고 데이터는 명령어를 위해 존재하는 일종의 재료다.컴퓨터 프로그램은 '명령어들의 모음'으로 정의되기도 한다. 데이터, 수와 문자'수'컴퓨터는 0과 1로 이루어진 bit 단위를 이용해 연산한다.이에 따라 2진법, 10진법, 16진법에 대해 이해해야한다.2진법과 16진법 수는 서로 변환이 잘된다.(2^4 = 16)2진법으로 숫자 15를 표기하기 위해서는 4개의 bit가 필요하다. '1111', 이는 16진법에서..

안녕하세요 웹 개발자 권태민입니다.

20년 8월부터 개발 공부를 시작하여 22년 7월에 첫 취업을 했습니다.(🔗 이 시기의 과정을 돌아보는 글 20.08 - 22.01)개발자 직무에 합류한 이후 다양한 프로젝트를 참여하며 개발자로서 크게 성장할 수 있었습니다. 저는 엘리베이터 TV 광고 플랫폼을 운영하는 회사에서 2년간 웹 개발을 맡아, 약 6.6만 대의 단말기를 통해 매일 772만 명에게 광고를 송출하는 서비스를 개발 및 운영했습니다. 주요 경력은 아래와 같습니다.엘리베이터 TV 단말기별 광고 송출 횟수 검증 및 이상 징후 탐지 기능 구현광고 송출 로그의 일별, 월별 집계 및 결제 처리 테이블 자동 생성엘리베이터 TV 단말 제어 웹앱 개발광고 캠페인 등록, 수정, 조회 기능을 갖춘 관리자용 웹앱 개발자사 홈페이지 이벤트 화면과 백엔드..

README 2025.07.24

LeetCode 46. Permutations

순열 만들기 서로 다른 정수를 입력받아 가능한 모든 순열을 리턴하라.Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1:Input: nums = [1,2,3]Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]Example 2:Input: nums = [0,1]Output: [[0,1],[1,0]]Example 3:Input: nums = [1]Output: [[1]]순열이 만들어지는 것에 대해 먼저 이해할 필요가 있다. 요소가 3개 일때 순열의 수는 3! / (3 - 3)! ..