[TIL/크래프톤 정글] DAY 55

배재준·2025년 5월 5일

크래프톤 정글 - TIL

목록 보기
48/93
post-thumbnail

2025.05.03

TIL(TODAY I LEARN)


  • 오늘한 내용 : CS - 네트워크 프로그래밍 - 소켓 프로그래밍

  • WEEK08: BSD소켓, IP, TCP, HTTP, file descriptor, DNS


네트워크 프로그래밍

네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터를 송수신하는 프로그램 작성을 의미

  • 소켓을 기반으로 하는 프로그래밍
    • Client - Server 모델
  • 네트워크 프로그래밍 = 소켓 + TCP/UDP 기반 통신 + 응용 계층 프로토콜 구현
  • 핵심 요소
    • 응용 계층 프로토콜(Protocol)
      • 위의 TCP/UDP 소켓 위에 “어떤 메시지 포맷”을 정의
      • 서로 약속된 메시지 형식과 교환 방식(예: HTTP, FTP, SMTP, DNS 등)을 정의
    • 소켓(Socket) 인터페이스
      • 네트워크 프로그래밍의 대표적 구현 방식
      • 애플리케이션 ↔ 전송 계층(TCP/UDP) 사이의 경계(API)
      • socket(), bind(), listen()/connect(), send()/recv() 등을 통해 데이터 송수신
      • 소켓 타입 매핑
        • socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) → TCP 스트림 소켓
        • socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) → UDP 데이터그램 소켓
    • 클라이언트–서버 모델
      • 서버는 서비스 제공자(bind()listen()accept()),
      • 클라이언트는 서비스 요청자(connect()),
      • 연결이 성립되면 send()/recv()로 서로 통신
  • 3-way 핸드셰이크 (TCP 연결 설정)
    1. 클라이언트 connect() 호출 → SYN 전송
    2. 서버 LISTEN 상태에서 SYN 수신 후 SYN+ACK 응답
    3. 클라이언트 SYN+ACK 수신 후 ACK 전송 → 연결 확립
  • 네트워크의 뼈대(소켓 + TCP/UDP) 위에 다양한 서비스(HTTP, DNS, FTP 등)를 얹어 확장할 수 있음

소켓

  • 네트워크 상에서 동작하는 프로그램 간 양방향 통신의 종단점(Communication Endpoint)
  • 파일 디스크립터 기반(read()/write()와 동일 방식)

소켓 유형 비교

소켓 타입프로토콜특징
SOCK_STREAMTCP연결형, 순서·신뢰성 보장, 스트림 지향
SOCK_DGRAMUDP비연결형, 메시지 경계 유지, 헤더 오버헤드 작음, 순서·재전송 없음
SOCK_RAWIP (원시)IP 헤더 직접 제어, ICMP 등 커스텀 프로토콜 구현용

클라이언트 - 서버 모델

역할설명
클라이언트(Client)• 서비스를 “요청(request)” 하는 주체• 사용자 인터페이스(UI)를 통해 입력을 받고, 그에 따라 네트워크 요청을 생성• 요청을 보낸 뒤 서버의 응답을 받아 화면에 표시하거나 후속 처리를 수행
서버(Server)• 클라이언트로부터 들어온 요청을 “처리(process)” 하는 주체• 요청에 맞는 데이터 조회·계산·저장 등을 수행하고, 결과를 “응답(response)” 형태로 반환• 다수의 클라이언트 요청을 동시에 처리하도록 설계
  • 소켓 통신 함수 순서(TCP)

0개의 댓글