로그인 회원가입 고객센터
레포트자기소개서방송통신서식공모전취업정보
campusplus
세일즈코너배너
자료등록배너

데이터 통신 - Packet Sniffer의 구현


카테고리 : 레포트 > 공학,기술계열
파일이름 :데이터 통신 - Packet Snif.hwp
문서분량 : 7 page 등록인 : leewk2547
문서뷰어 : 한글뷰어프로그램 등록/수정일 : 12.05.17 / 12.05.17
구매평가 : 다운로드수 : 0
판매가격 : 1,500

미리보기

같은분야 연관자료
[데이터통신] 데이터통신의 정의와 필요성, 전송신호 및 전송매체... 3 pages 1600
[경제경영] 무선데이터 통신 / / 무선데이터 통신 / 현재의 산업 사회 ..... 13 pages 1000
데이터 통신 ... 15 pages 1900
데이터 통신... 40 pages 3500
[정보, 데이터통신] 광케이블의 대한 모든 것... 13 pages 2000
보고서설명
이 프로그램은 로소켓을 이용한 스니퍼 프로그램 이다. 로소켓의 “네트워크 계층으로 전송되는 모든 패킷을 볼 수 있는” 특성을 이용해 TCP 프로토콜의 패킷을 읽은 프로그램이다. 아래 소스에는 TCP 패킷만 읽는 것이므로 IP 헤더와 TCP 헤더만을 출력 했지만, ICMP, IGMP, UDP 패킷 등등도 출력할 수 있다. 또한 packet.h 의 헤더파일을 고침으로써 IP Header와 TCP header의 기본 값들을 바꿀 수 있다. 예를 들면 IP header의 version이나 헤더길이 등을 사용자가 임의대로 바꿀 수 있다.
본문일부/목차
while(1) {
ret = recvfrom(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&from, &len);
//buffer 에 패킷을 받음
printf("resive data = %d\n", ret);
//받은 패킷 크기 출력!
if (ip->protocol != PROTO_TCP)
continue;//받은 프로토콜이 TCP이 아닌경우 경우 출력안하고 다시 읽음
//즉 TCP패킷이 아니면 다음 패킷 받기
//받은 패킷의 ip헤더의 정보들을 출력
printf("================ IP header ===============\n");
src.s_addr = ip->src_ip;//발신지 ip의 주소를 src.s_addr에 입력
//(src는 발신지의 주소 구조체)
dst.s_addr = ip->dst_ip;//수신지의 ip 주소를 dst.s_addr에 입력
//(dst는 수신지의 주소 구조체)
printf("Src ip = %s\n", inet_ntoa(src));
//inet_ntoa()함수를 통해 구조체의 src를 문자열로 변환
printf("Dst ip = %s\n", inet_ntoa(dst));
//inet_ntoa()함수를 통해 구조체의 dst를 문자열로 변환
printf("Total length = %d\n", ntohs(ip->length));//총 길이출력
printf("Identification = %d\n", ntohs(ip->id));//ip의 id 출력
printf("TTL = %d", ip->ttl);//time to live 출력
printf("Checksum = 0x%X\n", ntohs(ip->checksum));//체크썸 출력


printf("=============== TCP header ==============\n");
tcp = (struct tcp_header_t *)(buffer + (4 * ip->hlen));
//TCP 헤더의 시작 위치를 구하기 ip 헤더의 뒤에 따라 나오므로.. 4를 곱하는 이유는 ip의 head length의 단위가 워드, 즉 4바이트 이기 때문에.
printf("Src port = %d\n", ntohs(tcp->src_port));//소스 port 출력
printf("Dst port = %d\n", ntohs(tcp->dst_port));//도착지 port 출력
printf("Sequence number = 0x%X\n", ntohl(tcp->seqnum));//순서 번호 출력(원본데이터가 큰 경우 이 데이터를 여러개의 세그먼트로 나누기 때문
printf("Acknowledgment number = 0x%X\n", ntohl(tcp->acknum));
//확인 응답 번호를 보냄(수신지에서 제대로 왔다고 발신지에게 알려주는 기능)
printf("Checksum = 0x%X\n", ntohs(tcp->checksum));
//체크섬 출력
연관검색어
데이터 통신

구매평가

구매평가 기록이 없습니다
보상규정 및 환불정책
· 해피레포트는 다운로드 받은 파일에 문제가 있을 경우(손상된 파일/설명과 다른자료/중복자료 등) 1주일이내 환불요청 시
환불(재충전) 해드립니다.  (단, 단순 변심 및 실수로 인한 환불은 되지 않습니다.)
· 파일이 열리지 않거나 브라우저 오류로 인해 다운이 되지 않으면 고객센터로 문의바랍니다.
· 다운로드 받은 파일은 참고자료로 이용하셔야 하며,자료의 활용에 대한 모든 책임은 다운로드 받은 회원님에게 있습니다.

저작권안내

보고서 내용중의 의견 및 입장은 당사와 무관하며, 그 내용의 진위여부도 당사는 보증하지 않습니다.
보고서의 저작권 및 모든 법적 책임은 등록인에게 있으며, 무단전재 및 재배포를 금합니다.
저작권 문제 발생시 원저작권자의 입장에서 해결해드리고 있습니다. 저작권침해신고 바로가기

 

ϰڷٷΰ thinkuniv ķ۽÷