[공학기술]pathMTU를 찾는 프로그램 구현
- 최초 등록일
- 2007.06.24
- 최종 저작일
- 2005.09
- 11페이지/ 압축파일
- 가격 1,000원
소개글
pathMTU를 찾는 프로그램을 구현한 코드와 레포트입니다.
C++로 작성된 Network_findPathMTU.cpp 파일과
한글로 작성된 Network1.hwp 파일로 구성되어있습니다.
목차
1. 프로그램 개요
- 프로그램 실행 화면
2. 기본 설명
① Traceroute의 구현
② MTU 찾기
3. 소스 코드
본문내용
① Traceroute의 구현
목적지까지 패킷을 보내게 되면 각 네트워크를 지나가면서 router를 꼭 지나쳐 가게 되는데, 각 네트워크를 한번 지나가게 되는 것을 HOP이라고 한다. IP header중 TTL을 설정함으로써 해당 패킷이 네트워크를 지나갈 수 있는 HOP수를 제한할 수 있는데, Traceroute는 이 아이디어로 구현 가능하다.
// traceroute기능을 추가하기 위해 TTL을 settting한다. 초기값은 1이다.
int hc =1;
bread = setsockopt(sockRaw, IPPROTO_IP, IP_TTL, (char *)&hc, sizeof(hc));
초기 설정은 TTL = 1이며, 처음 이 패킷을 받은 router는 TTL을 보고 시간초과라고 판단하고, 발신지에 Time Exceeded Error를 표현하는 ICMP 패킷을 보내게 되는데, 이것을 받고 경로에 있는 router의 주소를 알 수 있다. 패킷을 받고 주소를 확인하면, TTL을 1만큼 증가시켜 다음 경로의 주소를 찾고, 위의 과정을 목적지에 도달할 때 까지 반복한다.
② MTU 찾기
목적지까지 MTU를 찾기 위해 보낼 수 있는 최대 크기의 패킷을 만들고, MTU가 작을 경우 분할하지 못하도록 Don`t Fragment bit를 설정해서 보낸다. 이 패킷은 목적지까지 가다가 1500보다 작은 경우 ICMP 메세지를 전송지로 보내면서 다음 hop까지의 MTU를 같이 보내게 되는데, 프로그램은 DF Error 메시지(icmp_type=3, icmp_code=4)를 분석해서 전송된 MTU크기만큼의 패킷을 생성하고 다시 보내게 된다. 이런 방식을 되풀이하여 목적지까지의 MTU를 찾아가는데, 목적지에 도착했을때 보낸 메시지의 크기가 이 때의 pathMTU가 된다.
참고 자료
없음
압축파일 내 파일목록
Network1.hwp
Network_findPathMTU.cpp