패킷 (Packet)
1. 개요
패킷(Packet)이란 컴퓨터 네트워크에서 데이터를 전송하기 위해 잘게 나눈 데이터의 기본 단위이다.
네트워크 통신에서 데이터를 하나의 거대한 덩어리로 전송하지 않고 패킷 단위로 쪼개어 전송하는 이유는 다음과 같다.
* 회선 효율성 증대: 하나의 연결이 회선을 독점하는 것을 방지하여 여러 사용자가 동시에 네트워크 자원을 공유할 수 있다.
* 오류 복구 용이성: 전송 중 데이터 오류가 발생했을 때, 전체 데이터를 다시 보낼 필요 없이 오류가 발생한 특정 패킷만 재전송하면 되므로 효율적이다.
* 유연한 경로 선택: 각 패킷은 네트워크 상황에 따라 서로 다른 최적의 경로를 통해 목적지로 이동할 수 있어 트래픽 분산이 가능하다.
2. 데이터 단위(PDU)의 일반적인 구조
패킷을 포함한 네트워크 데이터 단위는 전송에 필요한 제어 정보와 실제 데이터가 결합된 형태이며, 일반적으로 헤더, 페이로드, 트레일러의 세 부분으로 구성된다.
| 구성 요소 |
역할 |
포함되는 주요 정보 |
| 헤더 (Header) |
패킷의 제어 정보 및 목적지 안내 |
출발지/목적지 IP 주소, 포트 번호, 패킷 순서 번호(Sequence Number), 프로토콜 버전, TTL(Time to Live) 등 |
| 페이로드 (Payload) |
실제 전송하고자 하는 데이터 본체 |
텍스트, 이미지 조각, 파일 데이터, 제어 메시지 등 |
| 트레일러 (Trailer) |
패킷의 끝을 알리고 무결성 검증 |
FCS(Frame Check Sequence), CRC(Cyclic Redundancy Check) 등 오류 검출 코드 (주로 2계층 프레임 단계에서 추가됨) |
3. 패킷 교환 방식 (Packet Switching)
패킷 교환은 데이터를 작은 단위인 패킷으로 나누어 전송하고, 수신 측에서 이를 다시 조립하는 방식이다. 이는 과거 전화망에서 사용하던 회선 교환 방식과 대조된다.
회선 교환 vs 패킷 교환 비교
| 구분 |
회선 교환 (Circuit Switching) |
패킷 교환 (Packet Switching) |
| 연결 방식 |
전송 전 전용 경로를 미리 설정 (Dedicated Path) |
경로 설정 없이 패킷 단위로 전송 (Connectionless/Virtual Circuit) |
| 자원 점유 |
통신 종료 시까지 회선을 독점적으로 점유 |
여러 사용자가 회선을 공유 (Multiplexing) |
| 효율성 |
데이터 전송이 없어도 회선이 묶여 있어 낭비 발생 |
필요한 때에만 자원을 사용하여 효율적임 |
| 특징 |
지연 시간이 일정함 (실시간 음성 통화에 적합) |
경로에 따라 지연 시간이 가변적임 (데이터 통신에 적합) |
패킷은 OSI 7계층(Open Systems Interconnection Reference Model)의 각 계층을 통과하며 서로 다른 이름의 데이터 단위(PDU, Protocol Data Unit)로 불린다.
- 전송 계층 (Transport Layer): TCP의 경우 세그먼트(Segment), UDP의 경우 데이터그램(Datagram) 단위로 나눈다.
- 네트워크 계층 (Network Layer): 세그먼트/데이터그램에 IP 주소 등의 정보를 추가하여 패킷(Packet) 형태로 만든다.
- 데이터 링크 계층 (Data Link Layer): 패킷에 MAC 주소를 추가하여 프레임(Frame) 형태로 캡슐화한다.
- 물리 계층 (Physical Layer): 최종적으로 프레임을 전기적 신호인 비트(Bit) 단위로 변환하여 전송한다.
5. 패킷의 전송 과정
데이터는 송신 측에서 계층을 내려가며 포장되고, 수신 측에서 계층을 올라가며 포장을 해제하는 과정을 거친다.
- 캡슐화 (Encapsulation): 상위 계층의 데이터에 하위 계층의 제어 정보(헤더)를 덧붙이는 과정이다. (데이터 $\rightarrow$ 세그먼트 $\rightarrow$ 패킷 $\rightarrow$ 프레임)
- 역캡슐화 (Decapsulation): 수신 측에서 하위 계층의 헤더를 확인하고 제거하며 상위 계층으로 데이터를 전달하는 과정이다. (프레임 $\rightarrow$ 패킷 $\rightarrow$ 세그먼트 $\rightarrow$ 데이터)
전송 흐름 다이어그램
graph TD
subgraph Sender [송신자: 캡슐화 과정]
A[Data] --> B[Segment + TCP Header]
B --> C[Packet + IP Header]
C --> D[Frame + MAC Header]
end
D --> E((Network/Router))
subgraph Receiver [수신자: 역캡슐화 과정]
E --> F[Frame + MAC Header]
F --> G[Packet + IP Header]
G --> H[Segment + TCP Header]
H --> I[Data]
end
6. MTU와 단편화 (Fragmentation)
MTU (Maximum Transmission Unit)
MTU란 네트워크 인터페이스가 한 번에 전송할 수 있는 최대 패킷 크기를 의미한다. 이더넷(Ethernet)의 표준 MTU는 일반적으로 1,500바이트이다.
단편화 (Fragmentation)
전송하려는 패킷의 크기가 경로 상에 있는 네트워크 장비(라우터 등)의 MTU보다 클 경우, 패킷을 더 작은 단위로 쪼개는 단편화 과정이 발생한다.
* 과정: 라우터가 패킷을 쪼개어 여러 개의 작은 패킷으로 나누고, 각 패킷의 헤더에 오프셋(Offset) 정보를 기록한다.
* 재조립: 최종 목적지(수신 측)에서 오프셋 정보를 바탕으로 쪼개진 패킷들을 원래의 순서대로 다시 합쳐 원래의 데이터 형태로 복원한다.
* 문제점: 단편화가 빈번하면 CPU 부하가 증가하고, 단 하나의 조각만 손실되어도 전체 패킷을 재전송해야 하므로 성능이 저하된다.
참고: IPv6에서는 네트워크 중간 라우터가 단편화를 수행하지 않으며, 송신 호스트가 미리 경로 MTU를 확인하여 전송하는 방식(PMTUD, Path MTU Discovery)을 사용한다.
7. 패킷 관련 주요 이슈 및 제어
네트워크 환경에 따라 패킷 전송 중 다음과 같은 문제가 발생할 수 있다.
- 패킷 손실 (Packet Loss): 네트워크 혼잡이나 하드웨어 오류로 패킷이 목적지에 도달하지 못하는 현상이다.
- 지연 (Latency): 패킷이 송신지에서 수신지까지 도달하는 데 걸리는 시간이다.
- 지터 (Jitter): 패킷 간의 도착 시간 간격이 불규칙하게 변하는 현상으로, VoIP나 스트리밍 서비스의 품질을 저하시킨다.
TCP vs UDP 패킷 처리 방식 비교
| 구분 |
TCP (Transmission Control Protocol) |
UDP (User Datagram Protocol) |
| 연결 방식 |
연결 지향형 (3-way Handshake) |
비연결형 (Connectionless) |
| 신뢰성 |
높음 (데이터 전송 보장) |
낮음 (전송 여부 확인 안 함) |
| 전송 순서 |
순서 보장 (Sequence Number 사용) |
순서 보장 없음 |
| 흐름/혼잡 제어 |
수행함 (Window Size, ACK 사용) |
수행하지 않음 |
| 오버헤드 |
큼 (헤더 크기가 큼) |
작음 (헤더 크기가 작음) |
| 주요 용도 |
웹 브라우징(HTTP), 파일 전송(FTP), 이메일 |
실시간 스트리밍, 온라인 게임, VoIP, DNS |
8. 패킷 분석 및 도구
네트워크 장애 진단(Troubleshooting)이나 보안 분석을 위해 실제 흐름을 캡처하여 분석하는 과정이 필요하다.
대표적인 분석 도구
- Wireshark: 가장 널리 쓰이는 오픈 소스 패킷 분석기로, 실시간 캡처 및 상세 프로토콜 분석 기능을 제공한다.
- tcpdump: 커맨드 라인 기반의 패킷 캡처 도구로, 서버 환경에서 가볍게 사용하기 적합하다.
패킷 덤프 예시 (Wireshark/tcpdump 형태)
분석 도구에서 확인되는 패킷의 일반적인 출력 형태는 다음과 같다.
Frame 1: 60 bytes on wire
Ethernet II, Src: 00:11:22:33:44:55, Dst: 66:77:88:99:AA:BB
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 8.8.8.8, Protocol: TCP (6)
Transmission Control Protocol, Src Port: 44332, Dst Port: 80, Seq: 1, Ack: 1, Win: 64240
HTTP/1.1 GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 ...
# 패킷 (Packet)
## 1. 개요
**패킷(Packet)**이란 컴퓨터 네트워크에서 데이터를 전송하기 위해 잘게 나눈 데이터의 기본 단위이다.
네트워크 통신에서 데이터를 하나의 거대한 덩어리로 전송하지 않고 패킷 단위로 쪼개어 전송하는 이유는 다음과 같다.
* **회선 효율성 증대:** 하나의 연결이 회선을 독점하는 것을 방지하여 여러 사용자가 동시에 네트워크 자원을 공유할 수 있다.
* **오류 복구 용이성:** 전송 중 데이터 오류가 발생했을 때, 전체 데이터를 다시 보낼 필요 없이 오류가 발생한 특정 패킷만 재전송하면 되므로 효율적이다.
* **유연한 경로 선택:** 각 패킷은 네트워크 상황에 따라 서로 다른 최적의 경로를 통해 목적지로 이동할 수 있어 트래픽 분산이 가능하다.
## 2. 데이터 단위(PDU)의 일반적인 구조
패킷을 포함한 네트워크 데이터 단위는 전송에 필요한 제어 정보와 실제 데이터가 결합된 형태이며, 일반적으로 헤더, 페이로드, 트레일러의 세 부분으로 구성된다.
| 구성 요소 | 역할 | 포함되는 주요 정보 |
| :--- | :--- | :--- |
| **헤더 (Header)** | 패킷의 제어 정보 및 목적지 안내 | 출발지/목적지 IP 주소, 포트 번호, 패킷 순서 번호(Sequence Number), 프로토콜 버전, TTL(Time to Live) 등 |
| **페이로드 (Payload)** | 실제 전송하고자 하는 데이터 본체 | 텍스트, 이미지 조각, 파일 데이터, 제어 메시지 등 |
| **트레일러 (Trailer)** | 패킷의 끝을 알리고 무결성 검증 | FCS(Frame Check Sequence), CRC(Cyclic Redundancy Check) 등 오류 검출 코드 **(주로 2계층 프레임 단계에서 추가됨)** |
## 3. 패킷 교환 방식 (Packet Switching)
패킷 교환은 데이터를 작은 단위인 패킷으로 나누어 전송하고, 수신 측에서 이를 다시 조립하는 방식이다. 이는 과거 전화망에서 사용하던 회선 교환 방식과 대조된다.
### 회선 교환 vs 패킷 교환 비교
| 구분 | 회선 교환 (Circuit Switching) | 패킷 교환 (Packet Switching) |
| :--- | :--- | :--- |
| **연결 방식** | 전송 전 전용 경로를 미리 설정 (Dedicated Path) | 경로 설정 없이 패킷 단위로 전송 (Connectionless/Virtual Circuit) |
| **자원 점유** | 통신 종료 시까지 회선을 독점적으로 점유 | 여러 사용자가 회선을 공유 (Multiplexing) |
| **효율성** | 데이터 전송이 없어도 회선이 묶여 있어 낭비 발생 | 필요한 때에만 자원을 사용하여 효율적임 |
| **특징** | 지연 시간이 일정함 (실시간 음성 통화에 적합) | 경로에 따라 지연 시간이 가변적임 (데이터 통신에 적합) |
## 4. OSI 7계층 모델과의 관계
패킷은 OSI 7계층(Open Systems Interconnection Reference Model)의 각 계층을 통과하며 서로 다른 이름의 데이터 단위(PDU, Protocol Data Unit)로 불린다.
* **전송 계층 (Transport Layer):** TCP의 경우 **세그먼트(Segment)**, UDP의 경우 **데이터그램(Datagram)** 단위로 나눈다.
* **네트워크 계층 (Network Layer):** 세그먼트/데이터그램에 IP 주소 등의 정보를 추가하여 **패킷(Packet)** 형태로 만든다.
* **데이터 링크 계층 (Data Link Layer):** 패킷에 MAC 주소를 추가하여 **프레임(Frame)** 형태로 캡슐화한다.
* **물리 계층 (Physical Layer):** 최종적으로 프레임을 전기적 신호인 **비트(Bit)** 단위로 변환하여 전송한다.
## 5. 패킷의 전송 과정
데이터는 송신 측에서 계층을 내려가며 포장되고, 수신 측에서 계층을 올라가며 포장을 해제하는 과정을 거친다.
### 캡슐화와 역캡슐화
1. **캡슐화 (Encapsulation):** 상위 계층의 데이터에 하위 계층의 제어 정보(헤더)를 덧붙이는 과정이다. (데이터 $\rightarrow$ 세그먼트 $\rightarrow$ 패킷 $\rightarrow$ 프레임)
2. **역캡슐화 (Decapsulation):** 수신 측에서 하위 계층의 헤더를 확인하고 제거하며 상위 계층으로 데이터를 전달하는 과정이다. (프레임 $\rightarrow$ 패킷 $\rightarrow$ 세그먼트 $\rightarrow$ 데이터)
### 전송 흐름 다이어그램
```mermaid
graph TD
subgraph Sender [송신자: 캡슐화 과정]
A[Data] --> B[Segment + TCP Header]
B --> C[Packet + IP Header]
C --> D[Frame + MAC Header]
end
D --> E((Network/Router))
subgraph Receiver [수신자: 역캡슐화 과정]
E --> F[Frame + MAC Header]
F --> G[Packet + IP Header]
G --> H[Segment + TCP Header]
H --> I[Data]
end
```
## 6. MTU와 단편화 (Fragmentation)
### MTU (Maximum Transmission Unit)
**MTU**란 네트워크 인터페이스가 한 번에 전송할 수 있는 최대 패킷 크기를 의미한다. 이더넷(Ethernet)의 표준 MTU는 일반적으로 1,500바이트이다.
### 단편화 (Fragmentation)
전송하려는 패킷의 크기가 경로 상에 있는 네트워크 장비(라우터 등)의 MTU보다 클 경우, 패킷을 더 작은 단위로 쪼개는 **단편화** 과정이 발생한다.
* **과정:** 라우터가 패킷을 쪼개어 여러 개의 작은 패킷으로 나누고, 각 패킷의 헤더에 오프셋(Offset) 정보를 기록한다.
* **재조립:** 최종 목적지(수신 측)에서 오프셋 정보를 바탕으로 쪼개진 패킷들을 원래의 순서대로 다시 합쳐 원래의 데이터 형태로 복원한다.
* **문제점:** 단편화가 빈번하면 CPU 부하가 증가하고, 단 하나의 조각만 손실되어도 전체 패킷을 재전송해야 하므로 성능이 저하된다.
**참고:** IPv6에서는 네트워크 중간 라우터가 단편화를 수행하지 않으며, 송신 호스트가 미리 경로 MTU를 확인하여 전송하는 방식(PMTUD, Path MTU Discovery)을 사용한다.
## 7. 패킷 관련 주요 이슈 및 제어
네트워크 환경에 따라 패킷 전송 중 다음과 같은 문제가 발생할 수 있다.
* **패킷 손실 (Packet Loss):** 네트워크 혼잡이나 하드웨어 오류로 패킷이 목적지에 도달하지 못하는 현상이다.
* **지연 (Latency):** 패킷이 송신지에서 수신지까지 도달하는 데 걸리는 시간이다.
* **지터 (Jitter):** 패킷 간의 도착 시간 간격이 불규칙하게 변하는 현상으로, VoIP나 스트리밍 서비스의 품질을 저하시킨다.
### TCP vs UDP 패킷 처리 방식 비교
| 구분 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
| :--- | :--- | :--- |
| **연결 방식** | 연결 지향형 (3-way Handshake) | 비연결형 (Connectionless) |
| **신뢰성** | 높음 (데이터 전송 보장) | 낮음 (전송 여부 확인 안 함) |
| **전송 순서** | 순서 보장 (Sequence Number 사용) | 순서 보장 없음 |
| **흐름/혼잡 제어** | 수행함 (Window Size, ACK 사용) | 수행하지 않음 |
| **오버헤드** | 큼 (헤더 크기가 큼) | 작음 (헤더 크기가 작음) |
| **주요 용도** | 웹 브라우징(HTTP), 파일 전송(FTP), 이메일 | 실시간 스트리밍, 온라인 게임, VoIP, DNS |
## 8. 패킷 분석 및 도구
네트워크 장애 진단(Troubleshooting)이나 보안 분석을 위해 실제 흐름을 캡처하여 분석하는 과정이 필요하다.
### 대표적인 분석 도구
* **Wireshark:** 가장 널리 쓰이는 오픈 소스 패킷 분석기로, 실시간 캡처 및 상세 프로토콜 분석 기능을 제공한다.
* **tcpdump:** 커맨드 라인 기반의 패킷 캡처 도구로, 서버 환경에서 가볍게 사용하기 적합하다.
### 패킷 덤프 예시 (Wireshark/tcpdump 형태)
분석 도구에서 확인되는 패킷의 일반적인 출력 형태는 다음과 같다.
```text
Frame 1: 60 bytes on wire
Ethernet II, Src: 00:11:22:33:44:55, Dst: 66:77:88:99:AA:BB
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 8.8.8.8, Protocol: TCP (6)
Transmission Control Protocol, Src Port: 44332, Dst Port: 80, Seq: 1, Ack: 1, Win: 64240
HTTP/1.1 GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 ...
```