본문 바로가기
SRE

시스템성능엔지니어링 #2

by gnobaaaar 2025. 12. 3.
시스템 성능엔지니어링의 150p 네트워킹
인프런 - 외워서 끝내는 네트워크 핵심이론

 

 

소켓

현대 커널은 내장된 네트워크 프로토콜 스택을 제공하여 시스템이 네트워크를 통해 통신하고 분산 시스템 환경에 참여할 수 있게 합니다.

사용자 수준의 어플리케이션은 소켓을 통해 네트워크에 접근합니다.

 

소켓 : 프로그래밍 가능한 종단점으로 데이터 전송을 위해 사용

리눅스 커널 관점에서 소켓 = 파일입니다.

 

소켓, 파일, FD

리눅스는 모든 입출력(I/O)을 통일된 방식으로 처리합니다.

 

FD = 파일 디스크립터 (번호)

프로세스는 I/O 통로를 숫자로 접근합니다.

 

FD는 프로세스가 I/O를 하기위한 번호입니다.

0 = stdin
1 = stdout
2 = stderr
3 = socket
4 = pipe
5 = /var/log/app.log

 

file 구조체 = FD가 가리키는 커널 객체

위에서 프로세스가 FD=3 (socket)을 읽으려고 한다면, 아래와 같이 처리됩니다.

ex. 프로세스는 시스템 콜로 커널에 요청합니다 (send, recv, close)

프로세스
   ↓ (FD 번호)
FD(3)
   ↓
struct file  → 프로세스 관점의 I/O 창구, 마치 세션,창구같은 역할 (여러개 생성)
   ↓
inode        → 커널 관점의 “실체 정보” , 파일의 본체
   ↓
socket       → 실제 네트워크 객체

 

 

containerd.sock

TCP/IP 네트워크 소켓이 아닌 UNIX Domain Socket (UDS)

 

UNIX 도메인 소켓의 대표 특징

  • 파일 시스템 경로를 갖는다 (/run/...)
  • 동일한 리눅스 커널 안에서만 통신됨
  • → 원격 네트워크 연결 불가
  • TCP/IP 사용 안 함
  • → IP, 포트, 라우팅, 패킷 분할/재조립 없음
  • 성능 매우 빠름
  • → 커널 내부 메모리 복사 수준

TCP 프로토콜이 아닌 gRPC over Unix Domain Socket 을 사용

같은 노드내 통신이므로 UDS를 사용합니다.

# 컨테이너 생성과정

kubelet
  ↓ (CRI 요청: gRPC)                # uds로 CRI plugin에 접근 (Client)
containerd-shim (CRI plugin)       # CRI plugin = gRPC server 역할
  ↓ (gRPC over Unix Domain Socket) # kubelet요청을 containerd 내부 API호출로 변환 (번역)
containerd daemon                  # daemon이 runc를 통해 수행
  ↓ (runc 실행 등)
컨테이너 생성 (PID1)

 

 

gRPC

https://digitalbourgeois.tistory.com/214

 

[gRPC] gRPC란 무엇인가?

gRPC는 Google이 개발한 오픈 소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크입니다. gRPC는 네트워크를 통해 클라이언트와 서버 간에 함수 호출을 할 수 있도록 설계된 시스템으로, 마치

digitalbourgeois.tistory.com

 

원격 함수 호출 (Remote Procedure Call)

gRPC는 애플리케이션 레벨 프로토콜:

  • 클라이언트/서버 구조
  • 함수 호출처럼 원격 프로세스를 호출
  • Protobuf 기반 직렬화
  • 스트리밍 지원
  • 보통 HTTP/2 위에서 동작
  • CreateContainer() 함수 좀 실행해줘 라는 식의 API 호출 시스템.

 

 

 

TCP/IP 통신과정

inflearn 강의 참조

https://www.inflearn.com/course/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%95%B5%EC%8B%AC%EC%9D%B4%EB%A1%A0-%EA%B8%B0%EC%B4%88/dashboard

 

외워서 끝내는 네트워크 핵심이론 - 기초| 널널한 개발자 - 인프런 강의

현재 평점 4.9점 수강생 7,971명인 강의를 만나보세요. TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입

www.inflearn.com

 

오른쪽 encapsulation -> 왼쪽 decapsulation

 

네트워크 장애 시나리오


1. 물리단에서 Loss (유실)
2. Re-transmission  
    ACK - 중복 -> 송신측 ACK 재전송
3. Out of order : 1-2-4 , 3???
   TCP스택에서 (운영체제) 재조립
4. Zero Window
   : socket(kernel) 버퍼의 여유공간 = window size
   송수신속도보다 버퍼 비워지는 속도가 느리다, 데이터 전송x