TCP(Transmission Control Protocol) 헤더는 전송 계층에서 사용되는 중요한 정보들이 포함되어 있으며, 이 정보를 기반으로 안정적이고 신뢰성 있는 데이터 전송을 가능하게 합니다. TCP 헤더는 20바이트(최소)에서 60바이트(최대)까지의 크기를 가지며, 다음과 같은 주요 필드들로 구성됩니다:
1. 출발지 포트 번호(Source Port) (16비트)
- 데이터를 전송하는 출발지 장치의 포트를 나타냅니다. 클라이언트나 서버가 특정 애플리케이션으로부터 데이터를 받을 때 이 포트 번호를 사용합니다.
2. 목적지 포트 번호(Destination Port) (16비트)
- 데이터를 받을 장치의 포트 번호를 나타냅니다. 수신자가 어떤 애플리케이션으로 데이터를 보내야 할지를 결정합니다.
3. 순서 번호(Sequence Number) (32비트)
- TCP 연결을 통해 전송되는 데이터의 첫 번째 바이트의 순서 번호를 나타냅니다. 송신 측에서 데이터를 여러 패킷으로 나누어 보낼 때, 수신 측은 이 번호를 통해 데이터의 올바른 순서를 맞출 수 있습니다.
4. 확인 응답 번호(Acknowledgment Number) (32비트)
- 수신자가 받은 마지막 바이트의 다음 바이트 순서를 나타냅니다. 즉, 송신 측은 이 번호를 보고 수신 측이 어느 부분까지 데이터를 받았는지 확인할 수 있습니다.
5. 데이터 오프셋(Data Offset) (4비트)
- TCP 헤더의 크기를 나타내며, 실제 데이터가 시작되는 위치를 정의합니다. 이는 TCP 헤더의 길이를 32비트 워드 단위로 계산합니다.
6. 예약(Reserved) (3비트)
- 현재 사용되지 않으며, 향후 사용을 위해 예약된 필드입니다.
7. 플래그(Flags, Control Bits) (9비트)
TCP 연결의 상태를 제어하는 여러 플래그로 구성되어 있습니다.
- URG: 긴급 데이터를 나타냅니다.
- ACK: 확인 응답 필드가 유효함을 나타냅니다.
- PSH: 데이터를 즉시 전송해야 함을 의미합니다.
- RST: 연결을 재설정할 때 사용됩니다.
- SYN: 새로운 연결을 설정할 때 사용됩니다.
- FIN: 연결을 종료할 때 사용됩니다.
8. 윈도우 크기(Window Size) (16비트)
- 수신 측에서 한 번에 받을 수 있는 데이터의 최대 크기를 나타냅니다. 송신 측은 이 정보를 통해 수신 측이 처리할 수 있는 데이터 양을 조정합니다.
9. 체크섬(Checksum) (16비트)
- 전송된 데이터에 오류가 없는지 확인하는 데 사용되는 필드입니다. 송신 측에서 계산한 값과 수신 측에서 계산한 값이 일치해야 정상적인 데이터 전송이 이루어졌음을 확인할 수 있습니다.
10. 긴급 포인터(Urgent Pointer) (16비트)
- 긴급 데이터가 있는 경우 이 필드는 긴급 데이터의 위치를 나타냅니다. URG 플래그와 함께 사용됩니다.
11. 옵션 및 패딩(Options and Padding)
- TCP 헤더의 크기를 가변적으로 할 수 있는 필드입니다. 여러 가지 선택적인 정보를 포함할 수 있으며, 헤더의 크기가 32비트 단위로 맞춰지지 않을 경우 패딩을 추가하여 맞춥니다.
1. 출발지 포트
2. 목적지 포트
3. 순서 번호
4. 확인 응답 번호
5. 데이터 오프셋
6. 예약
7. 플래그
8. 윈도우 크기
9. 체크섬
10. 긴급 포인터
11. 옵션 및 패딩
'네트워크 기초 이론' 카테고리의 다른 글
[네트워크] 트래픽 inbound / outbound 인바운드, 아웃바운드 (0) | 2025.01.02 |
---|---|
[네트워크] TCP 와 UDP 차이점 (0) | 2024.09.19 |
[DoS] Slow HTTP 공격 (0) | 2024.09.12 |
[네트워크] OSI 7계층 - 기본 (2) | 2024.09.08 |
[네트워크] UDP vs TCP 차이점 (4) | 2024.09.05 |