TCP 패킷

youngkyu MIn·2024년 1월 11일

TCP

TCP (Transmission Control Protocol)는 인터넷상에서 데이터를 주고받는 데 사용되는 핵심 프로토콜 중 하나이다. TCP 패킷은 데이터 전송을 위한 정보를 담고 있으며, 네트워크를 통해 데이터를 안정적이고 신뢰할 수 있게 전송하는 데 중요한 역할을 한다.

구조

TCP 패킷은 크게 헤더(header)와 데이터(payload) 부분으로 나누어져 있다.

TCP 헤더

1 소스 포트(Source Port)와 대상 포트(Destination Port) (각각 16비트):

  • 소스 포트: 데이터를 보내는 장치의 포트 번호.
  • 대상 포트: 데이터를 받는 장치의 포트 번호.

2 순서 번호(Sequence Number) (32비트):

  • 데이터 스트림 내의 특정 위치를 식별하는 데 사용되며, 데이터의 순서를 보장한다.

3 확인 응답 번호(Acknowledgment Number) (32비트):

  • 받은 데이터를 확인하고 다음 순서의 데이터를 요청하는 데 사용된다.

4 데이터 오프셋(Data Offset) 또는 헤더 길이 (4비트):

  • 헤더의 길이를 나타내며, 데이터 시작 지점을 알려준다.

5 예약 필드(Reserved) (6비트):

  • 현재 사용되지 않고 미래의 사용을 위해 예약되어 있다.

6 플래그(Flags) (6비트):

  • 여러 제어 플래그들을 포함한다. 주요 플래그들은 URG(긴급), ACK(확인 응답), PSH(푸시), RST(재설정), SYN(동기화), FIN(종료)이다.

7 윈도우 크기(Window Size) (16비트):

  • 수신 버퍼의 크기를 조절하고, 흐름 제어를 관리하는 데 사용된다.

8 체크섬(Checksum) (16비트):

  • 오류 검출을 위해 사용되며, 패킷의 무결성을 확인한다.

9 긴급 포인터(Urgent Pointer) (16비트):

  • URG 플래그가 설정된 경우, 이 필드는 긴급 데이터의 끝을 가리킨다.

10 옵션(Options) (가변 길이):

  • 필요에 따라 다양한 추가 기능을 제공한다. 모든 옵션은 32비트 단위로 맞춰진다.

11 패딩(Padding):

  • 헤더 길이를 32비트 단위로 맞추기 위해 사용된다.

데이터

데이터(Payload):

  • 실제로 전송되는 애플리케이션 데이터이다. 이 부분의 크기는 네트워크와 시스템의 제한에 따라 다를 수 있다.

예시

예를 들어, 웹 브라우저가 웹 서버에 HTTP 요청을 보내는 경우를 가정해보자.

TCP 패킷 예시

1 소스 포트: 12345 (임의의 고유 포트 번호)
2 대상 포트: 80 (HTTP 서비스를 위한 표준 포트)
3 순서 번호: 예를 들어 100 (이전 패킷의 순서 번호에 이어짐)
4 확인 응답 번호: 75 (서버로부터 받은 마지막 패킷의 순서 번호)
5 데이터 오프셋: 5 (헤더가 20바이트라는 것을 의미)
6 예약 필드: 0 (사용되지 않음)
7 플래그: SYN, ACK (연결 설정 및 데이터 수신 확인)
8 윈도우 크기: 65535 (수신 가능한 최대 데이터 크기)
9 체크섬: 0x1A2B (데이터 무결성 검사를 위한 값)
10 긴급 포인터: 0 (긴급 데이터 없음)
11 옵션: 없음 (옵션이 필요 없는 경우)
12 패딩: 없음 (옵션이 없기 때문에 필요 없음)

데이터 부분

데이터: "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"

  • 이 부분은 실제 HTTP 요청의 내용
profile
한 줄 소개

0개의 댓글