Networking Stack & APIs

John·2025년 6월 9일

system programming

목록 보기
1/11

Networking

What is a Network?

네트워크란? 컴퓨터 간(ex. client-server. 컴퓨터 네트워크에서는 주로 host라고 부름)의 데이터 전송을 가능하게 하는 인프라 또는 매커니즘이다.

많은 서비스에서 네트워크는 필수적이다. 네트워크를 사용하는 이유는 크게 두가지가 있다.
1. 많은 유저들에게 서비스 제공. ex) 웹 서버
2. 큰 사이즈의 workload를 수행. ex) 온라인 비디오 스트리밍(넷플릭스, 유튜브등), 검색 엔진, 심지어 LLM 학습에도 네트워크가 사용됨.

Networking 의 기능 및 장점

1. Resource Sharing

  • 파일이나 데이터를 로컬이 아니라 remote하게 저장, 사용할 수 있다.
  • Distributed DB사용 가능. ex) KV(key-value) store
  • GPU 원격 사용 가능.
    ex) 구글 colab
    cf) resource disaggregation - CPU, storage, memory 등 자원이 독립적으로 존재하고, 네트워크로 연결되어있는 구조

2.Computation Speedup

  • 자원을 분산시킴으로서, 각각의 자원이 병렬적으로 수행할 수 있도록 보장 --> 속도 향상. 최근 LLM 학습을 이렇게 많이 함.
  • Load Balancing : 많은 client가 server로 접근하려 할 때, gateway (또는 load balancer)가 접근 제어를 통해 비교적 덜 몰려있는 서버로 처리.

3. Reliability

  • 서버가 문제 생겼을 때(site failure), 요청을 다른 서버로 옮기기 가능. cf) migration in cloud computing

Layer-based Network Systems

시스템간 네트워크에는 layer가 존재한다. 각 layer 별로 맡는 역할이 다르고, 각각마다의 protocol(규약, 표준)이 있다. 그리고 계층마다의 operation은 middlebox는 L2, L3 정도에만 관여하고, 웬만한 operation은 엔드포인트의 커널에서 수행한다. layer별로 구분을 해야하기 때문에, 당연하겠지만 data 뿐 아니라, metadata를 가지고 있다. 즉, 이러한 metadata를 쓰는 방법이 protocol이라고 할 수 있음.

* 왜 protocol이 필요한가? endpoint마다 제원이나 모델이 다를 수 있겠지만, 같은 protocol을 따른다면 원활히 소통 가능하기 때문이다. ex) 주소 정보 등등

* 장점만 있는 것은 아니고, layer마다 protocol을 체크해야 하기 때문에, layer을 거칠 때마다 overhead 발생 가능.

계층 별 역할

컴퓨터네트워크 수업이 아니기 때문에, 계층별 역할을 간단하게 알아보겠다.

1. Physical Layer (L1)
하드웨어 단위에 적용되는 계층.
단위 : bit

2. Data Link Layer (L2)
두개의 인접한 디바이스끼리의 전송을 담당하는 계층. ex)내 PC - 라우터 간 통신
단위 : frame
프로토콜 종류 : 이더넷

3. Network Layer (L3)
로컬 단위를 넘어 호스트 간 통신을 담당하는 계층. 라우팅(포워딩) 담당. ex)내 PC - 넷플릭스 서버
단위 : packet
프로토콜 종류 : IP

4. Transport Layer (L4)
엔드포인트(application 또는 프로세스) 간의 통신을 담당하는 계층. L3과 차이점은 포트번호를 이용해 end-to-end를 담당하는 계층이라는 점이다. TCP의 경우에는 신뢰성 있는 전송을 보장한다.(3 way handshake)
단위 : segment
프로토콜 종류 : TCP(Transmission Control Protocol) , UDP(User Datagram Protocol)

5. Application Layer (L5)
transport layer을 바탕으로 추가 기능을 제공하는 layer.
프로토콜 종류 : SSL/TLS, HTTP, FTP


*그림 : https://velog.io/@euijoo3233/0223

Networking Stack

  • Networking Stack에서 stack이란? 각 계층을 구현하는 실제 소프트웨어들을 말한다.
  • 각각의 layer들은 protocol에 기반하고 있기 때문에, 프로토콜들의 모음이라고 할 수도 있다. (networking stack = protocol stack)
  • 커널에 구현되어있음.

Kernel Structure

  • 유저 어플리케이션은 커널을 통해 networking을 사용할 수 있다.
    커널에서 다양한 기능들과 구조들이 정의되어있다.
  1. structure
    파일시스템을 사용하기 위해 vfs(virtual filesytsem)와 관련 operation들이 정의되어 있는 것과 마찬가지로, networking stack에서도 socket, sock, skb 등과 같이 다양한 자료구조와 관련 함수들이 정의되어 있다.

참고 사이트 : https://makelinux.github.io/kernel/map/

profile
¡Salid y Disfrutad!

0개의 댓글