TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]

Slides:



Advertisements
Similar presentations
TCP/IP 통신망 특론 3장 인터넷프로토콜( IP ).
Advertisements

Mobile IPv 여지민 송구득 박근홍 (수)
Understanding of Socket and File I/O
제 13 장 인터넷 그룹 관리 프로토콜.
컴퓨터 네트워크 Chapter 5-2 컴퓨터 네트워크.
Next Generation: IPv6 and ICMPv6
IPv 노경태 한종우 김지원 장종곤.
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
13장 소켓.
Chapter 06. UDP 서버/클라이언트.
IPsec 석진선.
TCP/IP Socket Cover Slide 조태문.
TCP/IP 소켓 프로그래밍 - C 버전 중에서
IP addressing - 2 진수 (10진수) | (2진수)
IPv6 도입과 동향.
20 장 네트워크층 프로토콜 : ARP, IPv4, ICMP, IPv6, ICMPv6
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
TCP/IP Socket Cover Slide 조태문.
Network 네트워크 이론 및 실습 TCP / IP 4장.
10. About TCP / IP SPARCS 08 우성필.
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
호스트이름과 네트워크이름 찾기 (Hostname and Network Name Lookups)
Chapter 11. Raw 소켓.
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
(Next Generation Internet Protocol)
10장 메모리 관리.
Network Socket Programming
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
IPSec (Internet Protocol Security protocol)
Socket Address Structure and Byte Ordering Functions
Access Control Lists Access Control List
Socket Address Structure and Byte Ordering Functions
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Internet Address Conversion Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
School of Electronics and Information. Kyung Hee University.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
소켓의 옵션 School of Electronics and Information. Kyung Hee University.
IP(Internet Protocol)
9장 데이터링크층 소개 (Introduction To Data-Link Layer)
IPv 이 동 주 HONGIK UNIVERSITY.
Ipv6 네트워크 프로토콜.
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
Internet Address Conversion Functions
School of Electronics and Information. Kyung Hee University.
네트워크 프로그래밍의 이해 School of Electronics and Information.
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
Chapter 16 Socket Interface.
Department of Computer Engineering
Department of Computer Engineering
8 네트워크 계층 프로토콜 학습 목표 IPv6의 필요성과 헤더 구조를 이해한다. 이동 IP 프로토콜의 터널링 원리를 이해한다.
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.
제 11장 User Datagram Protocol(UDP)
Chapter 17 BOOTP and DHCP.
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
IPv 이 동 주.
Presentation transcript:

TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험] 이 직 수 네트워크 실험실

목차 IPv6 등장 배경 IPv6란 IPv6의 헤더 구조 IPv6를 위해 추가된 구조체 IPv6를 위해 추가된 함수

IPv6 등장 배경 현재 사용되고 있는 IPv4는 IP 어드레스 32bit로 표현

IPv6란 IPv6 IPv4 차세대 IP 모델 어드레스가 128bit로 표현되는 막대한 수의 호스트를 지원 예 : 2001:0230:abcd:ffff:0000:0000:ffff:1111 차세대 인터넷은 모든 전자 제품이 네트워크에 통합되는 방향이므로 현재보다 엄청난 IP 어드레스를 요구하는데 이를 해결하기 위해 등장

IPv6란 IPv6 특징 128bit 주소 체계로 무한대의 IP 개수 지원 다른 대역폭에서도 전송되는 패킷을 특수 처리 가능 실시간 multimedia 지원 보안 기능 추가 Ipsec을 프로토콜에 포함 IPv4와 호환 문제로 점진적으로 적용시키고 있음

IPv6의 헤더 구조 IPv6 헤더

IPv6의 헤더 구조 IPv6 헤더 구조체 Struct ip6_hdr{ union { u_int32_t ip6_unl_flow; // 4 bits version // 8 bits traffic class // 20 bits flow-ID u_int16_t ip6_un1_plen; // payload length u_int8_t ip6_un1_nxt; // netx header u_int8_t ip6_un1_hlim; // hop limit } ip6_unl; u_int8_t ip6_un2_vfc; // 4 bits version // top 4 bits traffic class } ip6_ctlun; struct in6_addr ip6_src; // source address struct in6_addr ip6_dst; // destination address };

IPv6의 헤더 구조 Version : 버전을 나타냄(값 6) 4bit Traffic Class : IPv4의 서비스 형태(TOS)를 나타냄 8bit Flow Label : 품질제어 20bit 사용시 – Flow Label을 난수로 결정하고 RSVP(ReSerVation Protocol) 등의 흐름을 설정하는 프로토콜을 이용하여 경로상의 라우터에 품질 제어에 관한 설정을 함 미사용시 – all zero Payload Length: IP 데이터그램의 헤더를 뺀 데이터부 길이 IPv4의 프로토콜 필드에 해당

IPv6의 헤더 구조 Hop Limit : 통과할 수 있는 라우터의 수 제한 IPv4의 TTL과 같은 의미 Source IP 주소 : 발신자 128 bit 주소 Destination IP 주소 : 수신자 128 bit 주소

IPv6를 위해 추가된 구조체 Sockaddr_in6 IP주소와 포트번호를 저장하기 위해 sockaddr_in6구조체 정의 Struct sockaddr_in6{ u_int8_t sin6_len; // length of this struct u_int8_t sin6_family; // AF_INET6 u_int16_t sin6_port; // transport layer port u_int32_t sin6_flowinfo; // IP6 flow information struct in6_addr sin6_addr; // IP6 address u_int32_t sin6_scope_id; // interface scope id };

IPv6 를 위해 추가된 구조체 In6_addr 구조체 : IPv6의 주소 정의 Addrinfo 구조체 : list 구조로 설계 Struct in6_addr{ u_int8_t s6_addr[16]; }; Struct addrinfo{ int ai_flags; // ai_passive, ai_canonname, ai_numerichost int ai_family; // AF_xxx int ai_socktype // sock_xxx int ai_protocol; // 0 or IPPROTO size_t ai_addrlen; // length of ai_addr char ai_canonname; // canonical name for nodename struct sockaddr *ai_addr; // binary address struct addrinfo *ai_next; // next structure in linked list };

IPv6 를 위해 추가된 구조체 ai_flag : 세 개의 비트 설정 ai_family : 어드레스 패밀리 AI_PASSIVE – 임의의 어드레스를 이용할때(ipv4 INADDR_ANY) AI_CANONNAME – 최초의 list 구조에 정식 명칭을 저장할 때 AI_NUMERICHOST – DNS 검색(X), IP 주소(O) 검색 DNS 검색 시간 줄이고자 할 때 ai_family : 어드레스 패밀리 IPv4를 나타내는 AF_INET IPv6를 나타내는 AF_INET6 ai_socktype : 소켓의 타입 SOCK_STREAM : stream 형 소켓 SOCK_DGRAM : datagram 형 소켓 SOCK_RAW : raw IP 형

IPv6 를 위해 추가된 구조체 ai_protocol : 트랜스포트 프로토콜을 나타냄 TCP – IPPROTO_TCP 저장 UDP – IPPROTO_UDP 저장 미사용시 – 0값 저장 ai_addr : ai_addr 길이를 나타냄 ai_canonname : 별명을 나타냄 ai_next : list 다음의 어드레스를 나타냄 List가 끝날 경우 NULL이 저장

IPv6를 위해 추가된 함수 Inet_pton, inet_ntop inet_pton : 문자열 IP 주소를 2진수 IP 주소로 변환 inet_pton : 2진수 IP 주소를 문자열 IP 주소로 변환 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> Const char *inet_ntop (int af, const void *src, char *dst, size_t size); Int inet_pton(int af, const char *src, void *dst);

IPv6를 사용한 실험 프로그램 개요 클라이언트 : tcpv6c, 서버 : tcpv6s

IPv6를 사용한 실험 프로그램 사용 방법(서버) 서버 실행 => tcpv6s는 IPv6와 IPv4 양쪽 모두의 TCP 커넥션을 받아들임 포트 번호 : 서버가 연결을 받아들이는 포트 번호 지정 Default : 5320 ./tcpv6s [포트 번호]

IPv6를 사용한 실험 프로그램 사용 방법(클라이언트) 서버의 IP 어드레스 => IPv4 주소, IPv6 주소, 도메인명 모두 가능 포트 번호 : 서버측에 열려있는 포트번호 Default : 5320 ./tcpv6c 서버의 IP 어드레스 [포트 번호]

IPv6를 사용한 실험 프로그램 사용 방법(클라이언트) 서버는 IPv6 주소 방식이 아니므로 위 예제와 같이 접근이 불가 ./tcpv6c fe80::250:4ff:fe22:8727% 10

IPv6를 사용한 실험 프로그램 실행 예(서버) ./tcpv6s

IPv6를 사용한 실험 프로그램 실행 예(클라이언트) ./tcpv6c 203.247.39.59

IPv6를 사용한 실험 프로그램 사용 방법(서버 접속후) 다음의 명령어를 입력할 수 있음 Help : 사용할 수 있는 명령어의 표시 Show route : 서버의 라우팅 테이블의 표시 Show nic : 서버의 NIC 정보의 표시 Show arp : 서버의 ARP 테이블의 표시 Show tcp : 서버의 TCP 연결 정보 표시 Quit : 클라이언트 프로그램 종료

IPv6를 사용한 실험 프로그램 실행 예(클라이언트 실행 후) Help 명령어 리스트를 출력

IPv6를 사용한 실험 프로그램 (클라이언트 실행 후) 실행 예 Show route 서버 라우팅 테이블을 출력

IPv6를 사용한 실험 프로그램 (클라이언트 실행 후) 실행 예 Show arp 서버의 arp 테이블 출력

IPv6를 사용한 실험 프로그램 (클라이언트 실행 후) 실행 예 Show nic 서버의 nic 정보 출력

IPv6를 사용한 실험 프로그램 (클라이언트 실행 후) 실행 예 quit 서버 접속 종료

IPv6를 사용한 실험 프로그램 서버측 화면(클라이언트 접속)

IPv6를 사용한 실험 프로그램 tcpv6s 와 tcps 차이점 어드레스 패밀리가 AF_INET6임 sockaddr_in 구조체에서 sockaddr_in6 구조체로 in_addr 구조체에서 in6_addr 구조체로 구조체의 변경에 따라 구조체의 멤버명 변경

IPv6 실험을 위한 리눅스 환경 설정 커널 설정 에러 컴파일까지 완료하고 명령어 ./tcpv6s 실행시 에러발생 해결 : IPv6 모듈을 실행(modprobe 실행)

IPv6 실험을 위한 리눅스 환경 설정 ./sbin/modprobe 리눅스와 커널 버전에 따라 위치 다양

IPv6 실험을 위한 리눅스 환경 설정 IPv6 참고 자료 커널관련 자료 URL http://blog.naver.com/minzkn.do?Redirect=Log&logNo=60012995540 커널관련 자료 URL http://www.joinc.co.kr/modules/moniwiki/wiki.php/kernel_module_programing

Q & A