1. GET과 POST의 차이
개념 정리
-
GET
- 서버에 데이터를 요청(조회)할 때 사용
- 쿼리 파라미터를 통해 데이터를 URL에 노출하여 전송
- 캐싱이 가능해 속도가 비교적 빠름
- 길이 제한이 있고, URL에 기록되어 민감 데이터 노출 위험이 있음
-
POST
- 서버에 데이터를 생성/갱신할 때 사용
- HTTP Body에 데이터를 담아 전송
- URL에 데이터가 노출되지 않아 상대적으로 안전
- 서버 자원에 변경을 일으키는 성격
비유&예시
- GET은 “신문을 읽기 위해서(READ) 뉴스 사이트에 접속”하는 것(조회)
- POST는 “게시판에 글을 올리거나(WRITE) 등록”하는 것(생성/수정)
포인트
- 캐싱 & 북마크: GET은 URL에 파라미터가 붙으므로 즐겨찾기에 활용 가능
- 보안 측면: GET은 URL 노출로 민감 데이터 전송 시 위험, POST는 상대적으로 안전
- 서버 자원 변화: GET은 조회용, POST는 리소스 생성/업데이트 시 사용
2. GET/POST 중 HTTP 메서드 선택 기준
개념 정리
-
GET
- 서버의 상태 변화 없이 데이터를 가져오거나 조회하는 경우
- URL에 파라미터를 노출 (예:
GET /users?id=123)
-
POST
- 서버 자원에 변경을 일으키거나
- 데이터가 많거나 민감 정보일 때 (URL 노출 방지)
- 요청 데이터를 Body에 담을 때
실무적 기준
- 데이터 크기: GET은 URL 길이 제한 때문에 작은 파라미터 사용, 큰 데이터나 파일은 POST
- 민감 정보: 개인정보/비밀번호 등은 POST 사용
- 의미적 분리: 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 연결 수립)
- 클라이언트 → 서버: SYN (연결 요청)
- 서버 → 클라이언트: SYN+ACK (요청 수락 + 서버도 연결 요청)
- 클라이언트 → 서버: ACK (서버 요청 확인)
4-Way Handshake (TCP 연결 해제)
- 클라이언트 → 서버: FIN (더 이상 보낼 데이터 없음)
- 서버 → 클라이언트: ACK (FIN 수신 확인)
- 서버 → 클라이언트: FIN (서버도 전송 완료)
- 클라이언트 → 서버: ACK (서버 FIN 수신 확인, 연결 종료)
비유
- 3way: “전화 연결 시 ‘여보세요?’ → ‘누구세요?’ → ‘○○입니다’” 과정
- 4way: “전화 끊을 때 ‘더 할 얘기 있어?’ → ‘없어, 끊자’ → ‘알았어, 나도 끊을게’ → ‘응, 잘 가’”
포인트
- TCP는 양방향 통신이므로 연결 설정과 연결 해제 절차가 각각 필요
- TIME_WAIT 상태, SYN Flood 공격 등 심화 내용이 자주 이어짐
5. OSI7계층
계층별 역할
- 물리 계층(Physical) – 전기적 신호, 케이블, 리피터
- 데이터 링크 계층(Data Link) – MAC 주소, 스위치, 브리지
- 네트워크 계층(Network) – IP 주소, 라우터, IP 프로토콜
- 전송 계층(Transport) – TCP/UDP, 포트 번호
- 세션 계층(Session) – 세션 관리, 유지
- 표현 계층(Presentation) – 데이터 변환, 암호화, 압축
- 응용 계층(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 스펙 문서”로 협업)
면접답변 시의 포인트 정리
-
간결하고 핵심만 말하기
- 면접 시간은 제한적이므로, 기본 개념을 빠르게 정리
-
예시와 비유 활용하기
- 실제 프로젝트나 생활 속 사례(등기우편/일반우편, 주민등록번호/집주소 등)
-
심화 질문 대비하기
- 예: TCP 3way handshake 설명 후 SYN Flood 공격, TIME_WAIT 상태 등
- RESTful 설계 시 URI 규칙(naming)이나 에러 코드 설계 등
-
OSI 7계층 구조와 프로토콜 흐름 명확히 이해하기
- 각 계층 대표 프로토콜을 명확히 연결해 이야기하기
답변 시 개념→예시/비유→핵심 포인트의 흐름으로 말하도록 준비해보자.
rest와 restful에 대해 헷갈려서 따로 글로 정리해야겠다.