[통신]

[네트워크] Packet의 구조

Neo Park 2012. 8. 22. 11:36

 

패킷 구조는 아래 그림과 같다


Ethernet frame 구조

- Preamble : 패킷(프레임) 동기등을 위해 각 프레임의 헤더 맨 앞에 붙이는 영역

 

- SFD(Start of frame delimiter)
  : 프레임의 시작부근에서 프리엠블 바로 뒤에 붙어지는 10101011로 구성된 1byte 짜리 비트열이다.
    SFD비트열 부근부터 바이트 단위로 구성되어 있다는 사실을 알리는 프레임 동기용 비트열

 

- Destination address : 목적지 MAC 주소

 

- Source address : 송신지 MAC 주소

 

- Type : 상위 계층 프로토콜 종류를 표시 0x600 이상이면 Type(DIX 2.0), 0x600이하이면 Length(802.3)로 해석된다.
 . Type :  많은 타임을 가지고 있으며 대표적인 Type은 IP(Internet Protocol)을 들 수 있다.
 . Length : 길이(3~1500 byte)를 나타낸다.

 

- DATA : 상위 프로토콜 데이터 패킷( IP, TCP or UDP, 실제 전송될 데이터 )

 

- FCS( Frame Check Sequence ) : 프레임에 문제가 있는지 판별에 사용, CRC를 사용한다.
 . 순환중복검사(CRC :Cyclic Redundancy Check)는 에러검출 방법중의 하나로 송신측에서 데이타로 부터 다항식에 의해 추출된 결과를 여분의 오류검사필드(FCS:Frame Check Sequence)에 덧붙여 보내면, 수신측에서는 동일한 방법으로 추출한 결과와의 일치성으로 오류검사를 하는 기술이다.

IP Packet 구조
-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 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 : 제어비트

 

-Padding(8 bits)

 

'[통신]' 카테고리의 다른 글

UART에서 Overrun Error 란?  (0) 2012.09.05
MUX(multiplexer) 다중화 장치란?  (0) 2012.09.03
UART bit stream 구조  (0) 2012.08.14
7:1 LVDS Interface Requirement  (0) 2012.08.10
Interfacing Between LVPECL, VML, CML, and LVDS Levels  (0) 2012.08.09