32
HANNAM Univ. HANNAM Univ. HANNAM Univ. HANNAM Univ. TCP/IP Network Experimental TCP/IP Network Experimental Programming [IPv6 Programming [IPv6 에 에에 에에 에에 에 에에 에에 에에 ] ] 에 에 에 에 에 에 에에에에 에에에 에에에에 에에에

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

  • Upload
    zahi

  • View
    77

  • Download
    0

Embed Size (px)

DESCRIPTION

TCP/IP Network Experimental Programming [IPv6 에 의한 통신 실험 ]. 이 직 수 네트워크 실험실. 목차. IPv6 등장 배경 IPv6 란 IPv6 의 헤더 구조 IPv6 를 위해 추가된 구조체 IPv6 를 위해 추가된 함수 IPv6 를 사용한 실험 프로그램 IPv6 실험을 위한 리눅스 환경 설정. IPv6 등장 배경. 현재 사용되고 있는 IPv4 는 IP 어드레스 32bit 로 표현 32 비트로 현재 요구되는 IP 어드레스 수를 충족하기에 역부족 - PowerPoint PPT Presentation

Citation preview

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

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

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

험험 ]]

이 직 수이 직 수네트워크 실험실네트워크 실험실

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

2

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

목차목차 IPv6 등장 배경 IPv6 란 IPv6 의 헤더 구조 IPv6 를 위해 추가된 구조체 IPv6 를 위해 추가된 함수 IPv6 를 사용한 실험 프로그램 IPv6 실험을 위한 리눅스 환경 설정

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

3

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 등장 배경등장 배경현재 사용되고 있는 IPv4 는

■ IP 어드레스 32bit 로 표현

■ 32 비트로 현재 요구되는 IP 어드레스 수를 충족하기에 역부족

■ 유비쿼터스 등 첨단 기술에 적용하는데 기존의 IPv4 는 무리가 있음

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

4

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 란란 IPv6

■ IPv4 차세대 IP 모델

■ 어드레스가 128bit 로 표현되는 막대한 수의 호스트를 지원▶ IPv4 : 2 의 32 제곱 (43 억 ) 개 IP 주소▶ IPv6 : 2 의 128 제곱 (43 억 ×43 억 ×43 억 ×43 억 ) 개 IP 주소

16bit 단위로 16 진수로 표현 예 : 2001:0230:abcd:ffff:0000:0000:ffff:1111

■ 차세대 인터넷은 모든 전자 제품이 네트워크에 통합되는 방향이므로 현재보다 엄청난 IP 어드레스를 요구하는데 이를 해결하기 위해 등장

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

5

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 란란 IPv6 특징

■ 128bit 주소 체계로 무한대의 IP 개수 지원

■ 다른 대역폭에서도 전송되는 패킷을 특수 처리 가능▶ 실시간 multimedia 지원

■ 보안 기능 추가▶ Ipsec 을 프로토콜에 포함

■ IPv4 와 호환 문제로 점진적으로 적용시키고 있음

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

6

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 의 헤더 구조의 헤더 구조 IPv6 헤더

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

7

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 의 헤더 구조의 헤더 구조 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 lengthu_int8_t ip6_un1_nxt; // netx headeru_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 addressstruct in6_addr ip6_dst; // destination address

};

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

8

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 의 헤더 구조의 헤더 구조■ Version : 버전을 나타냄 ( 값 6) 4bit

■ Traffic Class : IPv4 의 서비스 형태 (TOS) 를 나타냄 8bit

■ Flow Label : 품질제어 20bit▶ 사용시 – Flow Label 을 난수로 결정하고 RSVP(ReSerVation

Protocol) 등의 흐름을 설정하는 프로토콜을 이용하여

경로상의 라우터에 품질 제어에 관한 설정을 함

▶ 미사용시 – all zero

■ Payload Length: IP 데이터그램의 헤더를 뺀 데이터부 길이▶ IPv4 의 프로토콜 필드에 해당

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

9

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 의 헤더 구조의 헤더 구조■ Hop Limit : 통과할 수 있는 라우터의 수 제한

▶ IPv4 의 TTL 과 같은 의미

■ Source IP 주소 : 발신자 128 bit 주소

■ Destination IP 주소 : 수신자 128 bit 주소

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

10

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 위해 추가된 구조체를 위해 추가된 구조체Sockaddr_in6

■ IP 주소와 포트번호를 저장하기 위해 sockaddr_in6 구조체 정의

Struct sockaddr_in6{u_int8_t sin6_len; // length of this structu_int8_t sin6_family; // AF_INET6u_int16_t sin6_port; // transport layer portu_int32_t sin6_flowinfo; // IP6 flow informationstruct in6_addr sin6_addr; // IP6 addressu_int32_t sin6_scope_id; // interface scope id

};

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

11

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 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_numerichostint ai_family; // AF_xxxint ai_socktype // sock_xxxint ai_protocol; // 0 or IPPROTOsize_t ai_addrlen; // length of ai_addrchar ai_canonname; // canonical name for nodenamestruct sockaddr *ai_addr; // binary addressstruct addrinfo *ai_next; // next structure in linked list

};

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

12

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 를 위해 추가된 구조체를 위해 추가된 구조체■ ai_flag : 세 개의 비트 설정

▶ 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 형

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

13

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 를 위해 추가된 구조체를 위해 추가된 구조체■ ai_protocol : 트랜스포트 프로토콜을 나타냄

▶ TCP – IPPROTO_TCP 저장▶ UDP – IPPROTO_UDP 저장▶ 미사용시 – 0 값 저장

■ ai_addr : ai_addr 길이를 나타냄

■ ai_canonname : 별명을 나타냄

■ ai_next : list 다음의 어드레스를 나타냄▶ List 가 끝날 경우 NULL 이 저장

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

14

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 위해 추가된 함수를 위해 추가된 함수 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);

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

15

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 개요

■ 클라이언트 : tcpv6c, 서버 : tcpv6s

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

16

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 사용 방법 ( 서버 )

■ 서버 실행=> tcpv6s 는 IPv6 와 IPv4 양쪽 모두의 TCP 커넥션을 받아들임

▶ 포트 번호 : 서버가 연결을 받아들이는 포트 번호 지정 Default : 5320

./tcpv6s [ 포트 번호 ]

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

17

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램사용 방법 ( 클라이언트 )

■ 서버의 IP 어드레스=> IPv4 주소 , IPv6 주소 , 도메인명 모두 가능

■ 포트 번호 : 서버측에 열려있는 포트번호▶ Default : 5320

./tcpv6c 서버의 IP 어드레스 [ 포트 번호 ]

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

18

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 사용 방법 ( 클라이언트 )

■ 서버는 IPv6 주소 방식이 아니므로 위 예제와 같이 접근이 불가

■ 서버에 접근하기 위해 IPv4 로 접근

./tcpv6c fe80::250:4ff:fe22:8727% 10

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

19

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 실행 예 ( 서버 )

■ ./tcpv6s

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

20

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 실행 예 ( 클라이언트 )

■ ./tcpv6c 203.247.39.59

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

21

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램사용 방법 ( 서버 접속후 )

■ 다음의 명령어를 입력할 수 있음

■ Help : 사용할 수 있는 명령어의 표시■ Show route : 서버의 라우팅 테이블의 표시■ Show nic : 서버의 NIC 정보의 표시■ Show arp : 서버의 ARP 테이블의 표시■ Show tcp : 서버의 TCP 연결 정보 표시■ Quit : 클라이언트 프로그램 종료

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

22

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 실행 예 ( 클라이언트 실행 후 )

■ Help▶ 명령어 리스트를 출력

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

23

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 ( 클라이언트 실행 후 ) 실행 예

■ Show route▶ 서버 라우팅 테이블을 출력

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

24

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 ( 클라이언트 실행 후 ) 실행 예

■ Show arp▶ 서버의 arp 테이블 출력

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

25

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 ( 클라이언트 실행 후 ) 실행 예

■ Show nic▶ 서버의 nic 정보 출력

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

26

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 ( 클라이언트 실행 후 ) 실행 예

■ quit▶ 서버 접속 종료

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

27

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

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

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

28

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6IPv6 를 사용한 실험 프로그램를 사용한 실험 프로그램 tcpv6s 와 tcps 차이점

■ 어드레스 패밀리가 AF_INET6 임

■ sockaddr_in 구조체에서 sockaddr_in6 구조체로

■ in_addr 구조체에서 in6_addr 구조체로

■ 구조체의 변경에 따라 구조체의 멤버명 변경

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

29

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 실험을 위한 리눅스 환경 설정실험을 위한 리눅스 환경 설정 커널 설정 에러

■ 컴파일까지 완료하고 명령어 ./tcpv6s 실행시 에러발생

■ 원인 : IPv6 모듈이 올라가지 않은 현상■ 해결 : IPv6 모듈을 실행 (modprobe 실행 )

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

30

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 실험을 위한 리눅스 환경 설정실험을 위한 리눅스 환경 설정 ./sbin/modprobe

■ 리눅스와 커널 버전에 따라 위치 다양

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

31

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

IPv6 IPv6 실험을 위한 리눅스 환경 설정실험을 위한 리눅스 환경 설정 IPv6 참고 자료

■ http://blog.naver.com/minzkn.do?Redirect=Log&logNo=60012995540

커널관련 자료 URL■ http://www.joinc.co.kr/modules/moniwiki/wiki.php/kernel_modu

le_programing

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

32

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.HANNAM HANNAM Univ.Univ.

TCP/IP Network Experimental ProgrammingTCP/IP Network Experimental Programming

Q & AQ & A