전체 글

전체 글

    [네트워크] TCP/IP 4계층 모델

    네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층이었다면, 이 이론을 실제로 사용하는 인터넷 표준으로, 각종 기능을 계층화하고 복수의 프로토콜을 조합하여 실현시킨 것이 TCP/IP 4계층이다. TCP/IP 모형은 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약(프로토콜)의 모음으로, 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행함으로 서로 간의 간섭을 최소화하여 사용의 편리성을 높인다. 상위 계층인 TCP는 메세지나 파일들을 좀 더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일과, 수신된 패킷들을 원래의 메세지로 재조립하는 일을 담당한다. 반면, 하위 계층의 IP는 각 패킷의 주소 부분을 처리하며 패킷들이 목적지에 정확하게 도달할 수 있게 한다. TCP/IP 4계층..

    [네트워크] OSI 7계층

    통신 기술의 도입과 통신 기능의 확장을 쉽게 하기 위해 프로토콜을 몇 개의 계층으로 나누는 것을 계층화라고 하며, 통신 기능을 7 계층으로 분류하여 각 계층마다 프로토콜을 규정한 규격을 OSI 모델이라 한다. OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 그렇다면 이와 같이 7 계층으로 나누는 이유는 무엇일까? 통신이 일어나는 과정을 단계 별로 알 수 있으며, 특정한 곳에서 이상이 생기면 해당 단계만 수정할 수 있기 때문이다. PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인해 보자. 모든 PC에 문제가 있다면, 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선 문제(1계층 물리 계층)일 가능성이 높다. 한 PC만 문제가 있다..

    [NCP] 네이버 클라우드에 k8s HA(고가용성) 클러스터 구축하기

    📌Index 프로젝트 목표 VPC 및 Subnet 생성하기 Init Script 작성하기 Server 생성하기 Server 세팅하기 Kubernetes 초기화 및 노드 조인 CNI(Container Network Interface) 설치 마무리 ✔️ 프로젝트 목표 NCP(네이버 클라우드)에서 고가용성(HA) 쿠버네티스 토플로지 : stacked etcd를 구성한다. stacked etcd(중첩된 토플로지)는 etcd에서 제공하는 분산 데이터 스토리지 클러스터를, 컨트롤 플레인 구성 요소를 실행하는 kubeadm으로 관리되는 노드에 의해서 형성된 클러스터 상단에 중첩하는 토플로지이다. 고가용성 쿠버네티스 토플로지에 대한 더 자세한 설명은 다음에서 확인할 수 있다. [Kubernetes] k8s HA(고가용..

    [운영체제] 가상 메모리(Virtual Memory)와 메모리 관리 : 메모리, 스와핑, 단편화

    📌 Index 메모리 주기억장치와 보조기억장치 메모리 관리 ✔️ 메모리 메인 메모리(Main Memory, Physical Memory, 주기억장치) CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해두어야 한다. 그러나 만약 프로그램 용량이 메인 메모리 보다 크다면, 어떻게 될까? 가상 메모리(Virtual Memory) 가상 메모리(Virtual Memory)는 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다. 예를 들어, 100MB 메모리 크기에서 200MB 크기의 프로세스를 수행할 수 있도록 하는 것이다. 필요한 부분만 메모리에 적재하고, 프로세스를 실행 시 실행..

    [Go] Functions 기초

    📌Index Function 정의하기 Multiple Value를 반환하는 Function 만들기 여러개의 Argument를 가질 수 있는 Function 만들기 Naked Return Defer 🔎 VScode에서 실습을 진행합니다. ✔️ Function 정의하기 곱셈 연산을 수행하는, multiply function을 정의해보자. main.go func mutiply(a int, b int) int { return a*b } 파라미터의 타입, 리턴 타입을 위와 같이 작성해준다. 만약 여기서 더 간단하게 작성하고 싶고, a와 b의 타입이 같다면, 다음과 같이 작성하는 것도 가능하다. func multiply(a , b int) int { return a * b } ✔️ Multiple Value를 반환..

    [NCP] VPC와 서브넷 생성하기

    📌Index VPC 생성하기 서브넷 생성하기 ✔️ VPC 생성하기 NCP 콘솔에 접속해서 VPC를 생성한다. 다음과 같이 VPC 이름과 IP 주소 범위를 작성한다. 생성 후 시간이 조금 지나면 운영중 상태가 되는 것을 확인할 수 있다. ✔️ 서브넷 생성하기 다음으로 서브넷(Subnet)을 생성한다. [Subnet Management]을 클릭하여 Subnet을 생성한다. 다음과 같이 Subnet 이름과 앞서 생성한 VPC를 선택한다. 여기서는 Public 서브넷을 생성한다. 생성 후 시간이 조금 지나면 Subnet이 운영중 상태가 된 것을 확인할 수 있다. 지금까지 간단하게 VPC와 서브넷을 생성해보았다. 더 다양한 VPC 구성들은 다음에서 확인해볼 수 있다. https://www.ncloud.com/pr..

    [Go] Packages and Imports

    📌Index Package Import 🔎 VScode에서 실습을 진행합니다. ✔️ Package 모든 Go 프로그램은 package로 구성되고, package를 통해서 모듈화 및 코드의 재사용 기능을 제공한다. Go의 많은 Package들이 표준 라이브러리로 제공하며, 이러한 표준 라이브러리는 환경변수 GOROOT/pkg 경로에 설치되어 있다. Main Package 일반적으로 Package는 라이브러리 형태로 사용되지만 main 이라고 명시된 package는 라이브러리가 아닌, 실행 프로그램으로 만들게 된다. main.go 로 이름을 지정한다는 것은, 해당 프로젝트를 컴파일 하고 싶다는 뜻이고, 그것을 사용할 것이란 뜻이다. 컴파일 하지 않을 것이라면 다름 파일명 test.go, learning.go..

    [Go] Windows에 Golang 설치하기

    📌Index Go 설치하기 Go 환경 변수 세팅하기 ✔️ Go 설치하기 만약 Golang 설치를 원하지 않거나, 설치가 어려운 상황이면 repl.it을 사용할 수 있다. repl.it에서는 Go를 설치없이 웹 브라우저에서 사용해볼 수 있다. 자, 그럼 이제 Golang을 설치해보자. 먼저 https://go.dev/dl/ 에 접속해서 자신의 운영체제에 맞게 다운로드 한다. Windows라면 다음을 선택한다. Setup을 실행하고, 계속 Next를 누르면 된다. 단, Go의 설치 경로를 지정해주는 창이 있는데, 추후 GOROOT라는 환경변수와 일치하는지 확인해야 하니, 기억해야둬야한다. ✔️ Go 환경 변수 세팅하기 이제 환경 변수들을 확인해볼텐데, 만약 해당 환경변수가 없다면, 새로만들기로 추가해주면 된..

    [GCP] VM 인스턴스 생성하기

    본 포스팅은 GCP(Google Cloud Platform)에서 VM 인스턴스를 생성하는 방법을 정리한 것이다. ✔️ VM Instance 생성하기 GCP 콘솔에서 [Compute Engine] - [VM 인스턴스]를 클릭한다. 프로젝트가 없다면 [프로젝트 만들기]를 클릭하고, [Open API 사용]을 클릭한다. [인스턴스 만들기]를 클릭하고, 생성하려는 인스턴스의 이름과 리전, 영역을 선택한다. 원하는 머신 구성을 선택하고, 부팅 디스크 항목에서 [변경] 버튼을 클릭하여 이미지를 선택한다. [모든 Cloud API에 대한 전체 액세스 허용] 옵션을 선택하면, VM이 모든 Cloud API에 접근할 수 있게된다. 방화벽은 HTTP와 HTTPS 에 대한 접근을 허용하도록 설정한다. 만들기를 클릭하면, 시..

    [운영체제] 메모리 계층 구조(Memory Hierachy)

    📌Index 메모리 계층 구조란? 메모리 계층 구조의 필요성 ✔️ 메모리 계층 구조란? 메모리 계층 구조(Memory Hierachy)는 메모리 관련 3가지 주요 특성인 용량, 접근 속도, 비용간의 절충 관계를 파악해 필요에 따라 채택할 수 있게 나타낸 구조이다. 메모리 계층은 레지스터, 캐시, 메모리(RAM), 하드디스크(저장장치)로 구성되어 있다. 그림 상에서 위로 갈수록 속도가 빠르고, 아래로 갈수록 용량이 커진다. 용량이 클 수록 범위가 넓어지므로, 속도가 느려지는 것은 당연하다고 할 수 있다. 레지스터 : CPU 내부의 작은 메모리로, 휘발성이며 속도가 가장 빠르고, 기억 용량이 가장 적다. 캐시 : L1, L2, L3 캐시를 지칭하고 휘발성이며, 속도가 빠르나 기억 용량이 적다. 주기억장치(메..

    [Kubernetes] k8s HA(고가용성) 클러스터 구축하기 : stacked etcd

    📌Index Kubernetes의 HA Vagrant로 VM 생성하기 로드밸런서 구성하기 호스트 파일 수정 및 Swap off Docker 및 Kubernetes 설치하기 shell script로 간편화하기 Kubernetes 초기화 및 노드 조인 CNI(Container Network Interface) 설치 ✔️ Kubernetes의 HA 고가용성(High Availability)이란, 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. 고가용성(HA) 쿠버네티스의 토플로지를 구성하는 데는 두 가지 방법이 있다. stacked etcd : etcd 노드와 컨트롤 플레인 노드를 함께 위치 시키는 중첩된(stacked) 컨트롤 플레인 노드 ..

    [운영체제] 컴퓨터 시스템 구조와 인터럽트

    📌 Index 컴퓨터 시스템 구조 입출력(I/O)의 수행 인터럽트(Interrupt) ✔️ 컴퓨터 시스템 구조(System Structure) 컴퓨터 시스템의 구조는 CPU, Memory, Device Controller, DMA Controller, Timer로 이루어져있다. 컴퓨터 내부 장치인 CPU와 메모리, 그리고 컴퓨터 외부 장치(입출력 장치)인 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등으로 구분된다. 컴퓨터는 외부 장치에서 내부 장치로 데이터를 읽어와 (input) 각종 연산을 수행한 후, 그 결과를 외부 장치로 내보내는(output) 방식으로 업무를 처리한다. CPU CPU는 매 클럭(Clock Cycle) 마다 메모리에서 명령(Instruction)을 하나 씩 읽어와 실행시키는 ..

728x90