네트워크 관련 핵심정리

Aurora·2025년 2월 26일
2
post-thumbnail

1. GET과 POST의 차이

개념 정리

  • GET

    • 서버에 데이터를 요청(조회)할 때 사용
    • 쿼리 파라미터를 통해 데이터를 URL에 노출하여 전송
    • 캐싱이 가능해 속도가 비교적 빠름
    • 길이 제한이 있고, URL에 기록되어 민감 데이터 노출 위험이 있음
  • POST

    • 서버에 데이터를 생성/갱신할 때 사용
    • HTTP Body에 데이터를 담아 전송
    • URL에 데이터가 노출되지 않아 상대적으로 안전
    • 서버 자원에 변경을 일으키는 성격

비유&예시

  • GET은 “신문을 읽기 위해서(READ) 뉴스 사이트에 접속”하는 것(조회)
  • POST는 “게시판에 글을 올리거나(WRITE) 등록”하는 것(생성/수정)

포인트

  1. 캐싱 & 북마크: GET은 URL에 파라미터가 붙으므로 즐겨찾기에 활용 가능
  2. 보안 측면: GET은 URL 노출로 민감 데이터 전송 시 위험, POST는 상대적으로 안전
  3. 서버 자원 변화: GET은 조회용, POST는 리소스 생성/업데이트 시 사용

2. GET/POST 중 HTTP 메서드 선택 기준

개념 정리

  • GET

    • 서버의 상태 변화 없이 데이터를 가져오거나 조회하는 경우
    • URL에 파라미터를 노출 (예: GET /users?id=123)
  • POST

    • 서버 자원에 변경을 일으키거나
    • 데이터가 많거나 민감 정보일 때 (URL 노출 방지)
    • 요청 데이터를 Body에 담을 때

실무적 기준

  1. 데이터 크기: GET은 URL 길이 제한 때문에 작은 파라미터 사용, 큰 데이터나 파일은 POST
  2. 민감 정보: 개인정보/비밀번호 등은 POST 사용
  3. 의미적 분리: REST 원칙에 따라 조회는 GET, 생성은 POST

포인트

  • RESTful 설계 준수: GET은 조회, POST는 생성/변경
  • 보안, 편의성, 서버 변화 여부 고려

3. 전송계층의 대표 프로토콜

3-1) TCP, UDP 특징&장단점

1) TCP

  • 특징: 연결형(Connection-oriented), 신뢰성 보장(순서 보장, 재전송)
  • 장점: 손실/중복 방지, 흐름 제어, 혼잡 제어 제공
  • 단점: 연결 설정/해제의 오버헤드(3-way/4-way), 속도 상대적으로 느림

2) UDP

  • 특징: 비연결형(Connectionless), 헤더가 간단, 빠른 전송
  • 장점: 실시간 전송에 유리, 지연시간이 작음
  • 단점: 손실/중복 방지 없음, 순서 보장 없음(추가 로직 필요)

비유

  • TCP: “등기우편” – 반드시 수신 확인 후 전달
  • UDP: “일반우편” – 빠르지만 손실 위험이 있음

포인트

  • TCP는 신뢰성을, UDP는 속도를 중시
  • 흐름 제어, 혼잡 제어 등 TCP의 핵심 기능을 알고 있어야 함

3-2) TCP와 UDP가 적합한 애플리케이션의 예시

  • TCP 예시

    • 웹 브라우징(HTTP, HTTPS)
    • 이메일(POP3, IMAP, SMTP)
    • 파일 전송(FTP)
    • 데이터베이스 통신
    • ⇒ 신뢰성과 순서를 보장해야 하는 경우
  • UDP 예시

    • DNS
    • 스트리밍(영상/음성)
    • 온라인 게임(빠른 응답이 중요)
    • VoIP(화상회의)
    • ⇒ 실시간성과 속도가 중요한 경우

4. 3way handshake, 4way handshake

3-Way Handshake (TCP 연결 수립)

  1. 클라이언트 → 서버: SYN (연결 요청)
  2. 서버 → 클라이언트: SYN+ACK (요청 수락 + 서버도 연결 요청)
  3. 클라이언트 → 서버: ACK (서버 요청 확인)

4-Way Handshake (TCP 연결 해제)

  1. 클라이언트 → 서버: FIN (더 이상 보낼 데이터 없음)
  2. 서버 → 클라이언트: ACK (FIN 수신 확인)
  3. 서버 → 클라이언트: FIN (서버도 전송 완료)
  4. 클라이언트 → 서버: ACK (서버 FIN 수신 확인, 연결 종료)

비유

  • 3way: “전화 연결 시 ‘여보세요?’ → ‘누구세요?’ → ‘○○입니다’” 과정
  • 4way: “전화 끊을 때 ‘더 할 얘기 있어?’ → ‘없어, 끊자’ → ‘알았어, 나도 끊을게’ → ‘응, 잘 가’”

포인트

  • TCP는 양방향 통신이므로 연결 설정과 연결 해제 절차가 각각 필요
  • TIME_WAIT 상태, SYN Flood 공격 등 심화 내용이 자주 이어짐

5. OSI7계층

계층별 역할

  1. 물리 계층(Physical) – 전기적 신호, 케이블, 리피터
  2. 데이터 링크 계층(Data Link) – MAC 주소, 스위치, 브리지
  3. 네트워크 계층(Network) – IP 주소, 라우터, IP 프로토콜
  4. 전송 계층(Transport) – TCP/UDP, 포트 번호
  5. 세션 계층(Session) – 세션 관리, 유지
  6. 표현 계층(Presentation) – 데이터 변환, 암호화, 압축
  7. 응용 계층(Application) – 사용자 인터페이스, HTTP/FTP/SMTP 등

비유

  • 편지에 비유하자면..
    • 물리 계층: 편지를 어떻게 옮길지를 담당하는 단계
    • 데이터 링크 계층: “이 편지가 어느 구·동(동네 우체국)으로 가야 하나?”를 결정
    • 네트워크 계층: “어떤 경로로 전국(혹은 해외) 우체국을 거쳐 최종 목적지로 보낼까?”를 결정
    • 전송 계층:
      - 등기우편(TCP)은 중간에 분실되면 재발송 확인, 순서 꼬임 방지
      - 일반우편(UDP)은 빠르고 간단하지만 분실 위험 감수
    • 세션 계층 : 편지 왕복을 관리하는 택배사 고객센터 느낌
    • 표현 계층 : 편지를 암호문으로 바꾸거나, 내용을 압축해 부피를 줄이는 것
    • 응용 계층 : 편지를 열어보는 수취인 혹은 편지를 작성하는 발송인의 실제 행위

포인트

  • 각 계층의 대표 프로토콜과 장비를 알고 있어야 함
  • 계층화 장점: 표준화, (계층 간 경계와 약속으로 인한)변경 최소화, 호환성

6. MAC주소와 IP주소의 차이

개념 비교

  • MAC 주소

    • 하드웨어(랜카드)에 할당된 고유 식별자
    • 일반적으로 2계층(데이터 링크 계층)에서 사용
    • 예: 00:1A:2B:3C:4D:5E
    • 고정되어 있지만 일부 환경에서 변경(위조) 가능
  • IP 주소

    • 네트워크에서 논리적으로 할당되는 주소
    • 3계층(네트워크 계층)에서 사용
    • 예: 192.168.0.1
    • 네트워크 환경에 따라 동적으로 변경 가능

비유

  • MAC: 주민등록번호(일단 고유하게 부여)
  • IP: 집 주소(이사하면 바뀔 수 있음)

포인트

  • 물리적 주소 vs 논리적 주소
  • 계층이 다름
  • 변경 가능성(동적 vs 정적)

7. REST API

개념 정의

  • REST(Representational State Transfer)
    • URI를 통해 자원을 식별
    • HTTP 메서드(GET, POST, PUT, DELETE) 등을 통해 자원을 조작
    • 무상태(Stateless)성, 캐시 가능 등 특정한 아키텍처 스타일
  • REST API
    • REST 원칙을 준수하여 HTTP 기반으로 서버-클라이언트 통신을 하는 API

예시

  • GET /users/1 → 특정 사용자 정보 조회
  • POST /users { name: “Kim” } → 사용자 정보 생성

포인트

  • REST의 핵심 원칙(무상태, 계층 구조, 자원 식별 등)
  • HTTP 표준 메서드 활용, URI 설계의 중요성

8. Restful

개념 정리

  • RESTful: REST 아키텍처 스타일을 충실히 지킨 디자인
    • 자원 명시(URI), HTTP 메서드의 일관적 사용
    • 서버-클라이언트 간 무상태성 유지
    • 직관적이고 일관성 있는 URI 설계

비유

  • 식당 메뉴판과 주문서가 체계적으로 정리되어 있어, 누구든지 쉽게 이해하고 주문할 수 있는 상태

면접 답변 포인트

  • REST 원칙(자원 식별, 표현, 메서드 활용, 무상태성)을 잘 지켰는지 강조
  • “RESTful” = 예쁜 URI, 무상태 서버, 명확한 메서드 구분

9. API

개념 정의

  • API (Application Programming Interface)
    • 서로 다른 소프트웨어끼리 기능/데이터를 교환하기 위한 인터페이스
    • 명세와 프로토콜을 포함

비유

  • “식당 주방에 직접 들어가지 않고, 메뉴판(인터페이스)으로 음식을 주문해서 받는 것”

포인트

  • API의 역할: 모듈화, 재사용, 확장성
  • REST API, 라이브러리 API 등 여러 형태
  • 문서화 중요성(“API 스펙 문서”로 협업)

면접답변 시의 포인트 정리

  1. 간결하고 핵심만 말하기

    • 면접 시간은 제한적이므로, 기본 개념을 빠르게 정리
  2. 예시와 비유 활용하기

    • 실제 프로젝트나 생활 속 사례(등기우편/일반우편, 주민등록번호/집주소 등)
  3. 심화 질문 대비하기

    • 예: TCP 3way handshake 설명 후 SYN Flood 공격, TIME_WAIT 상태 등
    • RESTful 설계 시 URI 규칙(naming)이나 에러 코드 설계 등
  4. OSI 7계층 구조와 프로토콜 흐름 명확히 이해하기

    • 각 계층 대표 프로토콜을 명확히 연결해 이야기하기

답변 시 개념→예시/비유→핵심 포인트의 흐름으로 말하도록 준비해보자.
rest와 restful에 대해 헷갈려서 따로 글로 정리해야겠다.

profile
개발에 애정을 쏟는 연구자입니다

0개의 댓글