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

2025. 5. 1. 20:10·크래프톤 정글/컴퓨터구조(CSAPP)
목차
  1. 소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기
  2. 네트워크를 구성하는 요소들
  3. 계층 모델로 이해하는 인터넷 구조
  4. 패킷이 전달되는 방식 (캡슐화와 전달 경로)
  5. TCP vs UDP: 어떤 상황에 어떤 전송 계층을 쓸까?
  6. 마치면서

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

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

 

 

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

  • 호스트 (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
  1. 소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기
  2. 네트워크를 구성하는 요소들
  3. 계층 모델로 이해하는 인터넷 구조
  4. 패킷이 전달되는 방식 (캡슐화와 전달 경로)
  5. TCP vs UDP: 어떤 상황에 어떤 전송 계층을 쓸까?
  6. 마치면서
'크래프톤 정글/컴퓨터구조(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, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.