Network

encapsulation

jianna6 2013. 12. 21. 00:30

 

 

ethernet


 

u_char ether_dhost[6] 

 destionation의 Mac address (6bytes)

 u_char ether_shost[6]

 source의 Mac address (6bytes)

 u_short ether_type

 패킷 타입 ID(2bytes) Big-endian방식으로 버퍼에 저장됨


/* Ethernet protocol ID's */


#define ETHERTYPE_PUP 0x0200


#define ETHERTYPE_IP 0x0800


/* 헤더 다음에 오는 데이터가 IP주소를 가지고 있다. */


#define ETHERTYPE_ARP 0x0806


/* Address resolution - MAC을 요청 */


#define ETHERTYPE_REVARP 0x8035


/* Reverse ARP - IP를 요청 */

 

 network


 




Field Name

Bit

Describtion

Version

4

IPv4패킷일 경우 4가 들어가고 IPv6일 경우 6이 들어 있다.

IHL

4

Internet Header Length

IP헤더 길이를 나타내는 필드. 20~60byte의 값을 가진다.

ip_hl값이 5라면, 5*4인 20byte를 갖는다.

TOS (or DSCP)

8

Type Of Service (or Differentiated Service CodePoint)

QOS

Total Length

16

Layer 3 Packet Total Length

헤더와 데이터 길이를 포함한 전체 길이를 바이트 단위로 나타낸다

Identification

16

Fragmented Datagram Identification

Identification

IP Flags

3

Fragmentation State Flags

ip_off의 상위 3비트가 Flags 비트이며 3비트 중 제일 처음 오는 비트는 사용되지 않으며 두번째 오는 비트가 1이라면 해당 패킷에 대해서는 단편화할 수 없다는 표시이다.

마지막 비트는 More fragment비트로 이 비트가 1로 설정되었다면 패킷이 단편화 되었는데 아직 끝이 아니라는 의미이다.

Fragments Offset

13

 

TTL

8

Time to live

Protocol

8

IP

Header Checksum

16

오류를 검증할수 있도록 체크섬된 값을 기록한다.

Header를 2Bytes씩으로 나눠 각각의 자리수를 모두 더하여 반전시킨 값이다.

패킷을 받는 목적지 호스트는 체크섬을 확인하여 결과가 다르다면 패킷을 버린다

Source Address

32

Datagram을 송신한 최초출발지의 32Bits의 IP Address

inet_ntoa(ip_src)

Destination Address

32

Datagram을 수신한 최종목적지의 32Bits의 IP Address

inet_ntoa(ip_src)

Option

Variable Length

IP 옵션필드로 각 필드의 기능에서의 부가적인 옵션 수행을 정의한다.

Padding

32bits - Option

IP Header를 32Bits의 배수로 맞추기위해 '0' bit로 패딩을 추가한다.




transport