오늘은 개발자라면 반드시 알아야 할 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보다 속도가 좀 더 느리다
- 더 많은 네트워크 자원을 사용한다