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

배재준·2025년 5월 2일

크래프톤 정글 - TIL

목록 보기
47/93
post-thumbnail

2025.05.02

TIL(TODAY I LEARN)


  • 오늘한 내용 : 네트워크 프로그래밍 - OSI 7계층

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


OSI 7계층

  • 나눈 이유
    • 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문.

      흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문.

  • OSI 7계층 (국제표준화기구 참조 모델)
    1. 물리층 (Physical)
    2. 데이터 링크층 (Data Link)
    3. 네트워크층 (Network)
    4. 전송층 (Transport)
    5. 세션층 (Session)
    6. 표현층 (Presentation)
    7. 응용층 (Application)
  • TCP/IP 4계층 (실제 구현된 프로토콜 스택)
    • 응용 → 전송 → 인터넷 → 네트워크 인터페이스
  • 비교:
    • OSI는 설계·참조용, TCP/IP는 현실 세계에서 구동되는 프로토콜 계층 구조

1계층 – Physical Layer

  • 기능:
    • 전기적·기계적 특성 이용, 비트를 물리 매체(케이블 등)를 통해 전송

  • 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않음.

  • 그 전까지 버리다가 110들어오면 받기 시작
  • 데이터 단위: 비트(0/1)
  • 장비 예시:
    • 통신 케이블, 리피터, 허브 등

  • 기능:

    • 프레임 생성 (패킷(네트워크 계층) + 헤더/트레일러 추가)

    • 프레이밍(Framing): 플래그(Flag)를 사용해 물리 계층에서 전달된 비트열을 프레임 단위로 구분한다.

    • 헤더

      • 목적지/출발지 물리 주소 (MAC Address)
      • 제어 정보 (프레임 타입, Sequence 번호 등)
      • 길이 정보 (길이 기반 프레이밍 시)
    • 트레일러

      • 오류 검출 필드 (FCS: Frame Check Sequence, CRC)
      • 패딩(Padding) (최소 프레임 크기 보장 시)
    • 물리 주소 지정(Physical Addressing)

      • 프레임 헤더에 송신자와 수신자의 MAC 주소를 지정한다.
        • MAC 주소 :
          네트워크 인터페이스 카드(NIC)에 할당된 고유 식별자로, 48비트(6바이트) 길이(예: 00:1A:2B:3C:4D:5E)
      • 같은 LAN 내에서 프레임 전달
    • 오류 검출(Error Detection)

      • 송신 측에서 오류 검출 코드(CRC) 계산 후 트레일러에 삽입
      • 수신 측에서 재계산해 일치 여부 확인
      • 오류 있는 프레임 폐기 또는 재전송 요청
    • 흐름 제어(Flow Control):

      • 송신자와 수신자 간의 데이터 처리 속도 차이를 조절해 수신 측의 버퍼 오버플로우를 방지한다.
        • 버퍼 오버플로우 : 수신자는 프레임을 보관할 버퍼가 있음. 흐름 제어가 안되면 버퍼가 가득 차고 더 이상 저장 공간이 없어서 버려지는 상황
        • Stop-and-Wait: 한 프레임씩 보내고, 수신 측에서 “잘 받았다(ACK)” 응답을 보내기 전까지 다음 프레임을 보내지 않음.
        • Sliding Window: N개의 프레임을 연속해서 보내되, 수신 측이 처리(ACK)한 만큼 윈도우를 이동시켜 추가 전송을 허용.
    • 매체 접근 제어(Media Access Control, MAC)

      • 여러 장치가 공유하는 통신 매체(예: 이더넷)에 대한 접근을 제어한다.
      • CSMA/CD (Ethernet)
        • 채널 감지 후 전송(Carrier Sense), 충돌 감지 후 재전송(Collision Detect)
      • CSMA/CA (Wi-Fi)
        • 충돌 회피 위해 전송 전 예약(Request-to-Send/Clear-to-Send)
  • 장비 예시:

    • 브리지(Bridge), 스위칭 허브(Switch)

3계층 – Network Layer

  • 기능:

    • 패킷 생성 (세그먼트(TCP)/데이터그램(UDP) + 헤더 추가)
    • 논리 주소 지정(Logical Addressing)
      • 데이터를 전송할 때 출발지와 최종 목적지 시스템을 식별하기 위한 논리적인 주소인 헤더(IP 주소)를 할당한다.

    • 라우팅(Routing)
      • 데이터 패킷이 최종 목적지까지 도달하기 위한 최적의 경로(다음 홉)를 결정한다.
    • 단편화 및 재조립(Fragmentation and Reassembly)
      • 전송 가능한 최대 크기(MTU, Maximum Transmission Unit)보다 큰 패킷을 작은 단편으로 나누어 전송하고, 목적지에서 다시 원래의 패킷으로 재조립한다.
    • 오류 검사
      • 데이터 링크 계층에서 주로 오류 검출·정정이 이뤄지므로, 네트워크 계층에서는 간단한 체크섬으로 전송 중 오류 여부만 확인
    • 흐름제어(Flow control)와 혼잡제어(Congestion control)
      • 전송 계층의 흐름제어와 혼잡제어와 비슷하나, 제어의 대상이 라우터와 라우터로 다르다.
    • IP 주소 체계 사용
      • IPv4: 32비트, IPv6: 128비트 주소 체계
      • 주소 할당 방식(고정 vs DHCP) 및 서브넷팅
  • 장비 예시:

    • 라우터(Router)

4계층 - Transport Layer

  • 기능

    • 세그멘테이션 & 재조립 (Segmentation & Reassembly)
      - 애플리케이션으로부터 받은 큰 데이터 블록을 네트워크 MTU에 맞춰 쪼개어 세그먼트(TCP) 또는 데이터그램(UDP)을 생성
      - 수신 측에서 순서에 맞춰 재조립

    • 신뢰성 보장 (Reliability)TCP 전용

      • 연결 설정(3-way handshake), 종료(4-way handshake)
      • 재전송(오류·손실 감지 시), 순서 보장, 중복 제거
      • 체크섬으로 전송 중 데이터 무결성 검사
    • 포트 번호에 의한 다중화 (Multiplexing & Demultiplexing)

      • IP 주소 하나를 여러 애플리케이션이 공유 가능
      • 포트 번호로 각 세그먼트를 올바른 애플리케이션 프로세스(소켓)로 전달
      • 클라이언트·서버 모델에서 서비스 식별자 역할 (예: HTTP 80, HTTPS 443)
    • 흐름 제어(Flow Control): 송신 속도와 수신 처리 속도 조율

    • 오류 검출 및 복구(Error Checking & Recovery): 중복 검사, 손실된 세그먼트 재전송

  • 주요 프로토콜

    • TCP: 연결형, 신뢰성·순서 보장, 혼잡 제어(Congestion Control) 포함

    • UDP: 비연결형, UDP헤더(8B)가 TCP헤더(20B ↑)보다 작음, 순서 보장·재전송 없음

      기준TCPUDP
      신뢰성 보장✅(순서 보장, 재전송, 중복 제거)❌ (애플리케이션이 직접 구현해야 함)
      헤더 오버헤드크다 (20바이트 이상)작다 (8바이트)
      실시간 전송잘 안 맞음 (재전송 지연 있음)잘 맞음 (지연 최소화)
      애플리케이션 부담낮음 (TCP가 대신 처리해 줌)높음 (개발자가 직접 흐름·신뢰성 제어)
  • PDU 명칭: 세그먼트(segment, TCP) / 데이터그램(datagram, UDP)


5,6,7 계층 - Application Layer

  • 역할
    • 최종 사용자와 직접 연동되는 서비스 제공
    • 애플리케이션 프로세스 간 데이터 교환을 위한 프로토콜 정의
    • 네트워크 기능(세션, 표현, 전송)을 활용해 “서비스”로 구현
  • 주요 기능
    1. 프로토콜 인터페이스
      • 애플리케이션이 소켓 API를 통해 네트워크 기능을 호출
      • HTTP, FTP, SMTP, DNS, SSH 등 표준화된 규약 제공
    2. 데이터 형식 처리
      • 메시지 포맷(JSON, XML, MIME 등) 및 인코딩/디코딩
    3. 세션/상태 관리
      • 쿠키·토큰·세션 스토어 등을 이용해 사용자 상태 유지
    4. 보안·인증
      • TLS/SSL, OAuth, API 키 등 인증·암호화 메커니즘
  • 대표 프로토콜
    프로토콜포트용도
    HTTP80/443웹 페이지 전송
    DNS53도메인 이름 ↔ IP 주소 변환
    SMTP25이메일 전송
    FTP20/21파일 업로드·다운로드
    SSH22보안 원격 접속

도움 받은 블로그

0개의 댓글