본문 바로가기
스터디/network

TCP 헤더 (TCP Header)

by 깝태 2011. 1. 27.


출처 - http://no1rogue.blog.me/30095914392

* TCP 헤더 (20 Bytes ~ ) - 4 Level Layer

- 송신처 포트

; 2바이트. 송신(발신)지의 포트(Port) 번호 정보를 가지고 있다. 포트 번호는 요즘 같은 멀티프로세싱 환경에서 해당 패킷이 어떤 어플리케이션(프로그램)에서 사용하는지 구분하기 위해 사용된다. 대표적인 예로 익스플로러와 같은 웹 브라우저는 주로 80번(HTTP)를 사용한다.

=> Well-Known Port 번호

- 수신처 포트
; 2바이트. 수신(목적)지의 포트 번호 정보를 가지고 있다. 

- 일련 번호(Sequence Number) - 송신 데이터의 일련 번호
; 4바이트. 해당 패킷의 맨 앞 위치의 데이터가 송신 데이터의 몇 번째 바이트에 해당하는지 송신측에서 수신측에 전달하기 위한 번호 데이터. 답으로 아래의 ACK 번호를 수신 측에서 송신측에 전송해주면 송신측의 데이터가  제대로 전달되었는지 확인하는 용도로 쓰인다. 

- 인지 번호 (ACK<아크>, Acknowledgement Number) - 수신 데이터의 일련 번호
; 4바이트. 데이터가 몇 바이트까지 수신측에 도착했는지 수신측에서 송신측에 전달하기 위한 번호 데이터. 이 번호로 송신측의 데이터가 수신측 제대로 전달되었는지 확인하여 송신측에서 재전송 여부를 판별하게 된다. 

- 데이터 오프셋
; 4비트. 데이터 부분이 어디서부터 시작하는지 나타내는 데이터. 데이터의 시작이 헤더의 끝도 되므로 헤더의 길이로 해석해도 된다. 4바이트 단위이므로 이 값에 4를 곱해야된다. 보통 5(0101)값을 가진다.

- 예약(Reserved)
; 6비트. 아직은 사용하지 않는다.

- 컨트롤 비트 <플래그>

+ URG

 > 긴급 포인터 필드의 유효 여부

+ ACK

 > 수신 데이터의 일련 번호 필드의 유효 여부. 보통 데이터가 수신측에 제대로 전달되었음을 의미.

+ PSH

 > Flush 동작에 의해 송신된 데이터임을 나타낸다.

+ RST

 > 접속을 강제로 종료하고 이상 종료시 사용된다.

+ SYN

 > 송신측과 수신측에서 일련 번호를 서로 확인할 때 사용. 이 것으로 접속 동작을 나타냄.

+ FIN

 > 연결 끊기를 나타낸다.

- 윈도우
; 2바이트. 수신측에서 송신측에 윈도우 사이즈<수신 확인을 기다리지 않고 묶어서 송신할 수 있는 데이터양>을 통지하기 위해 사용한다. 

- 체크섬
; 2바이트. (TCP헤더와 데이터의) 오류 유무를 검사하기 위한 것.