[CSAPP 11장 완전 정복] 11.2 소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기

2025. 5. 1. 20:10·크래프톤 정글/컴퓨터구조(CSAPP)

소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기

이번 포스트에서는 클라이언트-서버 모델 위에 실제 통신이 어떻게 이루어지는지를 다루는 네트워크 계층을 정리해 봅니다. 소켓 프로그래밍이 실제로는 전송 계층 수준에서 이뤄지는 작업이라는 점도 명확히 해두고 싶은데요. 이는 이후 실제 코드를 효율적으로 따라가기 위해 반드시 필요한 개념이라고 할 수 있습니다.

 

 

네트워크를 구성하는 요소들

  • 호스트 (Host)
    • 클라이언트나 서버 역할을 하는 컴퓨터
    • 우리가 직접 소켓을 실행시키는 주체
  • 링크 (Link)
    • 유선/무선으로 두 장치를 연결하는 통로 (ex. 이더넷, Wi-Fi)
  • 라우터 (Router)
    • 데이터가 목적지까지 잘 도달하도록 경로를 설정해주는 중간 관리자

구조적으로 보면 데이터는 "Client Host → Link → Router → Link → Server Host" 순서로 흘러갑니다.

 

 

계층 모델로 이해하는 인터넷 구조

인터넷은 계층적으로 설계되어 있는데요. 우리가 소켓을 통해 다루게 되는 범위는 주로 상위 두 계층인 애플리케이션과 전송 계층입니다.

  1. 애플리케이션 계층: HTTP, FTP 등
  2. 전송 계층: TCP(신뢰성), UDP(속도 우선)
  3. 네트워크 계층: IP 주소 기반 라우팅
  4. 링크 계층: 실제 물리적 전송 (MAC 주소, 이더넷 등)

개발자들은 주로 애플리케이션 + 전송 계층에서 작업을 진행하기 때문에, 하위 계층은 추상화된 상태로 이해만 하는 것을 추천합니다.

 

 

패킷이 전달되는 방식 (캡슐화와 전달 경로)

  • 상위 계층의 데이터는 하위 계층에서 헤더를 덧붙여 전달됨 (캡슐화)
  • 클라이언트(상위 계층→하위 계층) → 링크 → 라우터 → 링크 → 서버(하위 계층→상위 계층)의 경로로 전달
  • 각 계층에서 해당 헤더를 보고 필요한 작업을 수행한 뒤 다음 계층에 넘김
  • 수신 측에서는 이 순서를 역캡슐화 하며 애플리케이션 계층까지 도달

 

TCP vs UDP: 어떤 상황에 어떤 전송 계층을 쓸까?

특징 TCP UDP
연결 방식 연결 지향 (3-way handshake) 비연결
신뢰성 순서 보장, 데이터 무결성 보장 보장 없음
속도 느림 빠름
용도 HTTP, FTP, 이메일 등 스트리밍, 게임, DNS 등

소켓 프로그래밍에서 연결의 신뢰성과 순서 보장이 필요하면 TCP를, 반응 속도가 중요하고 약간의 손실을 허용할 수 있다면 UDP를 사용합니다.

 

 

마치면서

이번 포스트에서는 우리가 다루게 될 네트워크의 추상적 구조와 각 계층의 역할, 그리고 TCP/UDP 전송 계층의 특성과 선택 기준까지 정리해 보았는데요. 이제 소켓을 쓸 때 내가 어느 계층에서 머무르고 있는지, 또 그 아래 계층들이 어떤 식으로 내 데이터를 전달하는지 이해할 수 있게 되었습니다.

 

다음 편에서는 이 네트워크 구조 위에서 소켓을 제대로 연결하고 데이터를 주고받기 위해 알아야 할 IP/Port, DNS, byte order, handshake 개념을 정리해볼 예정입니다. 감사합니다!

저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > 컴퓨터구조(CSAPP)' 카테고리의 다른 글

[CSAPP 11장 완전 정복] 11.4 rawdata 공유 (전체 학습 목표, 학습 정리 자료)  (0) 2025.05.02
[CSAPP 11장 완전 정복] 11.3 IP, 포트, DNS, 바이트 순서까지, 실전 소켓 프로그래밍 개념 정리  (0) 2025.05.01
[CSAPP 11장 완전 정복] 11.1 소켓 프로그래밍을 위한 클라이언트-서버 모델 개념 잡기  (0) 2025.05.01
[CSAPP 6장 완전 정복] 6.6~6.7 캐시가 프로그램 성능에 미치는 영향 및 6장 전체 요약  (0) 2025.04.30
[CSAPP 6장 완전 정복] 6.5 캐시 친화적인 코드 최적화 전략 알아보기  (0) 2025.04.30
'크래프톤 정글/컴퓨터구조(CSAPP)' 카테고리의 다른 글
  • [CSAPP 11장 완전 정복] 11.4 rawdata 공유 (전체 학습 목표, 학습 정리 자료)
  • [CSAPP 11장 완전 정복] 11.3 IP, 포트, DNS, 바이트 순서까지, 실전 소켓 프로그래밍 개념 정리
  • [CSAPP 11장 완전 정복] 11.1 소켓 프로그래밍을 위한 클라이언트-서버 모델 개념 잡기
  • [CSAPP 6장 완전 정복] 6.6~6.7 캐시가 프로그램 성능에 미치는 영향 및 6장 전체 요약
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무) N
        • 마이 정글(WIL, 에세이) N
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CSAPP 11장 완전 정복] 11.2 소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기
상단으로

티스토리툴바