패킷 구조는 아래 그림과 같다
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 |