SlideShare une entreprise Scribd logo
1  sur  63
IPv6 이론과 소켓 프로그래밍 마이에트 엔터테인먼트 건즈팀 서버 프로그래머 최흥배 MS Visual C++ MVP Twitter : @jacking75
목차 IPv6 이론 정리 IPv6 소켓 프로그래밍
IPv6 이론 정리
IPv6 이란? ,[object Object]
현재 사용하고 있는 것은 IPv4 이다.
이미 많은 통신 관련 제품들은 IPv6 지원을 하고 있음.
일본의 경우는 일반 유저를 대상으로 IPv6 서비스(유료)를 제공하고 있음.,[object Object]
왜 IPv6을 사용해야 하나? ,[object Object],[object Object],[object Object]
성능- IPv6의 헤더 크기는 40byte로 IPv4의 두 배의 크기지만 단순해져서 처리가 빨라짐
IP 주소 자동 설정. DHCP 불필요
프로토콜 차원에서 QoS지원,[object Object]
IPv6을 사용하기 위해 필요한 것 ,[object Object],[object Object]
IPv6을 사용하기 위해 필요한 것 ,[object Object],출처 : http://www.dbguide.net/knowledge.db?cmd=view&boardUid=126274&boardConfigUid=19&boardStep=0
Dual Stack이란? ,[object Object],[object Object]
출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6은 이미 사용 중 ,[object Object]
1998년 10월에는 6REN(IPv6 Research and Education Networks Initiative) 발족.
미군(美軍)에서는 GIG(Global Information Grid)라고 하는 세계 규모의 정보 통신망을 구축 운용하고 있는데 2003년 6월에 IPv6으로 이행을 발표. 2008년에는 전면적으로 IPv6 베이스로 이행.
2003년 이후 미군이 조달하는 네트워크 기기는 모두 IPv6 대응이 필수이다.
일본의 경우 이미 일반 유저들을 대상으로 IPv6 서비스를 제공하고 있음.,[object Object]
IPv4의 주소는 10진수로 0~255 사이의 숫자를 사용IPv6의 주소는 16진수를 사용하고 블록 수는 8개. 블록 구분은 ‘:’ 사용fe80:1234:5678:9abc:def0:1234하나의 블록에서 표현할 수 있는 수의 범위는 0000~ffff,[object Object]
IPv6 주소 단축 표기 법 – 방법 2 - 0 압축. 모두 0으로 되는 블록은 생략한다.- 생략되는 부분에 대해서는 :을 연속으로 붙임 ::- 생략은 하나의 주소에서 한번만 가능 1234:0000:0000:5678:9abc:0000:0000:def0 -> 1234::5678:9abc::def0                                                       -> 1234::5678:9abc:0:0:def0 1234:5678:0000:9abc:def0:1234:5678:9abc 1234:5678::9abc:def0:1234:5678:9abc 1234:0000:0000:0000:5678:9abc:def0:1234 1234::5678:9abc:def0:1234
IPv6 주소 단축 표기 법 – 방법 2 ,[object Object],ff02::2  ff02:0000:0000:0000:0000:0000:0000:0002
출처 : http://blog.daum.net/ipv6/30
LINKLOCAL 주소 ,[object Object]
IPV6에서도 같은 사양으로 지원하고 있다.- fe80::/64 범위를 사용한다.,[object Object]
IPv6의 특별한 주소 ,[object Object]
0:0:0:0:0:0:0:1- 루프백 주소. IPv4의  127.0.0.1에 해당- IPv4에서는 12.0.0.0/8 범위의 주소를 사용할 수 있지만 IPv6에서는 이 주소만 사용할 수 있다- 줄여서 ‘0::1’ 또는 ‘::1’
2001:db8::/32- 문서 작성용 주소 공간
2001: 로 시작하는 것(sTLA주소)- 상용 서비스에 할당되고 있는 주소
2002:: 로 시작하는 것(6to4 주소)- IPv6 over IPv4 터널링의6to4에서 사용하는 주소. 2002: 에 연속해서 32비트 부분에 IPv4 글로벌 주소를 넣는다. IPv6을 지원하지 않는 ISP의 유저 등에 사용된다,[object Object]
ff00::/8 시작하는 주소- 멀티캐스트
fe80::/10- 로컬 유니캐스트(링크)- 단일 링크상에 라우터가 없는 경우에 사용,[object Object]
IPv6/IPv4 클라이언트 -> IPv4만 지원 IPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6/IPv4 클라이언트 -> IPv6만 지원 IPv6 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6/IPv4 클라이언트 -> Dual StackIPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6/IPv4 클라이언트 -> Dual StackIPv6 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6/IPv4 클라이언트 -> Separated StackIPv6-only, IPv4-only 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6/IPv4 클라이언트 -> IPv4만 지원 IPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
IPv6과 IPv4 전환 기술 ,[object Object]
터널링- 양 끝단에 단말이 있고 중간 경로상에 IPv4 망이 있는 경우
변환- IPv6 to IPv4 또는 IPv4 to IPv6으로 패킷을 재조합 하는 방식출처: http://blog.daum.net/ipv6/24
IPv5는 어디에?  ,[object Object]
ST의 IP 패킷의 버전 번호로 ‘5’를 사용하여 IPv5 라고 부르기도 하였다
1990년대 초 ST를 개선하여 ST-II를 개발. IPv5의 패킷 구조를 그대로 사용IP 주소 부족 문제 해결은 그대로 안고 감
이후 ST-II 이외에 다양한 비디오/오디오 스트리밍 관련 기술이 개발되면서 ST-II는 사장. 동시에 IPv5도 사장 됨,[object Object]
MSR은 Windows NT/2000 용으로 1998년에 프로토타입인MSRIPv6 1.0을 개발하여 공개
2001년 10월 Windows XP에 IPv6을 기본으로 탑재. 기본적인 것만 구현
Windows Server 2003에 상용 수준의 IPv6 스택이 탑재
Windows Visata에서 IPv4/IPv6이 통합된 진정한 듀얼스택을 개발하여 탑재. 드디어 IPv6을 완벽하게 구현
IE에서는 버전 4에서 부터 IPv6을 지원했음,[object Object]
2월3일 기자 회견에서의 IPv4 주소 고갈의 의미 ,[object Object]
이 때의 고갈의 의미는 ICANN에서 각 대륙 별 주소 관리 기구에 주소 할당을 다했다는 의미로 지금 IPv4 주소가 더 이상 없다는 뜻이 아니다
ICANN은 대륙 별 주소 관리 기구에 인터넷 주소를 줄 때 큰 하나의 덩어리를 주는데 이 덩어리의 크기는 약 1700만개 정도의 인터넷 주소이다.
2월3일의 고갈은 마지막 남은 덩어리를 하나씩 각 대륙 별 주소 관리 기구에 다 주었다는 뜻이다.
그러나 APNIC의 경우 이번에 받은 덩어리를 약 4~6개월 사이에 다 소진고, 인터넷 인프라가 거의 없는 AfrNIC가 가장 오래 동안 사용할 수 있을 것으로 예측하고 있다.,[object Object]
NAT은 주소 부족 문제를 해결해 주지만 P2P 통신에 문제가 있음
UPnP나 NAT Traversal 등으로 이 문제를 회피하지만 완벽하지 않음
또 관리자 중 NAT을 내부와 외부 네트워크를 분리하는 보안 기술이라는 생각을 가지고 있음
특히 최근의 CGN, LSN 등의 3중 NAT는 어뷰즈로깅, 위치 추적, NAT Traversal 기능도 못 쓰게 만듬
NAT은 웹브라우징 이나 이메일 등의 일반 웹 서비스에는 문제가 없지만 온라인 P2P 게임, 비드오스트리밍, 웹갬, 터널링, VPn, VoIP에서 품질 저하나 서비스가 불가능 하는 경우가 있다
IPv6이 도입되면서 자연스럽게 NAT에서 IPv6으로 전환하는 것이 좋음,[object Object]

Contenu connexe

Tendances

The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...Yasunori Goto
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunheut2008
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]Yurim Jin
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우IMQA
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performancePostgreSQL-Consulting
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) Yuki Uchikoba
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabMichelle Holley
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
BlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InBlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InSage Weil
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Andriy Berestovskyy
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화NAVER D2
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationKentaro Ebisawa
 

Tendances (20)

Dpdk pmd
Dpdk pmdDpdk pmd
Dpdk pmd
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
SRv6 study
SRv6 studySRv6 study
SRv6 study
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル)
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
BlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InBlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year In
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
 

Similaire à Ipv6 소켓프로그래밍

IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍OnGameServer
 
Network virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkNetwork virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkInho Kang
 
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solutionOpenStack Korea Community
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습봉조 김
 
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]지환 김
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) ymtech
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기Jay Park
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남Jae Sang Lee
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control PlaneSeungYong Baek
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823Jongsoo Jeong
 
Solaris11 기초 자료
Solaris11 기초 자료Solaris11 기초 자료
Solaris11 기초 자료Dong-Hwa jung
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316기한 김
 
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지Kyunghee Univ
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)NAIM Networks, Inc.
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1stPark Jonggun
 

Similaire à Ipv6 소켓프로그래밍 (20)

IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍
 
ipv6_study.pdf
ipv6_study.pdfipv6_study.pdf
ipv6_study.pdf
 
Network virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkNetwork virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center Network
 
IPv6 report
IPv6 reportIPv6 report
IPv6 report
 
InfiniFlux IP_Type
InfiniFlux IP_TypeInfiniFlux IP_Type
InfiniFlux IP_Type
 
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution
[OpenStack Days Korea 2016] Innovating OpenStack Network with SDN solution
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습
 
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit)
 
DPDK
DPDKDPDK
DPDK
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
 
Solaris11 기초 자료
Solaris11 기초 자료Solaris11 기초 자료
Solaris11 기초 자료
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
 
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st
 

Plus de Heo Seungwook

리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369Heo Seungwook
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400Heo Seungwook
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324Heo Seungwook
 
리펙토링 8장 p236_p243
리펙토링 8장 p236_p243리펙토링 8장 p236_p243
리펙토링 8장 p236_p243Heo Seungwook
 
해외취업이야기
해외취업이야기해외취업이야기
해외취업이야기Heo Seungwook
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기Heo Seungwook
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축Heo Seungwook
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevHeo Seungwook
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158Heo Seungwook
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디Heo Seungwook
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_patternHeo Seungwook
 
Master slave pattern
Master slave patternMaster slave pattern
Master slave patternHeo Seungwook
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가Heo Seungwook
 

Plus de Heo Seungwook (16)

리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324
 
리펙토링 8장 p236_p243
리펙토링 8장 p236_p243리펙토링 8장 p236_p243
리펙토링 8장 p236_p243
 
해외취업이야기
해외취업이야기해외취업이야기
해외취업이야기
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedev
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_pattern
 
Master slave pattern
Master slave patternMaster slave pattern
Master slave pattern
 
Pac pattern
Pac patternPac pattern
Pac pattern
 
Mvc pattern
Mvc patternMvc pattern
Mvc pattern
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
 

Ipv6 소켓프로그래밍

  • 1. IPv6 이론과 소켓 프로그래밍 마이에트 엔터테인먼트 건즈팀 서버 프로그래머 최흥배 MS Visual C++ MVP Twitter : @jacking75
  • 2. 목차 IPv6 이론 정리 IPv6 소켓 프로그래밍
  • 4.
  • 5. 현재 사용하고 있는 것은 IPv4 이다.
  • 6. 이미 많은 통신 관련 제품들은 IPv6 지원을 하고 있음.
  • 7.
  • 8.
  • 9. 성능- IPv6의 헤더 크기는 40byte로 IPv4의 두 배의 크기지만 단순해져서 처리가 빨라짐
  • 10. IP 주소 자동 설정. DHCP 불필요
  • 11.
  • 12.
  • 13.
  • 14.
  • 16.
  • 17. 1998년 10월에는 6REN(IPv6 Research and Education Networks Initiative) 발족.
  • 18. 미군(美軍)에서는 GIG(Global Information Grid)라고 하는 세계 규모의 정보 통신망을 구축 운용하고 있는데 2003년 6월에 IPv6으로 이행을 발표. 2008년에는 전면적으로 IPv6 베이스로 이행.
  • 19. 2003년 이후 미군이 조달하는 네트워크 기기는 모두 IPv6 대응이 필수이다.
  • 20.
  • 21.
  • 22. IPv6 주소 단축 표기 법 – 방법 2 - 0 압축. 모두 0으로 되는 블록은 생략한다.- 생략되는 부분에 대해서는 :을 연속으로 붙임 ::- 생략은 하나의 주소에서 한번만 가능 1234:0000:0000:5678:9abc:0000:0000:def0 -> 1234::5678:9abc::def0 -> 1234::5678:9abc:0:0:def0 1234:5678:0000:9abc:def0:1234:5678:9abc 1234:5678::9abc:def0:1234:5678:9abc 1234:0000:0000:0000:5678:9abc:def0:1234 1234::5678:9abc:def0:1234
  • 23.
  • 25.
  • 26.
  • 27.
  • 28. 0:0:0:0:0:0:0:1- 루프백 주소. IPv4의 127.0.0.1에 해당- IPv4에서는 12.0.0.0/8 범위의 주소를 사용할 수 있지만 IPv6에서는 이 주소만 사용할 수 있다- 줄여서 ‘0::1’ 또는 ‘::1’
  • 30. 2001: 로 시작하는 것(sTLA주소)- 상용 서비스에 할당되고 있는 주소
  • 31.
  • 33.
  • 34. IPv6/IPv4 클라이언트 -> IPv4만 지원 IPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 35. IPv6/IPv4 클라이언트 -> IPv6만 지원 IPv6 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 36. IPv6/IPv4 클라이언트 -> Dual StackIPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 37. IPv6/IPv4 클라이언트 -> Dual StackIPv6 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 38. IPv6/IPv4 클라이언트 -> Separated StackIPv6-only, IPv4-only 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 39. IPv6/IPv4 클라이언트 -> IPv4만 지원 IPv4 서버 출처: http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf
  • 41.
  • 42. 터널링- 양 끝단에 단말이 있고 중간 경로상에 IPv4 망이 있는 경우
  • 43. 변환- IPv6 to IPv4 또는 IPv4 to IPv6으로 패킷을 재조합 하는 방식출처: http://blog.daum.net/ipv6/24
  • 44.
  • 45. ST의 IP 패킷의 버전 번호로 ‘5’를 사용하여 IPv5 라고 부르기도 하였다
  • 46. 1990년대 초 ST를 개선하여 ST-II를 개발. IPv5의 패킷 구조를 그대로 사용IP 주소 부족 문제 해결은 그대로 안고 감
  • 47.
  • 48. MSR은 Windows NT/2000 용으로 1998년에 프로토타입인MSRIPv6 1.0을 개발하여 공개
  • 49. 2001년 10월 Windows XP에 IPv6을 기본으로 탑재. 기본적인 것만 구현
  • 50. Windows Server 2003에 상용 수준의 IPv6 스택이 탑재
  • 51. Windows Visata에서 IPv4/IPv6이 통합된 진정한 듀얼스택을 개발하여 탑재. 드디어 IPv6을 완벽하게 구현
  • 52.
  • 53.
  • 54. 이 때의 고갈의 의미는 ICANN에서 각 대륙 별 주소 관리 기구에 주소 할당을 다했다는 의미로 지금 IPv4 주소가 더 이상 없다는 뜻이 아니다
  • 55. ICANN은 대륙 별 주소 관리 기구에 인터넷 주소를 줄 때 큰 하나의 덩어리를 주는데 이 덩어리의 크기는 약 1700만개 정도의 인터넷 주소이다.
  • 56. 2월3일의 고갈은 마지막 남은 덩어리를 하나씩 각 대륙 별 주소 관리 기구에 다 주었다는 뜻이다.
  • 57.
  • 58. NAT은 주소 부족 문제를 해결해 주지만 P2P 통신에 문제가 있음
  • 59. UPnP나 NAT Traversal 등으로 이 문제를 회피하지만 완벽하지 않음
  • 60. 또 관리자 중 NAT을 내부와 외부 네트워크를 분리하는 보안 기술이라는 생각을 가지고 있음
  • 61. 특히 최근의 CGN, LSN 등의 3중 NAT는 어뷰즈로깅, 위치 추적, NAT Traversal 기능도 못 쓰게 만듬
  • 62. NAT은 웹브라우징 이나 이메일 등의 일반 웹 서비스에는 문제가 없지만 온라인 P2P 게임, 비드오스트리밍, 웹갬, 터널링, VPn, VoIP에서 품질 저하나 서비스가 불가능 하는 경우가 있다
  • 63.
  • 64. IPv6은 처음 설계 시부터 보안을 고려해서 만든
  • 65. IPv6은 IPv4 보다 보안이 더 뛰어나지만 아직 보급된 시장이 작아서 IPv4에 비해 보안 관련 장비가 부족함
  • 66.
  • 67. 이 행사의 목적은 24시간 동안 IPv6 웹 사이트를 올려서 전 세계에서 접속이 가능한지 테스트 및 운영, 또 IPv4 주소가 부족하다는 것을 알리고 IPv6 도입을 촉진 시키기 위해서이다
  • 68.
  • 69. API - IPv6 관련 구조체 #include <netinet/in.h> structsockaddr_in { in_port_tsin_port; // Port 번호 struct in_addrsin_addr; // 인터넷 주소 구조체 } structin_addr { in_addr_ts_addr; // 32bit 크기의 인터넷주소 } IPv4 #include <netinet/in.h> struct sockaddr_in6 { u_int16m_t sin6_family; // AF_INET6 u_int16m_t sin6_port; // Port 번호 u_int32m_t sin6_flowinfo; // IPv6 flow information struct in6_addr sin6_addr;// IPv6 주소 u_long sin6_scope_id; // 인터페이스 인덱스 아이디 } IPv6 출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog
  • 70. API - socket IPv4 IPv6 s = socket(PF_INET, SOCK_STREAM, 0); s = socket(PF_INET, SOCK_DGRAM, 0); s = socket(PF_INET6, SOCK_STREAM, 0); s = socket(PF_INET6, SOCK_DGRAM, 0); 출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog
  • 71. API – bind (IPv6) struct sockaddr_in6 sin6; .... sin6.sin6_family = AF_INET6; sin6.sin6_flowinfo = 0; sin6_sin6_port = htons(23); sin6.sin6_addr = in6addr_any; sin6.sin6_addr = in6addr_any; sin6.sin6_scope_id = if_nametoindex("eth0"); .... if (bind(s, (structsockaddr *)&sin6, sizeof(sin6)) == -1) { // 에러처리 } .... 출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog
  • 72. API – listen, accept (IPv6) listen 변환 없음 accept struct sockaddr_in6 clisin6; clisockfd = accept(sockfd, (structsockaddr *)&clisin6, (socklen_t *)&clilen); 출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog
  • 73. API – inet_addr, inet_ntoa inet_addr inet_pton inet_ntop inet_ntoa WSAAddressToString inet_addr는 32비트, inet_pton는 128비트 그러나 C++에서의 최대 정수의 크기는 64비트 !!!inet_pton, inet_ntop는 Windows Vista부터 지원
  • 74. 코드-IPv6 주소 얻기 (Win32 API) #include ‹winsock2.h› #include ‹ws2tcpip.h› #include ‹stdio.h› int main(intargc, char *argv[]) { char *nodename; WSADATA wsaData; ADDRINFO hints; LPADDRINFO ai, ai0; int e; if (argc != 2) { fprintf(stderr, "syntax: getv6addr HOSTNAME"); exit(1); } nodename = argv[1]; WSAStartup(MAKEWORD(2, 2), &wsaData); /* resolving "www.ipv6style.jp" */ memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; if (e = getaddrinfo(nodename, NULL, &hints, &ai0)) { fprintf(stderr, "%s: %s", nodename, gai_strerror(e)); WSACleanup(); exit(1); } for (ai = ai0; ai; ai = ai->ai_next) { char v6addrstr[NI_MAXHOST]; getnameinfo(ai->ai_addr, ai->ai_addrlen, v6addrstr, sizeof(v6addrstr), NULL, 0, NI_NUMERICHOST); printf("%s IPv6 address: %s", nodename, v6addrstr); } freeaddrinfo(ai0); WSACleanup(); } 출처: http://www.ipv6style.jp/jp/apps/20051024/index.shtml
  • 75. 코드-IPv6 주소 얻기 (Win32 API) #include ‹winsock2.h› #include ‹ws2tcpip.h› #include ‹stdio.h› int main(intargc, char *argv[]) { PHOSTENT pHostInfo = NULL; char szHostName[255] = {0, }; if (gethostname(szHostName, 255) == 0) { /// Windows XP1 이상 DWORD dwSize; LPADDRINFO lpAddrInfo; ADDRINFO addrHints; ZeroMemory(&addrHints, sizeof(addrinfo)); if( bUseIPv6Address ) { addrHints.ai_family = AF_INET6; } else { addrHints.ai_family = AF_INET; } if (getaddrinfo(szHostName, NULL, &addrHints, &lpAddrInfo) != 0) { return false; } dwSize= MAX_IP_STRING_LENGTH; if( 0 != WSAAddressToString(lpAddrInfo->ai_addr, (DWORD)lpAddrInfo->ai_addrlen, NULL, szIP, &dwSize) ) { return false; } } } 출처: http://www.ipv6style.jp/jp/apps/20051024/index.shtml
  • 76.
  • 77. IPv4만 대응하는 경우 보통 IPv4 주소를 기록한 A 레코드만 DNS 서버에 등록. 듀얼스택의 경우 여기에 IPv6 주소를 기록한 AAAA 레코드를 기록.
  • 78. IPv4와 IPv6 둘 다 대응하는 프로그램은- AAAA 레코드에 등록된 IPv6 주소 접근을 시도- AAAA 레코드 접속이 실패하면 A 레코드 주소로 접근
  • 79.
  • 80. 코드-IPv6 서버 (Win32 API) #include ‹winsock2.h› #include ‹ws2tcpip.h› #include ‹stdio.h› #include ‹process.h› void tcp_echo_io(void *arg); int main(intargc, char *argv[]) { WSADATA wsaData; int i; char *servname = "echo"; ADDRINFO hints; LPADDRINFO ai, ai0; int e; SOCKET s[64]; intnsocks; fd_set rfd0; if (WSAStartup(MAKEWORD(2, 2), &wsaData)) { fprintf(stderr, "can not initilize WinSock"); exit(1); } memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; if (e = getaddrinfo(NULL, servname, &hints, &ai0)) { fprintf(stderr, "%s", gai_strerror(e)); exit(1); }
  • 81. for (nsocks = 0, ai = ai0; ai; ai = ai->ai_next) { s[nsocks] = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (s[nsocks] == INVALID_SOCKET) continue; if (bind(s[nsocks], ai->ai_addr, ai->ai_addrlen) == SOCKET_ERROR) { closesocket(s[nsocks]); s[nsocks] = INVALID_SOCKET; continue; } if (listen(s[nsocks], 5) == SOCKET_ERROR) { closesocket(s[nsocks]); s[nsocks] = INVALID_SOCKET; continue; } nsocks++; printf("create %s listen socket", (ai->ai_family == AF_INET) ? "IPv4" : (ai->ai_family == AF_INET6) ? "IPv6" : "Unknown"); } if (nsocks == 0) { fprintf(stderr, "can not create listen socket with any protocol"); exit(1); }
  • 82. FD_ZERO(&rfd0); for (i = 0; i < nsocks; ++i) FD_SET(s[i], &rfd0); while (1) { fd_setrfd; SOCKET iosock; SOCKADDR_STORAGE ss; intsslen; rfd = rfd0; if (select(FD_SETSIZE, &rfd, NULL, NULL, NULL) == SOCKET_ERROR) { fprintf(stderr, "select error"); exit(1); } for (i = 0; i < nsocks; ++i) { if (FD_ISSET(s[i], &rfd)) { sslen = sizeof(ss); iosock = accept(s[i], (LPSOCKADDR)&ss, &sslen); if(iosock == INVALID_SOCKET) { fprintf(stderr, "accept error"); exit(1); } if (_beginthread(tcp_echo_io, 0, &iosock) == -1) { fprintf(stderr, "can not create thread"); exit(1); } } } }
  • 83. void tcp_echo_io(void *arg) { SOCKET s; char buf[BUFSIZ]; intbufsiz; printf("start thread"); s = *(SOCKET *)arg; while ((bufsiz = recv(s, buf, sizeof(buf) - 1, 0)) != 0) { if (bufsiz == SOCKET_ERROR ) break; buf[bufsiz] = ''; printf("recv string: %s", buf); if (send(s, buf, bufsiz, 0) == SOCKET_ERROR) break; printf("send string: %s", buf); } printf("end thread"); closesocket(s); _endthread(); } 출처: http://www.ipv6style.jp/jp/apps/20051128/index.shtml
  • 84. 코드-IPv6 클라이언트 (Win32 API) #include ‹winsock2.h› #include ‹ws2tcpip.h› #include ‹stdio.h› int main(intargc, char *argv[]) { WSADATA wsaData; char *nodename; char *servname = "echo"; ADDRINFO hints; LPADDRINFO ai, ai0; int e; SOCKET s; char linebuf[BUFSIZ]; if (argc != 2) { fprintf(stderr, "syntax: tcp-echo-client servername¥n"); exit(1); } nodename = argv[1]; if (WSAStartup(MAKEWORD(2, 2), &wsaData)) { fprintf(stderr, "can not initilize WinSock¥n"); exit(1); }
  • 85. memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if (e = getaddrinfo(nodename, servname, &hints, &ai0)) { fprintf(stderr, "%s¥n", gai_strerror(e)); exit(1); } for (ai = ai0; ai; ai = ai->ai_next) { s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (s == INVALID_SOCKET) continue; if (connect(s, ai->ai_addr, ai->ai_addrlen) == SOCKET_ERROR) { closesocket(s); s = INVALID_SOCKET; continue; } printf("connected¥n"); break; } if (s == INVALID_SOCKET) { freeaddrinfo(ai0); WSACleanup(); fprintf(stderr, "can not connect server(%s)¥n", nodename); exit(1); }
  • 86. while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) { if (send(s, linebuf, strlen(linebuf), 0) == SOCKET_ERROR) { fprintf(stderr, "send error¥n"); exit(1); } if (recv(s, linebuf, sizeof(linebuf), 0) == SOCKET_ERROR) { fprintf(stderr, "recv error¥n"); exit(1); } printf(linebuf); } freeaddrinfo(ai0); WSACleanup(); } 출처: http://www.ipv6style.jp/jp/apps/20051114/index.shtml
  • 87. GunZ2의 네트웍라이브러에IPv6 추가 지원 작업 1. IPv6에 대한 이론 공부 2. 플밍 시작 - IP 문자열 키우기 - IPv4와 IPv6 둘 다 사용할 수 있도록 네트웍라이브러변경 - IPv6 호환 Socket API 변환 - IP 주소 문자열을 정수로 변환하여 사용하는 것 모두 제거 3. 테스트 - 테스트할 PC의 네트웍 환경을 IPv6으로 변경
  • 88. 참고 IPv6 개요 (한국어) http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Intro IPv6 프로그래밍 (한글)http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog 5분으로 이해하는 IPv6 프로그래밍 (일본어) http://www.ipv6style.jp/jp/apps/20030617/index.shtml IPv6 소켓 프로그래밍 (일본어) http://www.nslabs.jp/socket.rhtml Windows에서의 IPv6 소켓 프로그래밍 강좌 (일본어) http://www.admintech.jp/wiki.cgi?page=Windows%A4%C7%A4%CEIPv6%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B9%D6%BA%C2 문제로 풀어보는 IPv4와 IPv6 (일본어) http://www.ie.u-ryukyu.ac.jp/~e055723/info2/ipv6/main.html
  • 89. Introduction to IPv6 Programming (영어)http://www.euchinagrid.org/IPv6/IPv6_presentation/Introduction_to_IPv6_programming.pdf IPv6으로 시작하는 네트워크 (일본어) http://journal.mycom.co.jp/series/ipv6/001/index.html IPv6 위키피디아(일본어) http://ja.wikipedia.org/wiki/IPv6#cite_note-5 Windows 7에서 IPv6 환경 설정 (일본어) https://ybb.softbank.jp/support/connect/step2/ipv6/win7_net_set.html IPv6_Vasily (한글. 블로그) http://blog.daum.net/ipv6 MS TechNet – IPv6 http://technet.microsoft.com/ko-kr/library/cc755011%28WS.10%29.aspx