반응형
반응형
🌏 TCP/IP 헤더와 패킷
TCP/IP 네트워크를 이해하기 위해서는 패킷(packet) 이라는 단위와, 이를 구성하는 헤더(header) 구조를 먼저 살펴봐야 네트워크에서 실제 데이터가 어떻게 나누어지고 전송되는지를 알 수 있습니다.
✅ 패킷(Packet)
네트워크에서 전송되는 데이터의 최소 단위
단순히 데이터(payload)만 존재하지 않고, 그 앞에는 다양한 제어 정보를 담은 헤더(header) 가 붙습니다.
[ 링크 계층 헤더 | 네트워크 계층 헤더 | 전송 계층 헤더 | 데이터(payload) ]
- Payload (데이터)
- 우리가 실제로 보내려는 내용물
- 예시
- HTTP라면
GET /index.html HTTP/1.1같은 요청 메시지 - 이메일이라면
Subject: Hello같은 본문 - 파일 전송이라면 파일 조각 데이터
- HTTP라면
- Header (메타데이터)
- 데이터가 잘 전달되도록 붙여진 주소 + 제어 정보
- 누가 보냈는지, 어디로 가는지, 어떤 방식으로 전송하는지, 오류가 있는지 등을 담음
- TCP/IP 계층별 메타데이터
- 링크 계층 헤더: 출발지/목적지
MAC 주소 - IP 헤더: 출발지/목적지
IP 주소, TTL, 프로토콜 번호 - TCP 헤더: 출발지/목적지
포트 번호, 시퀀스 번호, ACK, 플래그(SYN, ACK 등) - UDP 헤더: 출발지/목적지
포트 번호, 길이, 체크섬
- 링크 계층 헤더: 출발지/목적지
즉, 데이터를 전송할 때 캡슐화(encapsulation) 과정이 발생하여, 상위 계층의 데이터가 하위 계층의 헤더와 합쳐져 내려가는 구조입니다.
✅ TCP/IP 계층과 헤더 구조
TCP/IP는 4계층 모델로 흔히 구분합니다. 각 계층에서 붙는 헤더를 정리하면 다음과 같습니다.
- 링크 계층 (Ethernet, Wi-Fi 등)
- 헤더:
MAC 주소(출발지/목적지), 타입, CRC 등 - 예시: Ethernet 프레임 헤더 (14바이트)
- 헤더:
- 네트워크 계층 (IP)
- 대표 프로토콜: IPv4, IPv6
- 헤더: 출발지/목적지
IP 주소, TTL, 프로토콜 번호, 헤더 체크섬 등 - IPv4 기본 헤더 크기: 20바이트 (옵션 포함 시 최대 60바이트)
- IPv6 기본 헤더 크기: 40바이트 (확장 헤더 구조 존재)
- 전송 계층 (TCP/UDP)
- TCP 헤더 (20~60바이트) ⇒ 더 많은 정보
- 출발지/목적지
포트 - 시퀀스 번호(Sequence Number)
- 확인 응답 번호(Acknowledgment Number)
- 플래그 (SYN, ACK, FIN 등)
- 윈도우 크기(Window Size)
- 체크섬(Checksum)
- 옵션 (MSS, 윈도우 스케일 등)
- 출발지/목적지
- UDP 헤더 (
8바이트고정)- 출발지/목적지
포트 - 길이 (Length)
- 체크섬 (Checksum)
- 출발지/목적지
- TCP 헤더 (20~60바이트) ⇒ 더 많은 정보
- 응용 계층 (HTTP, DNS, SMTP 등)
- 헤더: 프로토콜별 정의
- 예:
HTTP 헤더에는 Host, User-Agent, Content-Type, Cookie 등이 포함
✅ IPv4 패킷 구조 예시
예를 들어, 웹 브라우저에서 http://example.com에 접속할 때 패킷은 다음과 같은 구조를 가집니다.
- Ethernet 헤더: 목적지/출발지 MAC 주소
- IPv4 헤더: 목적지 IP = 93.184.216.34, 출발지 IP = 내 PC의 IP
- TCP 헤더: 목적지 포트 = 80, 출발지 포트 = 임의 포트(에페메럴 포트)
- HTTP 요청 데이터:
GET / HTTP/1.1
✅ TCP 헤더 필드 상세
TCP는 연결 지향적이며 신뢰성을 보장합니다. 따라서 헤더에 다양한 제어 정보가 포함됩니다.
| 필드 | 설명 |
|---|---|
| Source Port | 출발지 포트 번호 |
| Destination Port | 목적지 포트 번호 |
| Sequence Number | 송신 바이트 스트림에서의 순서 |
| Acknowledgment Number | 수신 확인 번호 (ACK) |
| Data Offset | 헤더 길이 |
| Flags | SYN, ACK, FIN, RST, PSH, URG 등 제어 비트 |
| Window Size | 수신 버퍼 크기 (흐름 제어) |
| Checksum | 오류 검출 |
| Urgent Pointer | 긴급 데이터 표시 |
| Options | MSS, 윈도우 스케일, 타임스탬프 등 |
0 4 8 16 24 32
+------+-------+---------------+---------------------------+
| Source Port | Destination Port |
+---------------------------------------------------------+
| Sequence Number |
+---------------------------------------------------------+
| Acknowledgment Number |
+--------+------+--------+-------------------+------------+
| DataOff| Res. | Flags | Window Size |
+--------+------+--------+--------------------------------+
| Checksum | Urgent Pointer |
+---------------------------------------------------------+
| Options (if any) |
+---------------------------------------------------------+
✅ UDP 헤더 구조
UDP는 단순하고 가벼운 프로토콜입니다. 헤더는 단 8바이트로 구성됩니다.
0 8 16 24 32
+------+-------+------+------+
| Source Port | Destination Port |
+--------------+-----------------+
| Length | Checksum |
+--------------+-----------------+
| Data (Payload) |
+--------------------------------

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'컴퓨터과학 > 네트워크' 카테고리의 다른 글
| [네트워크] 패킷이 이동하는 과정, 포장부터 개봉까지: 브라우저에 깃짱코딩.com을 입력하면 무슨 일이 일어나나요? (0) | 2025.09.13 |
|---|---|
| [네트워크] CORS & SOP: Preflight (OPTIONS) 요청은 매번 보내나요? (0) | 2025.09.12 |
| [네트워크] 웹 보안 공격들(XSS, CSRF, SQLi, DDos 등등): 공격 방법과 방어 전략 (0) | 2025.09.12 |
| [네트워크] 인증을 구현하는 방법들: 클라이언트는 쿠키 이외에 인증 정보를 어디에 저장할 수 있을까? (0) | 2025.09.11 |
| [네트워크] HTTP Header: Virtual Hosting, 컨텐츠 협상, Accept의 우선순위, Authorization, Cache-Control (0) | 2025.09.10 |