보안세상

TCP 헤더 구조 본문

내 생각

TCP 헤더 구조

똔민 2015. 6. 27. 22:21
반응형
TCP 통신을 이해하기 위해서는 TCP 헤더에 무슨 내용이 들어 있는지 이해해야 함. TCP는 통신에 앞서 연결 설정을 하거나 승인 및 흐름 제어를 하기 위해 TCP 헤더 구조는 UDP 패킷의 구조와 비교하면 매우 복잡하게 되어 있음. 일반적으로 TCP 헤더는 20바이트의 크기임.
( 1 ) TCP 헤더 구조
0 15 16 31
소스 포트 번호
(16 비트)
목적지 포트 번호
(16 비트)
시퀀스 번호
(32 비트)
승인 번호
(32 비트)
헤더 길이
(4 비트)
예약
(6 비트)
코드 비트
(각 1 비트)
윈도우
(16 비트)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
체크섬
(16 비트)
긴급 포인터
(16 비트)
(옵션)


데이터


← - 32 비트 - →

비트 오프셋

0 - 3

4 - 9

10

11

12

13

14

15

16 - 31

0

원본 포트

대상 포트

32

시퀀스 번호

64

승인 번호

96

헤더 길이

예약

URG

ACK

PSH

RST

SYN

FIN

윈도우 크기

128

체크섬

긴급 포인터

160

(옵션)

데이터

( 2 ) TCP 헤더 구조


필드 설명
소스 포트 번호
(16 비트)
원본 응용 프로그램을 식별하는 번호임.
TCP는 UDP의 경우와 달리 소스 포트 번호를 0으로 할 수 없음.
1 ~ 65535까지 유효함.
목적지 포트 번호
(16 비트)
대상 응용 프로그램을 식별하는 번호임.
1 ~ 65535까지 유효함.
※ 0은 예약
시퀀스 번호
(32 비트)
보내는 데이터에 순서를 붙이기를 위한 번호임.
보낼 데이터 1 바이트마다 시퀀스 번호를 1 씩 증가함.
2 32 을 넘으면 똑같은 번호를 반복함.
승인 번호
(32 비트)
받은 데이터에 대해 어디까지 받을 수 있었는지 바이트 위치를 나타내는 필드임.
수신 완료 데이터 위치의 순서 번호 +1을 반환함.
ACK 플래그가 ON 인 경우에만 ACK 번호 필드를 사용함.
헤더 길이
(4 비트)

TCP 데이터가 시작되는 위치를 나타내는 필드임.

TCP 헤더의 바로 뒤에 데이터 부분이 따르기 위하여, TCP 헤더의 크기라고 생각해도 됨.

URG
(1 비트)
URG ... urgent : 긴급
긴급 데이터가 들어있는 것을 나타내는 플래그임.
기본값은 0,1에 ON 됨.
거의 사용되지 않음.
ACK
(1 비트)
ACK * * * acknowledge
유효한 ACK 번호가 TCP 헤더에있는 것을 나타내는 플래그임.
TCP 3-Way Handshake 시 최초를 제외한 다른 모든 TCP 패킷은 ACK 플래그가 ON 으로 되어 있음.
PSH
(1 비트)
PSH * * * push
받은 데이터를 즉시 응용 프로그램에 전달할 것을 요구하는 플래그임.
버퍼링을 사용하면 응답성에 손상 가능성이 있으므로, Telnet에서는이 플래그를 ON 으로 하고 있음.
RST
(1 비트)
RST ... reset
TCP 연결을 중단, 거부하고 싶은 경우에 설정되는 플래그임.
RST 플래그를 ON 으로 한 TCP 패킷을 전송함으로써, 현재의 TCP 접속을 강제 종료할 수 있음.
SYN
(1 비트)

SYN ... synchronize
TCP 3-Way Handshake 시 오픈 처리를 시작하는 쌍방의 각 SYN 플래그가 ON 으로하여 ACK 번호를 동기화함.

이상 패킷에 설정되지 않음.

FIN
(1 비트)
FIN ... finish
TCP 연결을 종료하기 위해 설정되는 플래그임.
양쪽에서 FIN이 전송되면 TCP 연결이 종료됨.
윈도우
(16 비트)
수신 창 크기를 상대에게 전달하기 위하여 사용되는 필드임.
단위는 바이트로, 최대 65535 바이트됨.
0은 데이터를받을 수 없다는 것을 나타냄.
체크섬
(16 비트)
TCP 패킷의 무결성을 검사하기 위한 데이터가 들어가는 필드임.
긴급 포인터
(16 비트)
URG 플래그가 1 인 경우에만 적용함.
긴급 데이터의 위치를​​ 나타냄.
옵션 TCP 연결 특성을 설정하는 데 사용되는 가변 길이 필드임.
MSS 교환 등에 이용됨.
32 비트의 배수가 되도록 필요한 끝에 패딩(0) 매장됨.
데이터 TCP의 데이터 부분임.
TCP 연결 시간이 초과하여 절단되지 않도록 데이터를 포함하지 않는 TCP 헤더에만 패킷을 보낼 수 있음.




발췌 사이트 : http://zwish.tistory.com/1421
저작권 문제가 있을 시 바로 삭제하겠습니다.


반응형
Comments