e_yejun
Jun_ : Pwn
e_yejun
전체 방문자
오늘
어제
  • 분류 전체보기 (240)
    • Profile (1)
    • Pwnable (54)
    • Reversing (14)
    • Network (7)
    • Forensic (10)
    • Embedded (4)
    • Android (2)
    • Web (18)
    • 알고리즘 (42)
    • 프로그래밍 (24)
    • 프로젝트 (6)
    • 1-day (7)
    • CTF (15)
    • 기타 (33)
    • 일기장 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • x64
  • dvwa
  • rev-basic
  • BOF
  • how2heap
  • Heap
  • dreamhack.io
  • 1-day
  • X86
  • wargame

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e_yejun

Jun_ : Pwn

Network

[Network] TCP Header 구조

2021. 7. 7. 20:47

TCP(Transmission Control Protocol)란?

 - 서버와 클라이언트간에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다.

 - 데이터를 여러 개의 패킷으로 나누고 도착지에서는 패킷을 재조립한다.

 - 패킷의 분실이나 중복, 순서가 바뀌는 문제를 해결해주기 때문에 신뢰성 있다.

 

 

 

TCP 헤더 구조

Source Port - 2byte

 - 송신지 포트번호

 

Destination Port - 2byte

 - 수신지 포트번호

 

Sequence Number - 4byte

 - TCP 세그먼트 안에 데이터의 송신 바이트 흐름의 위치를 가리킨다.

 - 세그먼트는 서로 다른 경로를 거치면서 순서가 뒤 바뀔 수가 있다. 이를 수신 측에서 재조립하기 위해 사용되는 번호이다.

 

Acknowledgment Number - 4byte

 - 수신자 입장에서 송신자로부터 앞으로 받아야 할 다음 데이터의 Sequence Number이다.

 - 다음 byte 번호이므로 송신자에게 받은 마지막 수신 성공 순서번호의 +1이 값이다.

 

Offset - 4bit

 - TCP 헤더의 길이를 32bit 단위로 표시한다. (최소 크기 : 5워드(20byte) / 최대 크기 : 15워드(60byte))

 

Reserved - 4bit

 - 예약 필드이며, 0으로 채워진다.

 

TCP Flags - 1byte

 - 세그먼트의 용도와 내용을 결정하기 위해서 6개의 flag bit를 사용한다.

   1) URG(Urgent) : 긴급 데이터일 경우 1로 설정하고, 순서에 상관없이 먼저 송신된다.

   2) ACK(Acknowledgement) : Acknowledgment Number 필드의 값이 유효함을 나타낸다. 최초의 SYN 패킷 이후에 전송되는 모든 패킷은 이 플래그가 설정되어 있어야 한다.

   3) PSH(Push) : 버퍼링된 데이터를 가능한 빨리 상위 계층으로 전달한다. (버퍼가 차는 것을 기다리지 않음.)

   4) RST(Reset) : 초기화 비트, 연결확립된 회선에 강제로 리셋을 요청한다.

   5) SYN(Synchronize) : 동기화 비트, 양쪽이 보낸 최초에 세그먼트에만 이 Flag가 설정된다.

   6) FIN(Finish) : 더이상 송신할 데이터가 없음을 의미하며, 연결을 끊을 때 설정된다.

 

Window - 2byte

 - 흐름제어를 위해 사용하며, 기본 단위는 바이트이다.

 - 해당 세그먼트의 송신 측이 수신하고자 하는 수신 윈도의 크기를 나타낸다.

 

Checksum - 2byte

 - 헤더 및 데이터의 에러를 확인하기 위해 사용된다.

 

Urgent Pointer - 2byte

 - TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 번호이다.

 - 해당 세그먼트의 일련번호에 urgent point 값을 더해 긴급 데이터의 끝을 알 수 있다.

 

TCP Options

 - 최대 40바이트까지 옵션 데이터를 포함할 수 있으며, 길이는 가변적이다.

 

 

 

TCP 헤더 C언어 구조체 구현

 

 

 

    'Network' 카테고리의 다른 글
    • [Network] ICMP Header 구조
    • [Network] UDP Header 구조
    • [Network] IP Header 구조
    • [Network] Ethernet II 프레임 구조
    e_yejun
    e_yejun
    정리노트 •_•

    티스토리툴바