본문 바로가기
네트워크

[네트워크] TCP Header 구조

by 느링 2018. 1. 5.

TCP는 전송계층의 대표적인 연결지향 프로토콜입니다. 대부분의 파일 전송 프로토콜은 데이터가 오류 없이 제대로 전송되었는지 확인하기 위해 TCP를 사용합니다.

 

최소 20바이트 ~ 최대 60바이트

 

1) 출발지 포트 (2byte)

2) 도착지 포트 (2byte)

 

3) Sequence Number (4byte) ★

사용자를 식별하는 세션 번호입니다.

tcp 세그먼트를 식별하며, 여기서 세그먼트는 tcp를 이용하여 전송되는 데이터 단위를 말합니다. 수신 측에서 이 번호를 이용하여 패킷을 재 조립하며 번호는 각 패킷에 포함된 데이터의 byte 수 만큼 플러스해서 계속 변합니다.

 

4) Acknowledge Number (4byte) ★

상대방으로부터 수신한 데이터의 바로 다음에 수신할 데이터 순서 번호를 나타냅니다.

Sequence Number의 확인 응답으로서 데이터 전송자에게 패킷을 잘 받았으니 그 다음 패킷을 송신하라는 의미로 사용됩니다. 상대방이 다음에 전송할 패킷의 Sequence Number이기도 합니다.

 

5) Header length (1byte)

tcp헤더의 길이 값을 정의합니다. 일반적으로 tcp헤더의 길이는 20byte이며, tcp헤더 길이를 확장할 경우 4byte씩 증가합니다.

 

※ Reserved - 미래를 위해 예약된 필드로 항상 0으로 설정됩니다.

 

6) Flag (1byte)

- FIN (종료) - tcp 연결을 종료하려는 표시

- SYN (동기화) - 통시 시작 시 연결을 요청하고 ISN을 교환

- RST (리셋) - 송신자가 유효하지 않은 연결을 시도할 때 거부하는데 이용되고 또한 통신의 연결 및 종료를 정상적으로 할 수 없을 때 사용

- PSH (push 강제전송) - 일반적으로 모든 데이터를 전송하고 마지막에 보내는 신호로 수신측은 데이터를 즉시 전송하라는 의미

- ACK (확인) - SYN에 대한 확인의 의미

- URG ( 긴급, 거의안씀) - 긴급 포인터 필드가 유효함을 표시

 

7) Window size (2byte)

 

8) checksum (2byte)

데이터가 전송 중에 손실되지 않고 원본과 동일한지 검사합니다.

 

9) dummy (2byte)