6일차에서 IP 헤더를 분석할 때 id 필드와 flag & fragment offset 필드에 대해 알아보지 않았다.
# ifconfig 를 해보면 MTU : 1500 을 확인 할 수 있다.
MTU 란?
컴퓨터 네트워킹에서, 레이어의 커뮤니케이션 프로토콜의 최대 전송 단위(maximum transmission unit, MTU)란 해당 레이어가 전송할 수 있는 최대 프로토콜 데이터 단위의 크기(바이트)이다.
즉 , MTU : 1500 은 최대 보낼수 있는 데이터의 크기가 1500byte라는 뜻이다.
그럼 2000byte 크기의 데이터는 어떻게 보낼까?
Fragment
IP 헤더의 id 와 flag & flagment offset 을 이용하여 두개의 패킷으로 나누어서 보내는 것
1. Identification(2byte)
- 나누어져 보내진 패킷을 식별하기 위한 필드
2. flag & fragment offset(2byte)
- 앞에 3비트만 flag 나머지 13비트는 fragment offset이 사용
1). flag(3bit)
- 001 MF( More fragment ) : 뒤에 분할된 데이터가 있다는 뜻
- 010 DF( dont flagment ) : 데이터를 분할하면 안된다라는 뜻
2). fragment offset(13bit)
- 잘리기전에 존재했던 위치 ex) 2000byte의 데이터를 1500과 500으로 나눈다.
1500바이트짜리 정보는 flag001 offset 0
500바이트짜리 정보는 flag000 offset 1500
실습
1). IP 클래스를 만든다.
2). ip 8.8.8.8로 크기 2000byte의 핑을 보낸다.
3). 패킷을 분석한다.
총 2개의 패킷으로 나누어 보내어진것을 확인할 수 있다.
첫번째 패킷의 크기는 1500byte( IP헤더(20) + 데이터(1480) )
id는 50220
flag는 001(MF) 로 뒤에 분할된 패킷이 있다는 의미
두번째 패킷의 크기는 548byte( IP헤더(20) + ICMP헤더(8) + 데이터(520) )
id도 50220 둘이 같은 패킷이라는 뜻
flag는 000 뒤에 더이상 분할된 패킷이 없다는 것이다.
fragment offset은 1480으로 분할된 전 패킷의 마지막 위치이다.
'Hacking > Network' 카테고리의 다른 글
[15일차] ICMP 패킷 만들어서 핑 보내기 (0) | 2017.10.13 |
---|---|
[14일차] IP 헤더 체크섬 계산법과 ICMP 헤더 (0) | 2017.10.13 |
[12일차] ARP 스니핑 (0) | 2017.10.10 |
[11일차] ARP 요청하기 (0) | 2017.09.28 |
[10일차] ARP 헤더 클래스 만들기 (0) | 2017.09.25 |
WRITTEN BY