오늘은 개발자라면 반드시 알아야 할 TCP/IP 프로토콜에 대해 정리해보려고 한다.
처음 공부할 때 어려웠던 부분들을 쉽게 비유를 통해 설명해 보겠다.

1. TCP/IP 프로토콜이란?


TCP/IP는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 사용하는 프로토콜이다.
TCP(전송 제어 프로토콜)와 IP(인터넷 프로토콜)를 함께 부르는 말이다.

TCP/IP의 특징

1. 신뢰성이 높다
   - 패킷 손실 시 재전송을 한다
   - 순서가 바뀐 패킷을 올바른 순서로 재조립한다

2. 연결 지향적이다
   - 통신 전에 연결을 설정한다
   - 데이터 전송이 끝나면 연결을 종료한다

3. 호스트 식별이 가능하다
   - IP 주소를 통해 각 호스트를 구분한다
   - 포트 번호로 애플리케이션을 구분한다

실생활 비유: 우체국 택배 서비스


TCP/IP는 인터넷에서 데이터를 주고받는 규칙이다. 우체국 택배 서비스에 비유하면 이해하기 쉽다.

- IP(인터넷 프로토콜) = 택배 주소
  - 택배를 보낼 때 정확한 주소가 필요한 것처럼,
  - IP는 데이터를 보낼 컴퓨터의 주소를 지정한다

- TCP(전송 제어 프로토콜) = 택배 서비스의 규칙
  - 택배가 안전하게 배달되었는지 확인한다
  - 여러 개의 상자가 순서대로 배달되도록 한다
  - 분실된 택배는 다시 보낸다

2. TCP/IP 4계층 구조


TCP/IP는 4개의 계층으로 구성되어 있다. 각 계층별 주요 프로토콜과 역할을 살펴보자.

응용 계층 (Application Layer)

- 주요 프로토콜: HTTP, FTP, SMTP, DNS
- 역할: 사용자와 가장 가까운 계층으로, 응용 프로그램들의 통신을 담당한다
- 예시: 웹 브라우저, 이메일 클라이언트

전송 계층 (Transport Layer)

- 주요 프로토콜: TCP, UDP
- 역할: 데이터의 신뢰성 있는 전송을 담당한다
- 특징:
  - TCP: 신뢰성, 순서 보장
  - UDP: 빠른 전송, 신뢰성 낮음

인터넷 계층 (Internet Layer)

- 주요 프로토콜: IP, ICMP, ARP
- 역할: 패킷의 라우팅과 전달을 담당한다
- 주요 기능:
  - IP 주소 지정
  - 패킷 분할과 조립
  - 라우팅

네트워크 접근 계층 (Network Access Layer)

- 주요 프로토콜: 이더넷, Wi-Fi
- 역할: 물리적인 네트워크 통신을 담당한다
- 처리 내용:
  - MAC 주소
  - 물리적 주소 지정
  - 데이터 프레임 생성

TCP/IP 4계층 구조 (건물에 비유)

[4층] 응용 계층 = 실제 사용하는 프로그램
      (예: 웹브라우저, 이메일)
      
[3층] 전송 계층 = 데이터 전달 보증
      (예: 택배 추적 서비스)
      
[2층] 인터넷 계층 = 주소와 경로 찾기
      (예: 네비게이션)
      
[1층] 네트워크 접근 계층 = 실제 데이터 전송
      (예: 택배 기사님)

2-1. TCP/IP는 어떻게 작동하나요?

1. 웹사이트 접속 요청
  
   나의 컴퓨터 -----> 네이버 서버
   "네이버 홈페이지 좀 보여주세요!"
   

2. 서버의 응답
   
   네이버 서버 -----> 나의 컴퓨터
   "네, 여기 홈페이지 데이터 보내드립니다!"


3. TCP의 연결 과정 (3-way handshake)

TCP는 신뢰성 있는 통신을 위해 연결을 설정할 때 3-way handshake를 사용한다.

출처 : https://www.cloudflare.com/ko-kr/learning/ddos/glossary/tcp-ip/

1. SYN (클라이언트 → 서버)
   - 클라이언트가 연결 요청을 보낸다
   - 초기 시퀀스 번호를 포함한다

2. SYN + ACK (서버 → 클라이언트)
   - 서버가 요청을 수락한다
   - 자신의 시퀀스 번호를 보낸다

3. ACK (클라이언트 → 서버)
   - 클라이언트가 응답을 확인한다
   - 이제 데이터 전송이 가능하다


실생활 비유: 전화 통화 시작하기


1. 첫 번째 단계 (SYN)
   A: "여보세요?" (통화 시작 요청)

2. 두 번째 단계 (SYN-ACK)
   B: "네, 여보세요?" (응답 및 통화 준비 완료)

3. 세 번째 단계 (ACK)
   A: "네, 잘 들립니다." (통화 시작)

4. TCP의 데이터 전송 특징

흐름 제어

- 수신 윈도우 사용
- 수신자의 처리 속도에 맞춰 전송 속도를 조절한다

혼잡 제어

1. 슬로우 스타트
   - 처음에는 작은 크기로 시작한다
   - 점차 전송량을 늘려간다

2. 혼잡 회피
   - 네트워크 혼잡을 감지하면 전송량을 줄인다
   - 점차적으로 다시 늘려간다


카카오톡으로 사진 전송하기

1. 분할 전송
   - 큰 사진을 작은 조각으로 나눠서 보낸다
   - 각 조각에 번호를 매겨 순서를 정한다

2. 전송 확인
   - 각 조각이 잘 도착했는지 확인한다
   - 손실된 조각은 다시 보낸다

3. 재조립
   - 받은 조각들을 번호 순서대로 다시 조립한다
   - 완성된 사진을 표시한다


5. TCP/IP의 장단점

장점

- 안전하고 신뢰성이 높다 (택배 추적처럼)
- 전 세계 표준이라 호환성이 좋다
- 오류를 자동으로 복구한다

단점

- 설정 시간이 필요하다 (3-way handshake)
- UDP보다 속도가 좀 더 느리다
- 더 많은 네트워크 자원을 사용한다