전체 글

이것 저것 공부해보기 좋아하는 초보 개발자로, 제가 공부하는 내용들을 제가 이해하기 쉽게 작성합니다. 질문이나 지적은 언제나 환영합니다.
· 개념
TCP와 UDP '연결' 이라는 개념 TCP에만 연결(Connection, Session, Circuit) 개념이 존재한다. 연결은 결과적으로 순서번호(Sequence Number)로 구현된다. 이는 1, 2, 3, … 과 같이 증가하는 것이 아니라, 차지하는 바이트(byte) 수만큼 증가한다. 예를 들어 첫번째 세그먼트(Segment)의 크기가 400byte라면 두번째 세그먼트는 401의 Sequence Number를 가지게 된다. 연결은 상태(전이) 개념을 동반한다. TCP 연결 과정(3-way handshaking) 연결 과정 중에는 헤더(Header)와 페이로드(Payload)로 나뉜 일반적인 형태의 세그먼트가 아닌 IP 주소, TCP 주소가 존재하는 헤더만 존재하는 형태의 세그먼트가 오간다. 연..
· 개념
TTL과 단편화 TTL(Time To Live) 세포의 텔로미어같은 역할을 수행한다. 라우터에서 다른 어떤 라우터를 지날 때 이 단위를 **홉(Hop)**이라고 하는데, 하나의 홉을 지날 때마다 TTL값이 1씩 낮아지다가 TTL값이 0에 이르도록 경로를 찾지 못하면 폐기된다. 단편화(Fragmentation) 단편화는 MTU 크기 차이로 발생한다. 수신하는 측의 MTU가 송신측보다 작을 때 (안그래도 작은) 패킷을 다시금 잘라서 전송하는 것을 의미한다. 이 때 패킷은 기존 패킷의 IP Header가 복제되고, 페이로드는 이등분되어 각 페이로드가 헤더가 붙는 형태로 쪼개지게 된다. 단편화는 다음 라우터의 MTU가 자신의 MTU 보다 작아 패킷이 쪼개져야할 때 수행된다. 쪼개져서 전달된 패킷은 통상적으로 수..
· 개념
Broadcast IP 주소 일반적으로 L2(Data-Link Layer)에서 MAC 주소를 가지고 통신함에 있어서 `FF-FF-FF-FF-FF-FF`은 브로드캐스팅을 위한 주소이다. L3(Network Layer)에서는 IP 주소의 호스트 부의 비트(bit)를 모두 1로 채우면 해당 네트워크에 방송(브로드캐스팅)하겠다는 것으로 인식된다. 예를 들어 192.168.0.255/24 (IP 주소가 192.168.0.255이고, 서브넷 마스크가 255.255.255.0인 경우)의 경우 호스트 부인 마지막 8bit가 모두 1인 것을 볼 수 있다. (255 -> `1111 1111`) 특수 목적의 IP 더불어서 네트워크에서 호스트에 할당할 수 없는 IP들은 아래와 같다. 호스트 부가 0인 경우 : 이는 곧 호스트..
· 개념
IP 주소 일반적으로 네트워크 계층 식별자인 IP 주소는 컴퓨터나 라우터에 고유한 주소로 할당되어 네트워크 통신시 상대를 특정 호스트로 지정할 수 있다. 전세계의 모든 호스트의 IP 주소는 유일해야 하기 때문에 IP 주소는 유한한 리소스이다. 현재 일반적으로는 IPv4를 사용하고 있다. 추후에 더 많은 IP 주소를 할당할 수 있게 되는 IPv6로 대체될 것이라고 예상되지만 아직은 일반적으로 IP 주소라고 하면 IPv4를 의미한다. IPv4를 기준으로 IP주소는 32bit로 구성된다. 때문에 0과 1를 이용해 아주 길게 표현할 수 있는데, 이는 너무 길고 복잡하기 때문에 1byte가 되는 8bit씩 4개의 옥텟으로 나누어 각 그룹을 십진수로 표현하고, 각 그룹을 `.`으로 구분하는 형식으로 표기한다. 서브..
· 개념
네트워크 계층 네트워크 계층은 크게는 하드웨어단과 소프트웨어단으로 나누고 소프트웨어단은 다시 Kernel mode와 User mode로 나뉜다. 하드웨어를 설명하는 단어는 Physical 이라고 할 수 있다. 즉, 물리적으로 구현된 것을 의미한다. 반대로 소프트웨어를 설명하는 단어는 Logical 즉, 논리적으로 구현된 것이다. 논리적이라는 의미로 사용 되는 Logical 대신 사용되기도 하는 단어로 Virtual 이 있다. 물리적으로 구현된 하드웨어를 논리적으로 구현하는 것이 가능할까? 답은 가능하다. 흔히 CPU(하드웨어에 속함)은 Machine 이라고 표현한다. 이러한 CPU를 논리적으로 구현한 것을 Virtual Machine , VM 이라고 표현한다. 이렇게 하드웨어를 논리적으로 구현하는 것을 ..
· Kubernetes
Storage Class 아래에서는 Google Cloud의 Persistent Disk를 볼륨으로 사용하는 경우를 예시로 든다. Storage Class를 사용하면 PV가 생성되는 것은 변함없지만, 이를 직접 생성하지 않아도 되게 된다. Cf. Common Storage Class provisioner 더보기 GCE AWS EBS Azure File Azure Disk CephFS Portworx ScaleIO Cf. 프로비저너를 이용하면 프로비전할 디스크 유형, 복제 유형 등과 같은 추가 매개변수를 전달할 수도 있다. (파라미터 종류는 프로비저너에 따라 매우 상이하다.) Static Provisioning 필요로할 때 직접 스토리지를 생성하는 방식이다. 이보다는 애플리케이션이 필요로 할 때 자동으로 ..
· Kubernetes
쿠버네티스의 볼륨은 도커의 볼륨이 동작하는 방식을 기반으로 한다. 따라서 아래 도커의 볼륨 동작 방식에 대해 이해가 필요한 경우에는 아래 게시글을 보고 오는 것을 추천한다. 2024.03.11 - [Docker] - Docker) Storage in Docker Volumes Volumes & Mounts 도커의 컨테이너의 경우 클러스터가 삭제될 때 컨테이너가 처리하던 데이터도 함께 삭제된다. 이를 방지하기 위해 컨테이너로 데이터를 처리하고자 할 때는 컨테이너가 생성될 때 볼륨을 하나 붙여 컨테이너가 삭제된 후에도 데이터는 보존되도록 한다. 쿠버네티스의 파드도 마찬가지이다. 파드가 삭제되면 파드가 처리하던 파드 내의 데이터들도 함께 삭제 된다. 이를 방지하기 위해 파드에 볼륨을 붙일 수 있다. 아래는 0..
· Docker
Storage in Docker 시스템에 도커를 설치하면 `/var/lib/docker/` 디렉토리가 생성된다. 하위에 있는 `aufs`, `containers`, `images`, `volumes` 와 같은 하위 디렉토리에는 관련 데이터들이 저장된다. Layered architecture 도커 파일의 모든 커맨드 라인은 `docker build` 커맨드가 실행될 때 실행된다. 도커 파일을 통해 빌드하여 생성되는 이미지 레이어는 읽기만 하고 수정할 수 없다. (수정하는 방법은 새로 생성하는 방법 뿐이다.) 이미지 레이어 자체에서는 파일들이 수정되지 않지만, 파일(ex. 소스 코드 등)을 수정하고자하면 자동으로 Read & Write 가능한 컨테이너 레이어에 해당 파일의 사본이 생성되고, 이를 수정할 수 ..
· Kubernetes
Network Policy Ingress & Egress 각 애플리케이션(서버)를 기준으로 들어오는 트래픽을 Ingress라고 하고, 나가는 트래픽을 Egress라고 한다. 예를 들어 아래와 같은 구조로 애플리케이션이 통신한다고 가정해보자. Web server를 기준으로 사용자로부터 오는 트래픽은 Ingress이고, API Server로 나가는 트래픽은 Egress이다. Network Security 아래 네트워크 솔루션에서는 노드들을 가로지르는 virtual private network에 의해 모든 파드들이 IP 또는 Pod name 또는 서비스들에 의해 기본적으로 서로 닿을 수 있다. 쿠버네티스에서 네트워킹을 위한 전제 조건 중 하나는 어떠한 솔루션을 구현하든 경로(routes)와 같은 추가 설정을 ..
· Kubernetes
Image Security Image name 아래와 같이 Pod의 manifest 파일의 `spec.image` 값이 `nginx` 인 경우를 가정해보자. `pod-definition.yaml` spec: image: nginx Pod manifest 파일에서의 `image` 는 이미지 또는 저장소(Repository) 명이다. 위의 `image` 값은 실제로는 `library/nginx` 에 해당한다. (첫 번째 part는 사용자 또는 계정 이름이나, 제공되지 않으면 라이브러리라고 인식한다.) Cf. `library` 는 Docker의 공식 이미지가 저장되는 기본 계정의 이름이다. 더 나아가, 이미지를 어디서 pull 해오는지를 구체적으로 지정하지 않았기 때문에 도커의 기본 레지스트리 값인 Docke..
devYH
모르는 것이 많습니다