본문 바로가기
CS

패킷 구조

by 몰라몰라개복치 2020. 2. 17.

1. 패킷이란?

 

패키지(package)와 덩어리를 뜻하는 버킷(bucket)의 합성어로 통신망을 통해 전송하기 쉽도록 자른 데이터의 전송 단위, 즉 한 번에 전송하는 정보의 단위를 뜻한다. 

 

2. 패킷 구조

패킷 구조 

 

 

>Ethernet Header

Ethernet frame 구조

 

preamble : 패킷의 동기화 등을 위해 각 프레임의 헤더 맨 앞에 붙이는 영역, 즉 패킷의 시작을 알려주는 패킷

da : destination address, 목적지의 MAC 주소

sa : source address, 송신지의 MAC 주소 

type : data에들어있는 type, 상위 계층 프로토콜 종류를 표시 0x600 이상이면 Type(DIX 2.0), 0x600 이하이면 Length(802.3)으로 해석. type의 종류에 따라서 데이터를 몇 비트씩 잘라서 해석할지 결정

-Type: 많은 타임을 가지고 있으며 대표적인 Type은 IP(Internet Protocol)

-Length: 길이 (3~1500byte)를 나타냄

data: 46~1500 byte의 상위 프로토콜 데이터 패킷(ip, tcp or udp, 실제 전송될 데이터) 즉 상위에 있는 레이어에 대한 프로토콜의 정보가 들어 있다.

fcs : 프레임에 있는 에러를 검출하기 위해서 사용 이떄 CRC를 사용

*순환중복검사(CRC): 에러검출 방법 중의 하나로 송신 측에서 데이터로부터 다항식에 의해 추출된 결과를 여분의 오류검사필드(FCS)에 덧붙여 보내면, 수신 측에서는 동일한 방법으로 추출한 결과와의 일치성으로 오류검사를 하는 기술

 

 

 

>IP Header

ip header 구조

 

Version(4 bits):IP 버전을 표시(ex IPv4 or IPv6)
HL(Header Length): IP 패킷에서 헤더가 차지하는 길이
  -IP패킷은 "헤더+데이터+옵션"으고 구성되므로 헤더의 길이를 알면 데이터의 시작점을 할 수 있다.
TOS(Type Of Service): 서피브 타입 및 수준을 표시함(패킷이 얼마나 빨리 처리/전달 되어야 하는가에 대한 정보)
  111 : 네트워크용 컨트롤용
  110 : 인터네트워크 컨트롤용
  101 : CRITIC/ECP
  100 : 플래쉬 오버라이드용
  011 : 플래쉬 용
  010 : 즉시 처리용
  001 : 우선 처리용
  000 : 일반 처리용
Total Length(16bit): 패킷의 전체 길이를 표시
Identification(16bit): 하나의 패킷이 여러 조각으로 분할되었을 경우 각 조각을 구분하기 위하여 부여하는 정보
Flags(3 bits): 패킷 분할에 관한 컨트롤 정보
  -Bit 0 : 항성 0으로 예약되어 있음
  -Bit 1 : (DF) 0 = 분할가능, 1 = 분할불가
  -Bit 2 : (MF) 0 = 마지막 조각, 1 = 이후 조각 더 있음
Fragment Offset(13 bits): 이 조각(Fragment)이 어느 데이터그램(IP패킷)에 소속되는지 표시
TTL(Time to Live) (8 bits): 이 패킷이 인터넷에서 사용될 수 있는 시간을 표시 
  일반적으로 라우터를 하나 거칠 때마다 1씩 줄어들어 0 이 되면 폐기함
Protocol(8 bits): 상위 계층의 프로토콜을 표시 (ex: tcp/udp 등)
Header Checksum(32 bits): 해더 부분에 대하여 에러 발생시 에러 정정을 위한 체크
Source Address(32 bits): 출발시 IP 주소
Destination Address(32 bits): 목적지 IP 주소
Option(27 bits) : 선택사양, 보안단계, 소스경로, Route recode, timestamp 등

 

 

>TCP Header

TCP PACKET 구조

 

Source port(16 bits) : 상위 Application에 따른 값이 결정되며 송신지 포트 번호를 나타냄
Destination port(16 bits) : 수신지 포트 번호를 나타냄
Sequence Number(23 bits)  : 패킷의 송신 Data의 일변번호를 나타냄
Acknowlegement number(32 bits) : 수신 Data의 일련 번호를 나타냄(수신될 다음번 바이트의 예상 일련번호)
Data offset(4 bits): 패킷내의 데이터 오프셋
-Reserved(6 bits)
-Control(6 bits) : TCP의 연결 및 종료를 제어합니다.
 : URG(긴급 포인터)
   ACK(승인)
   PSH(푸쉬기능)
   RST(접속의 리셋)
   SYN(동기화 일련번호)
   FIN(송신자로부터 더이상의 데이터 없음) 등
Window(16 bits) : 메시지 전송시 흐름제어 합니다.
Checksum(16 bits) : 에러 check를 합니다. TCP 메시지 검사 및 목적지에 제대로 도작했는지 확인합니다.
Urgent Position(16 bits) : TCP 긴급 포인터
Options(24 bits) : TCP 옵션들
 : SEG_SEQ : 패킷의 일련번호
   SEG_ACK : 패킷의 확인번호
   SEG_FLAG : 제어비트
Data

'CS' 카테고리의 다른 글

IAT,EAT 로딩 과정 문서화  (0) 2020.11.02
네트워크 보안 2주차  (0) 2020.09.19
네트워크 보안 1주차  (0) 2020.09.14
DDos 공격 대응 가이드 pdf (http 위주)  (0) 2020.02.24
wireshark를 이용한 패킷 분석  (0) 2020.02.17