Best practices in IPv6 enabled networking software development.
|
|
|
- Austen Lynch
- 10 years ago
- Views:
Transcription
1 Best practices in IPv6 enabled networking software development 1
2 The IPv6 Protocol 1 New version of the Internet Protocol Devised by IETF to replace IPv4 It solves all the problems of IPv4 Address space exhaustion Explosion of routing tables Mobility Performance and scalability IPv6 is ready for mainstream adoption 2
3 The IPv6 Protocol 2 Enormous address space: 340,282,366,920,938,463,463,374,607,431,768,211,456 (2^128) possible addresses, ~79*10^27 greater than IPv4 665,570,793,348,866,943,898,599 addresses per square meter on Earth Aggregatable address space Mandatory IPSEC support Stateless address autoconfiguration Improved mobile networking Performance and scalability 3
4 The transition to IPv6 All nodes (hosts, routers, firewalls, L3 switches, etc...) must be upgraded to support IPv6 IPv6 connectivity must be provided to LANs and WANs All applications must be ported to IPv6 IPv6 nodes and applications should preserve compatibility with IPv4 Very difficult task!!! 4
5 The transition scenario 1 During the transition phase we'll have mixed IPv4 and IPv6 environments Many networks won't have native IPv6 connectivity Transition tools and mechanisms will be deployed to provide IPv6 connectivity to hosts and LANs (6TO4, NAT PT, etc...) The network scenarios will be very complex Applications must be designed to work in all possible environments 5
6 The transition scenario 2 During the transition we'll have: nodes with IPv4 connectivity but no IPv6 connectivity (or support) nodes with IPv6 connectivity but no IPv4 connectivity (or support) nodes with both IPv4 and IPv6 connectivity IPv4 connectivity may be preferred to IPv6 connectivity or viceversa (cost, reliability, etc...) There may be problems with DNS resolution 6
7 Always too late ; ) When will IPv4 die? There are areas in which the shortage of IPv4 addresses is really dramatic (especially Asia) However, IPv4 is not going to disappear soon: 08/ale.html NAT, private networks and Realm IP will extend lifetime of IPv4 The transition to IPv6 will be probably very long 7
8 Applications design guidelines 1 Applications should support both IPv4 and IPv6 Having two different applications, one for IPv4 and the other for IPv6, to handle the same service is annoying: confusing for the users on client side possible inconsistencies on server side Applications must work even if IPv6 (or IPv4) support is disabled 8
9 Applications design guidelines 2 There are cases in which an application must work only with a given protocol version (IPv4 or IPv6) or with both of them: if a user is connecting to a service handled by two different server applications (one for IPv4 and one for IPv6) if a developer wants to test IPv6 compliance of his application if a developer wants to test an IPv6 transition tool or mechanism a user knows that the service he is trying to connect to is available only via a specific protocol version and wants to speed up the procedure to establish connections to the server node 9
10 Applications design guidelines 3 IPv6 enabled applications should allow the expert user to choose if he wants to use IPv4, IPv6 or both: 4 and 6 options for command line tools entries in configuration files IPv6 enabled client applications should handle connectivity problems in a robust way (connection failover) Applications should handle scoped addresses if the system supports them 10
11 Applications design guidelines 4 Applications that perform DNS caching must: cache both A (IPv4) and AAAA (IPv6) DNS records discard cached records as soon as their lifetime expires Since many problems can arise from the interaction of the DNS caching pratice and the use of dynamic DNS, the expert user should be allowed to disable application level DNS caching Applications should handle potential problems related to the malicious use of IPv4 mapped IPv6 addresses on the wire 11
12 Applications design guidelines 5 It may be desirable to keep also the old IPv4 only source code and choose at build time if the application must use the old IPv4 only code or the new IPv6 enabled code: portability towards older systems which do not support IPv6 yet to release an IPv6 enabled development version of the application while retaining production quality IPv4 support code 12
13 Applications design guidelines 6 #ifdef ENABLE_IPv6 /* new IPv6-enabled code */ #else /* old IPv4-only code */ #endif /* ENABLE_IPv6 */ ENABLE_IPv6 is defined in one of the application header files at compile time by the user or the autoconfiguration process 13
14 The Extended BSD Socket API 1 IETF has developed an Extended BSD socket API to introduce support for the IPv6 protocol The old BSD socket API was incompatible with IPv6: sockaddr_in and in_addr structs are inadequate to store IPv6 addresses inet_ntoa(3) and inet_aton(3) are inadequate for the conversion of IPv6 addresses from network to ASCII string format and viceversa gethostbyname(3) and gethostbyaddr(3) cannot handle scoped IPv6 addresses 14
15 The Extended BSD Socket API 2 The Extended BSD socket API defines the new address family AF_INET6 and the related protocol family PF_INET6 It also introduces new data structures to store IPv6 addresses: in6_addr and sockaddr_in6 To preserve backward compatibility PF_INET6 sockets do not support only IPv6 but also IPv4 Connection to an IPv4 server application via a PF_INET6 socket is supported by means of IPv4 mapped addresses 15
16 The Extended BSD Socket API 3 IPv6 enabled server applications which bind to :: will also bind to and will accept incoming connections via both IPv4 and IPv6 Developers can change this default behaviour by setting the IPV6_V6ONLY socket option for PF_INET6 sockets IPV6_V6ONLY turns off IPv4 compatibility and makes the PF_INET6 socket support only IPv6 16
17 The Extended BSD Socket API 4 Two new functions for conversion of IP address formats: inet_ntop(3) converts IP addresses from network to presentation (ASCII string) format inet_pton(3) converts IP addresses from presentation (ASCII string) to network format inet_ntop and inet_pton support both IPv6 and IPv4 addresses and (unlike the old inet_ntoa and inet_aton) are also reentrant 17
18 The Extended BSD Socket API 5 Two new functions for DNS name resolution: getaddrinfo translates a location and/or a service name and returns a set of socket addresses that can be used to connect or bind to the specified service getnameinfo translates a socket address structure to a node and/or service name The results returned by getaddrinfo and getnameinfo are highly configurable 18
19 AF independent apps 1 Porting applications to IPv6 by simply changing all the occurrences of AF_INET and sockaddr_in to AF_INET6 and sockaddr_in6 in most cases is not the best approach Hardcoding AF_INET6 and sockaddr_in6 in the sources: undermines the portability of the code prevents the application from working properly on dual stack systems where the IPv6 support is disabled is complex and VERY bug prone A preferrable solution is the adoption of an AF independent development style The code becomes totally independent from the address family and we have a complete separation of IPv4 and IPv6 sockets 19
20 AF independent apps 2 getaddrinfo and getnameinfo have been designed to be AF independent They can provide name to address and address to name resolution for all the communication protocols supported by the system (even not based on DNS) If called with AF_UNSPEC, getaddrinfo performs translation for ALL protocols supported by the system Applications that use getaddrinfo and getnameinfo correctly will automatically take advantage of other protocol families and communication protocols supported by the target host 20
21 AF independent apps 3 For generic name to address resolution, applications should call getaddrinfo and try EACH returned socket addresses for connecting to the remote service Server applications should call getaddrinfo with the AI_PASSIVE flag and bind to ALL the returned socket addresses Generic address to name resolution is straightforward To ease the development of AF independent applications, the Extended BSD Socket API defines the sockaddr_storage structure 21
22 AF independent apps 4 Writing AF independent code is usually very easy (often easier than writing non AF independent code!!!) There may be problems with IPV6_V6ONLY Not all the systems support that option in the same way: some systems (NetBSD, OpenBSD, FreeBSD >= 5.0) turn IPV6_V6ONLY on by default other systems turn IPV6_V6ONLY off by default, but let sysops to choose the default behaviour at run time (Linux >= has the sysctl configuration option /proc/sys/net/ipv6/bindv6only) older systems (Linux < ) do NOT support IPV6_V6ONLY 22
23 IPv4 only broken client code 1 int connect_wrapper(const char *location, const char *service) { int fd; struct sockaddr_in sin; socklen_t salen; unsigned short servnum = get_serv_num(service); fd = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); memset(&sin, 0, sizeof(sin)); salen = sizeof(struct sockaddr_in); sin.sin_family = AF_INET; sin.sin_port = servnum; 23
24 IPv4 only broken client code 2 if (inet_aton(location, &sin.sin_addr)!= 0) { if (connect(fd, (struct sockaddr *)&sin, salen) == 0) return fd; } else { int i; struct hostent *hp; hp = gethostbyname(hostname); memcpy(&sin.sin_addr, hp >h_addr, sizeof(struct in_addr)); if (connect(fd, (struct sockaddr *)&sin, salen) == 0) return fd; } return 1; } 24
25 IPv4 only broken client code 3 unsigned short get_serv_num(const char *service) { long int num; char *tail; unsigned short servnum; num = strtol(service, &tail, 10); if (*tail == 0) { servnum = htons((unsigned short)num); } else { sp = getservbyname(argv[1], NULL); servnum = (unsigned short)sp >s_port; } return servnum; } 25
26 IPv4 only client code 1 int connect_wrapper(const char *location, const char *service) { int fd; struct sockaddr_in sin; socklen_t salen; unsigned short servnum = get_serv_num(service); fd = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); memset(&sin, 0, sizeof(sin)); salen = sizeof(struct sockaddr_in); sin.sin_family = AF_INET; sin.sin_port = servnum; 26
27 IPv4 only client code 2 if (inet_aton(location, &sin.sin_addr)!= 0) { if (connect(fd, (struct sockaddr *)&sin, salen) == 0) return fd; } else { int i; struct hostent *hp; hp = gethostbyname(hostname); for (i = 0; hp >h_addr_list[i]!= NULL; ++i) { memcpy(&sin.sin_addr, hp >h_addr_list[i], sizeof(struct in_addr)); if (connect(fd, (struct sockaddr *)&sin, salen) == 0) return fd; } } return 1; } 27
28 IPv6 enabled client code 1 int connect_wrapper(const char *location, const char *service) { struct addrinfo hints, *res, *ptr; int fd, connected = 0; fd = socket(af_inet6, SOCK_STREAM, IPPROTO_TCP); memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_V4MAPPED AI_ALL; getaddrinfo(location, service, &hints, &res); 28
29 IPv6 enabled client code 1 for (ptr = res; ptr!= NULL; ptr = ptr >ai_next) { if (connect(fd, ptr >ai_addr, ptr >ai_addrlen) == 0) { connected = 1; break; } } freeaddrinfo(res); return (connected? fd : 1); } 29
30 AF independent client code 1 int connect_wrapper(const char *location, const char *service) { struct addrinfo hints, *res, *ptr; socklen_t salen; int fd, connected = 0; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_ADDRCONFIG; getaddrinfo(location, service, &hints, &res); 30
31 AF independent client code 2 for (ptr = res; ptr!= NULL; ptr = ptr >ai_next) { int fd = socket(ptr >ai_family, ptr >ai_socktype, ptr >ai_protocol); if (fd < 0) { if (unsupported_sock_error(errno)) continue; return 1; /* this is a fatal error */ } if (ptr >ai_family == AF_INET6) setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)); if (connect(fd, ptr >ai_addr, ptr >ai_addrlen) == 0) { connected = 1; break; } else close(fd); } freeaddrinfo(res); return (connected? fd : 1); } 31
32 AF independent client code 3 int unsupported_sock_error(int err) { return (err == EPFNOSUPPORT err == EAFNOSUPPORT err == EPROTONOSUPPORT err == ESOCKTNOSUPPORT err == ENOPROTOOPT)? 1: 0; } 32
33 IPv4 only server code 1 int bind_wrapper(const char *service, callback_t fn) { int fd, ns; struct sockaddr_in sin; socklen_t salen; unsigned short servnum = get_serv_num(service); memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = servnum; fd = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); 33
34 IPv4 only server code 2 salen = sizeof(struct sockaddr_in); bind(fd, (struct sockaddr *)&sin, salen); listen(fd, SOMAXCONN); for(;;) { if ((ns = accept(fd, NULL, NULL)) >= 0) fn(ns); } return 0; } 34
35 IPv6 enabled server code 1 int bind_wrapper(const char *service, callback_t fn) { int fd, ns; struct sockaddr_in6 sin6; socklen_t salen; unsigned short servnum = get_serv_num(service); memset(&sin6, 0, sizeof(sin6)); sin6.sin6_family = AF_INET6; sin6.sin6_addr = in6addr_any; sin6.sin6_port = servnum; fd = socket(af_inet6, SOCK_STREAM, IPPROTO_TCP); 35
36 IPv6 enabled server code 2 salen = sizeof(struct sockaddr_in6); bind(fd, (struct sockaddr *)&sin6, salen); listen(fd, SOMAXCONN); for(;;) { if ((ns = accept(fd, NULL, NULL)) >= 0) fn(ns); } return 0; } 36
37 AF independent server code 1 int bind_wrapper(const char *service, callback_t fn) { struct addrinfo hints, *res, *ptr; socklen_t salen; int fd, on = 1; fd_set bound_sockets; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; getaddrinfo(null, service, &hints, &res); FD_ZERO(bound_sockets); maxfd = 1; 37
38 AF independent server code 2 for (ptr = res; ptr!= NULL; ptr = ptr >ai_next) { int fd = socket(ptr >ai_family, ptr >ai_socktype, ptr >ai_protocol); if (fd < 0) { if (unsupported_sock_error(errno)) continue; return 1; /* this is a fatal error */ } if (ptr >ai_family == AF_INET6) setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)); if (bind(fd, ptr >ai_addr, ptr >ai_addrlen) == 0) { FD_SET(bound_sockets); if (fd > max_fd) max_fd = fd; } else { close(fd); continue; } listen(fd, SOMAXCONN); } freeaddrinfo(res); 38
39 AF independent server code 3 for (;;) { int ns, tmpfd, tmpfd2 = max_fd; fd_set read_fds = bound_sockets; select(max_fd + 1, read_fdset, NULL, NULL, NULL); while(tmpfd2 >= 0) { tmpfd = tmpfd2; do { tmpfd; } while (tmpfd >= 0 &&!FD_ISSET(tmpfd, &read_fds)); if (tmpfd >= 0 && ((ns = accept(tmpfd, NULL, NULL)) >= 0)) fn(ns); tmpfd2 = tmpfd; } } return 0; } 39
40 Autoconfiguration 1 Autoconfiguration systems split the building process in two steps: a configuration step and a build step The autoconfiguration script discovers IPv6 compliance of the system The code is compiled according to the information provided by the autoconfiguration system GNU autoconf is an invaluable help when writing portable IPv6 enabled software The autoconfiguration process for IPv6 enabled code is very complex 40
41 Autoconfiguration 2 The autoconfiguration script should check: if the system supports the IPV6_V6ONLY option and if that option is set by default if the getaddrinfo function supports all the flags defined by RFC3493 if the system (sockaddr_in6, getaddrinfo, getnameinfo) supports scoped IPv6 addresses if the systems supports the Extended BSD socket API via a system library that the application must explicitly link 41
42 Autoconfiguration 3 TYPE_STRUCT_SOCKADDR_STORAGE(,[AC_MSG_ERROR([...])]) ipv6= AC_ARG_ENABLE(ipv6, AC_HELP_STRING([ disable ipv6],[disable IPv6 support]), [case "${enable_ipv6}" in no) AC_MSG_NOTICE([Disabling IPv6 at user request]) ipv6=no ;; *) ipv6=yes ;; esac], [ipv6=yes]) 42
43 Autoconfiguration 4 if test "X$ipv6" = "Xyes"; then TYPE_STRUCT_SOCKADDR_IN6(,[AC_MSG_NOTICE([...]) ipv6=no ]) MEMBER_SIN6_SCOPE_ID fi if test "X$ipv6" = "Xyes"; then PROTO_INET6(,[AC_MSG_NOTICE([...]) ipv6=no ]) fi if test "X$ipv6" = "Xyes"; then AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.]) fi 43
44 Autoconfiguration 5 AC_ARG_ENABLE(stack guess, AC_HELP_STRING([ disable stack guess],[disable stack guess]), [case "${enable_stack_guess}" in yes) stack_guess=yes ;; no) stack_guess=no ;; *) AC_MSG_ERROR([...]) ;; esac], [stack_guess=yes] ) 44
45 Autoconfiguration 6 if test "X$stack_guess"!= "Xno"; then IN6_GUESS_STACK NC6_CFLAGS="${NC6_CFLAGS} ${INET6_CFLAGS}" LIBS="${INET6_LIBS} ${LIBS}" fi AC_CHECK_FUNCS( [getaddrinfo freeaddrinfo gai_strerror getnameinfo],, AC_MSG_ERROR([...]) ) 45
46 Autoconfiguration 7 GETADDRINFO_AI_ADDRCONFIG( AC_DEFINE([HAVE_GETADDRINFO_AI_ADDRCONFIG], 1, [Define if the system headers support the AI_ADDRCONFIG flag.])) GETADDRINFO_AI_V4MAPPED( AC_DEFINE([HAVE_GETADDRINFO_AI_V4MAPPED], 1, [Define if the system headers support the AI_V4MAPPED flag.])) GETADDRINFO_AI_ALL( AC_DEFINE([HAVE_GETADDRINFO_AI_ALL], 1, [Define if the system headers support the AI_ALL flag.])) 46
47 Testing IPv6 enabled software Since IPv6 support is very different from one platform to the other, extensive testing of IPv6 enabled networking code is of great importance Developers should also use tools to verify the conformance of the Extended BSD socket API implementation of the target systems to the latest IETF standards libds6 testgetaddrinfo, testgetnameinfo, getaddrinfo dumpsockaddr, dumpaddrinfo nc6 47
48 48
49 Conclusions Writing IPv6 enabled applications is very difficult as it requires more in depth knowledge of the IP networking protocol If properly written, IPv6 enabled applications can easily support other communication protocols IPv6 is going to mainstream, so begin porting your networking applications IMMEDIATELY!!! 49
50 Suggestions Visit read the documentation and subscribe to the ds6 and ds6 devel mailing lists Upgrade to a Linux kernel release >= Install libinet6 from USAGI project ( ipv6.org) on your host Take a look at example ipv6 package Test and debug your applications with nc6 and libds6 50
51 Acknowledgements Dr. Peter Bieringer and Simone Piunno (cofounders of Deep Space 6) Chris Leisham and Filippo Natali (co authors of nc6) Jun ichiro itojun Hagino Prof. Cesare Stefanelli and Dr. Michele Balestra 51
52 Questions? 52
IPv6 Enabling CIFS/SMB Applications
IPv6 Enabling CIFS/SMB Applications 2010 Storage Developers Conference Santa Clara Dr David Holder CEng FIET MIEEE [email protected] http://www.erion.co.uk Background Erion David Holder Over twelve
CSE 333 SECTION 6. Networking and sockets
CSE 333 SECTION 6 Networking and sockets Goals for Today Overview of IP addresses Look at the IP address structures in C/C++ Overview of DNS Write your own (short!) program to do the domain name IP address
NS3 Lab 1 TCP/IP Network Programming in C
NS3 Lab 1 TCP/IP Network Programming in C Dr Colin Perkins School of Computing Science University of Glasgow http://csperkins.org/teaching/ns3/ 13/14 January 2015 Introduction The laboratory exercises
Porting applications & DNS issues. socket interface extensions for IPv6. Eva M. Castro. [email protected]. dit. Porting applications & DNS issues UPM
socket interface extensions for IPv6 Eva M. Castro [email protected] Contents * Introduction * Porting IPv4 applications to IPv6, using socket interface extensions to IPv6. Data structures Conversion functions
Elementary Name and Address. Conversions
Elementary Name and Address Domain name system Conversions gethostbyname Function RES_USE_INET6 resolver option gethostbyname2 Function and IPv6 support gethostbyaddr Function uname and gethostname Functions
Domain Name System (1)! gethostbyname (2)! gethostbyaddr (2)!
Lecture 5 Overview Last Lecture Socket Options and elementary UDP sockets This Lecture Name and address conversions & IPv6 Source: Chapter 11 Next Lecture Multicast Source: Chapter 12 1 Domain Name System
Name and Address Conversions
11 Name and Address Conversions 11.1 Introduction All the examples so far in this text have used numeric addresses for the hosts (e.g., 206.6.226.33) and numeric port numbers to identify the servers (e.g.,
Software changes for Website and Application IPv6 Readiness
Software changes for Website and Application IPv6 Readiness Ahmed Abu-Abed, P.Eng. Tamkien Systems [email protected] 1 Agenda Introduction Enabling Website IPv6 and Forum Certification Intro to Socket
Porting and Deploying VoIP to IPv6: Lessons Learned
Porting and Deploying VoIP to IPv6: Lessons Learned Marc Blanchet Simon Perreault Viagénie http://www.viagenie.ca Presented at ClueCon, Chicago, August 2008 ANNOUNCEMENT Freeswitch now supports IPv6. IPv6
Porting and Running Asterisk to IPv6
Porting and Running Asterisk to IPv6 Presented at APRICOT, Bali, Feb 28 th 2007 Marc Blanchet Viagénie http://www.viagenie.ca Credentials 20+ years in IP networking and Unix, with 10 years on IPv6... IP
Concurrent Server Design Alternatives
CSCE 515: Computer Network Programming ------ Advanced Socket Programming Wenyuan Xu Concurrent Server Design Alternatives Department of Computer Science and Engineering University of South Carolina Ref:
IPv6 Applications. Formation IPv6 RENATER -Rouen, FR
IPv6 Applications Formation IPv6 RENATER -Rouen, FR Contributors Jim Bound, HP Brian Carpenter, IBM, Switzerland Tim Chown, UoS, UK Johann Fiedler, FhG, Germany Ian Foster, Argonne National Labs Tony Hain,
gianluca.verin verin@libero. @libero.itit Vicenza.linux.it\LinuxCafe 1
gianluca.verin verin@libero. @libero.itit Vicenza.linux.it\LinuxCafe 1 Agenda IPv6 Basics Connecting to 6Bone Why do we need IPv6? IPv6 Introduction-Transition IPv6 and open source community Future applications
Introduction to Socket Programming Part I : TCP Clients, Servers; Host information
Introduction to Socket Programming Part I : TCP Clients, Servers; Host information Keywords: sockets, client-server, network programming-socket functions, OSI layering, byte-ordering Outline: 1.) Introduction
BSD Sockets Interface Programmer s Guide
BSD Sockets Interface Programmer s Guide Edition 6 B2355-90136 HP 9000 Networking E0497 Printed in: United States Copyright 1997 Hewlett-Packard Company. Legal Notices The information in this document
INTRODUCTION UNIX NETWORK PROGRAMMING Vol 1, Third Edition by Richard Stevens
INTRODUCTION UNIX NETWORK PROGRAMMING Vol 1, Third Edition by Richard Stevens Read: Chapters 1,2, 3, 4 Communications Client Example: Ex: TCP/IP Server Telnet client on local machine to Telnet server on
IPv4/IPv6 Transition for SIP VoIP Applications
IPv4/IPv6 Transition for SIP VoIP Applications Dr. Whai-En Chen Research Assistant Professor Department of Computer Science National Chiao Tung University, Taiwan 300, R.O.C. TEL: +886-3-5731924 FAX: +886-3-5716929
Implementing Network Software
Implementing Network Software Outline Sockets Example Process Models Message Buffers Spring 2007 CSE 30264 1 Sockets Application Programming Interface (API) Socket interface socket : point where an application
Network Programming with Sockets. Anatomy of an Internet Connection
Network Programming with Sockets Anatomy of an Internet Connection Client socket address 128.2.194.242:51213 socket address 208.216.181.15:80 Client Connection socket pair (128.2.194.242:51213, 208.216.181.15:80)
Packet Sniffing and Spoofing Lab
SEED Labs Packet Sniffing and Spoofing Lab 1 Packet Sniffing and Spoofing Lab Copyright c 2014 Wenliang Du, Syracuse University. The development of this document is/was funded by the following grants from
Introduction to Socket programming using C
Introduction to Socket programming using C Goal: learn how to build client/server application that communicate using sockets Vinay Narasimhamurthy [email protected] CLIENT SERVER MODEL Sockets are
Socket Programming. Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur
Socket Programming Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur Background Demultiplexing Convert host-to-host packet delivery service into a process-to-process communication channel
Lecture 17. Process Management. Process Management. Process Management. Inter-Process Communication. Inter-Process Communication
Process Management Lecture 17 Review February 25, 2005 Program? Process? Thread? Disadvantages, advantages of threads? How do you identify processes? How do you fork a child process, the child process
ICS 351: Today's plan. IP addresses Network Address Translation Dynamic Host Configuration Protocol Small Office / Home Office configuration
ICS 351: Today's plan IP addresses Network Address Translation Dynamic Host Configuration Protocol Small Office / Home Office configuration IP address exhaustion IPv4 addresses are 32 bits long so there
Socket Programming. Srinidhi Varadarajan
Socket Programming Srinidhi Varadarajan Client-server paradigm Client: initiates contact with server ( speaks first ) typically requests service from server, for Web, client is implemented in browser;
Lab 4: Socket Programming: netcat part
Lab 4: Socket Programming: netcat part Overview The goal of this lab is to familiarize yourself with application level programming with sockets, specifically stream or TCP sockets, by implementing a client/server
Programming with TCP/IP Best Practices
Programming with TCP/IP Best Practices Matt Muggeridge TCP/IP for OpenVMS Engineering "Be liberal in what you accept, and conservative in what you send" Source: RFC 1122, section 1.2.2 [Braden, 1989a]
Networks class CS144 Introduction to Computer Networking Goal: Teach the concepts underlying networks Prerequisites:
CS144 Introduction to Computer Networking Instructors: Philip Levis and David Mazières CAs: Juan Batiz-Benet, Behram Mistree, Hariny Murli, Matt Sparks, and Tony Wu Section Leader: Aki Kobashi [email protected]
Industry Automation White Paper Januar 2013 IPv6 in automation technology
Table of contents: 1 Why another White Paper IPv6?... 3 2 IPv6 for automation technology... 3 3 Basics of IPv6... 3 3.1 Turning point/initial situation... 3 3.2 Standardization... 4 3.2.1 IPv6 address
Building a Linux IPv6 DNS Server
Building a Linux IPv6 DS Server By David Gordon and Ibrahim Haddad Open Systems Lab Ericsson Research Corporate Unit This article presents a tutorial on building an IPv6 DS Linux server that provides IPv6
Beej's Guide to Network Programming
Beej's Guide to Network Programming Using Internet Sockets Brian Beej Jorgensen Hall [email protected] Version 3.0.21 June 8, 2016 Copyright 2015 Brian Beej Jorgensen Hall Thanks to everyone who has helped
Writing a C-based Client/Server
Working the Socket Writing a C-based Client/Server Consider for a moment having the massive power of different computers all simultaneously trying to compute a problem for you -- and still being legal!
Tunnel Client FAQ. Table of Contents. Version 0v5, November 2014 Revised: Kate Lance Author: Karl Auer
Tunnel Client FAQ Version 0v5, November 2014 Revised: Kate Lance Author: Karl Auer Table of Contents A. Tunnelling 1 How does tunnelling work? 2 What operating systems are supported? 3 Where can I get
IPv4 and IPv6 Integration. Formation IPv6 Workshop Location, Date
IPv4 and IPv6 Integration Formation IPv6 Workshop Location, Date Agenda Introduction Approaches to deploying IPv6 Standalone (IPv6-only) or alongside IPv4 Phased deployment plans Considerations for IPv4
Elementary Name and Address Conversions
Elementary Name and Address Conversions Domain name system gethostbyname Function RES_USE_INET6 resolver option gethostbyname2 Function and IPv6 support gethostbyaddr Function uname and gethostname Functions
Socket Programming in C/C++
September 24, 2004 Contact Info Mani Radhakrishnan Office 4224 SEL email mradhakr @ cs. uic. edu Office Hours Tuesday 1-4 PM Introduction Sockets are a protocol independent method of creating a connection
Unix Network Programming
Introduction to Computer Networks Polly Huang EE NTU http://cc.ee.ntu.edu.tw/~phuang [email protected] Unix Network Programming The socket struct and data handling System calls Based on Beej's Guide
TCP/IP - Socket Programming
TCP/IP - Socket Programming [email protected] Jim Binkley 1 sockets - overview sockets simple client - server model look at tcpclient/tcpserver.c look at udpclient/udpserver.c tcp/udp contrasts normal master/slave
About Me. Work at Jumping Bean. Developer & Trainer Contact Info: Twitter @mxc4 Twitter @jumpingbeansa [email protected]
IPv6 & Linux About Me Work at Jumping Bean Developer & Trainer Contact Info: Twitter @mxc4 Twitter @jumpingbeansa [email protected] Goals & Motivation Why? Why IPv6? Why this talk? Information on
Communication Networks. Introduction & Socket Programming Yuval Rochman
Communication Networks Introduction & Socket Programming Yuval Rochman Administration Staff Lecturer: Prof. Hanoch Levy hanoch AT cs tau Office hours: by appointment Teaching Assistant: Yuval Rochman yuvalroc
IBM i Version 7.2. Programming Socket programming IBM
IBM i Version 7.2 Programming Socket programming IBM IBM i Version 7.2 Programming Socket programming IBM Note Before using this information and the product it supports, read the information in Notices
Tutorial on Socket Programming
Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Seyed Hossein Mortazavi (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian, ) 1 Outline Client- server
Telepresence in an IPv6 World. Simplify the Transition
Telepresence in an IPv6 World Simplify the Transition IPV6 has the potential to transform communications, collaboration, learning, entertainment, physical security and more. What You Will Learn If you
Hostnames. HOSTS.TXT was a bottleneck. Once there was HOSTS.TXT. CSCE515 Computer Network Programming. Hierarchical Organization of DNS
Hostnames CSCE 515: Computer Network Programming ------ Address Conversion Function and DNS RFC 1034, RFC 1035 Wenyuan Xu http://www.cse..edu/~wyxu/ce515f07.html Department of Computer Science and Engineering
PowerLink Bandwidth Aggregation Redundant WAN Link and VPN Fail-Over Solutions
Bandwidth Aggregation Redundant WAN Link and VPN Fail-Over Solutions Find your network example: 1. Basic network with and 2 WAN lines - click here 2. Add a web server to the LAN - click here 3. Add a web,
Status of Open Source and commercial IPv6 firewall implementations
Status of Open Source and commercial IPv6 firewall implementations Dr. Peter Bieringer AERAsec Network Services & Security GmbH [email protected] European Conference on Applied IPv6 (ECAI6) Cologne, Germany
Asterisk with IPv6: Seamless and Ubiquitous VoIP
Asterisk with IPv6: Seamless and Ubiquitous VoIP Marc Blanchet Viagénie [email protected] http://www.viagenie.ca Presented at Voice Peering Forum, Miami, March 2007 Credentials 20+ years in IP
ITL BULLETIN FOR JANUARY 2011
ITL BULLETIN FOR JANUARY 2011 INTERNET PROTOCOL VERSION 6 (IPv6): NIST GUIDELINES HELP ORGANIZATIONS MANAGE THE SECURE DEPLOYMENT OF THE NEW NETWORK PROTOCOL Shirley Radack, Editor Computer Security Division
Firewall Builder Architecture Overview
Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.
MATLAB/Simulink TCP/IP Communication
MATLAB/Simulink TCP/IP Communication MARTIN SYSEL Department of Computer and Communication Systems Faculty of Applied Informatics Tomas Bata University in Zlín nám. T. G. Masaryka 5555, 760 01 Zlín CZECH
IPV6 DEPLOYMENT GUIDELINES FOR. ARRIS Group, Inc.
IPV6 DEPLOYMENT GUIDELINES FOR CABLE OPERATORS Patricio i S. Latini i ARRIS Group, Inc. Current IPv4 Situationti IANA has already assigned the last IPv4 Blocks to the RIRs. RIRs address exhaustion may
sys socketcall: Network systems calls on Linux
sys socketcall: Network systems calls on Linux Daniel Noé April 9, 2008 The method used by Linux for system calls is explored in detail in Understanding the Linux Kernel. However, the book does not adequately
IPv6 SECURITY. May 2011. The Government of the Hong Kong Special Administrative Region
IPv6 SECURITY May 2011 The Government of the Hong Kong Special Administrative Region The contents of this document remain the property of, and may not be reproduced in whole or in part without the express
Session NM059. TCP/IP Programming on VMS. Geoff Bryant Process Software
Session NM059 TCP/IP Programming on VMS Geoff Bryant Process Software Course Roadmap Slide 160 NM055 (11:00-12:00) Important Terms and Concepts TCP/IP and Client/Server Model Sockets and TLI Client/Server
416 Distributed Systems. Feb 24, 2016 DNS and CDNs
416 Distributed Systems Feb 24, 2016 DNS and CDNs Outline DNS Design Content Distribution Networks 2 Naming How do we efficiently locate resources? DNS: name à IP address Challenge How do we scale this
DEPLOYMENT GUIDE Version 1.1. DNS Traffic Management using the BIG-IP Local Traffic Manager
DEPLOYMENT GUIDE Version 1.1 DNS Traffic Management using the BIG-IP Local Traffic Manager Table of Contents Table of Contents Introducing DNS server traffic management with the BIG-IP LTM Prerequisites
Certes Networks Layer 4 Encryption. Network Services Impact Test Results
Certes Networks Layer 4 Encryption Network Services Impact Test Results Executive Summary One of the largest service providers in the United States tested Certes Networks Layer 4 payload encryption over
UNIX. Sockets. mgr inż. Marcin Borkowski
UNIX Sockets Introduction to Sockets Interprocess Communication channel: descriptor based two way communication can connect processes on different machines Three most typical socket types (colloquial names):
Getting started with IPv6 on Linux
Getting started with IPv6 on Linux Jake Edge LWN.net [email protected] LinuxCon North America 19 August 2011 History and Motivation IPng project July 1994 IPv6 - RFC 2460 December 1998 IPv5 - Internet Stream
Windows Socket Programming & IPv6 Translation Middleware
Windows Socket Programming IPv6 Translation Middleware Dr. Whai-En Chen VoIP and IPv6 Laboratory Research Assistant Professor Dept. of Computer Science and Information Engineering National Chiao Tung University
Use Domain Name System and IP Version 6
Use Domain Name System and IP Version 6 What You Will Learn The introduction of IP Version 6 (IPv6) into an enterprise environment requires some changes both in the provisioned Domain Name System (DNS)
Cisco Which VPN Solution is Right for You?
Table of Contents Which VPN Solution is Right for You?...1 Introduction...1 Before You Begin...1 Conventions...1 Prerequisites...1 Components Used...1 NAT...2 Generic Routing Encapsulation Tunneling...2
IPv6 Security from point of view firewalls
IPv6 Security from point of view firewalls János Mohácsi 09/June/2004 János Mohácsi, Research Associate, Network Engineer NIIF/HUNGARNET Contents Requirements IPv6 firewall architectures Firewalls and
IPv4 and IPv6: Connecting NAT-PT to Network Address Pool
Available online www.jocpr.com Journal of Chemical and Pharmaceutical Research, 2014, 6(5):547-553 Research Article ISSN : 0975-7384 CODEN(USA) : JCPRC5 Intercommunication Strategy about IPv4/IPv6 coexistence
DNS. The Root Name Servers. DNS Hierarchy. Computer System Security and Management SMD139. Root name server. .se name server. .
Computer System Security and Management SMD139 Lecture 5: Domain Name System Peter A. Jonsson DNS Translation of Hostnames to IP addresses Hierarchical distributed database DNS Hierarchy The Root Name
Deploying IPv6 in 3GPP Networks. Evolving Mobile Broadband from 2G to LTE and Beyond. NSN/Nokia Series
Brochure More information from http://www.researchandmarkets.com/reports/2379605/ Deploying IPv6 in 3GPP Networks. Evolving Mobile Broadband from 2G to LTE and Beyond. NSN/Nokia Series Description: Deploying
Application Architecture
A Course on Internetworking & Network-based Applications CS 6/75995 Internet-based Applications & Systems Design Kent State University Dept. of Science LECT-2 LECT-02, S-1 2 Application Architecture Today
About the Technical Reviewers
About the Author p. xiii About the Technical Reviewers p. xv Acknowledgments p. xvii Introduction p. xix IPv6 p. 1 IPv6-Why? p. 1 IPv6 Benefits p. 2 More Address Space p. 2 Innovation p. 3 Stateless Autoconfiguration
Security implications of the Internet transition to IPv6
Security implications of the Internet transition to IPv6 Eric VYNCKE Cisco Session ID: ASEC-209 Session Classification: Intermediate Agenda There is no place for doubts: IPv6 is there Impact in the Data
IPv6-only hosts in a dual stack environnment
IPv6-only hosts in a dual stack environnment using Free Software Frédéric Gargula, Grégoire Huet Background on IPv4 and IPv6 usage IPv4 addresses depletion doesn't need to be reminded No straight way exists
IBM Software Group Enterprise Networking Solutions z/os V1R11 Communications Server
IBM Software Group Enterprise Networking Solutions z/os V1R11 Communications Server Resolver DNS cache z/os Communications Server Development, Raleigh, North Carolina This presentation describes enhancements
DNS Resolving using nslookup
DNS Resolving using nslookup Oliver Hohlfeld & Andre Schröder January 8, 2007 Abstract This report belongs to a talk given at the networking course (Institue Eurecom, France) in January 2007. It is based
APNIC IPv6 Deployment
APNIC IPv6 Deployment Ulaanbaatar, Mongolia 19 October 2015 Issue Date: Revision: Overview Deployment motivation Network deployment IPv6 Services deployment IPv6 Anycast service IPv6 Cloud service Summary
Bump In Host a Host-based IPv4 to IPv6 Translation
Bump In Host a Host-based IPv4 to IPv6 Translation Zhang Feng [email protected] China Mobile CMCC IPv6 Status Dual stack network, covering 8 main cities, as part of CNGI (China Next Generation
THE ADOPTION OF IPv6 *
THE ADOPTION OF IPv6 * STUDENT PAPER Brian Childress Southwest Texas State University [email protected] Bryan Cathey Southwest Texas State University [email protected] Sara Dixon Southwest Texas State University
Campus IPv6 connection Campus IPv6 deployment
Campus IPv6 connection Campus IPv6 deployment Campus Address allocation, Topology Issues János Mohácsi NIIF/HUNGARNET Copy Rights This slide set is the ownership of the 6DISS project via its partners The
Configuring IP Addressing and Services
Configuring IP Addressing and Services 2 Chapter 1 Configuring IP Addressing and Services 1. Your organization consists of a single Windows Server 2008 Active Directory domain that is spread across two
Operating Systems Design 16. Networking: Sockets
Operating Systems Design 16. Networking: Sockets Paul Krzyzanowski [email protected] 1 Sockets IP lets us send data between machines TCP & UDP are transport layer protocols Contain port number to identify
SSL/TLS Programming. sslclient.c. /* A simple SSL client. It connects and then forwards data from/to the terminal to/from the server */
SSL/TLS Programming sslclient.c /* A simple SSL client. It connects and then forwards data from/to the terminal to/from the server */ #define CA_LIST "root.pem" #define ServerHOST "deneb" #define RANDOM
Your App and Next Generation Networks
System Frameworks #WWDC15 Your App and Next Generation Networks Session 719 Prabhakar Lakhera Core OS Networking Engineer Stuart Cheshire DEST 2015 Apple Inc. All rights reserved. Redistribution or public
DirectAccess in Windows 7 and Windows Server 2008 R2. Aydin Aslaner Senior Support Escalation Engineer Microsoft MEA Networking Team
DirectAccess in Windows 7 and Windows Server 2008 R2 Aydin Aslaner Senior Support Escalation Engineer Microsoft MEA Networking Team 0 Introduction to DirectAccess Increasingly, people envision a world
BlackBerry Enterprise Service 10 version 10.2 preinstallation and preupgrade checklist
BlackBerry Enterprise Service version.2 preinstallation and preupgrade checklist Verify that the following requirements are met before you install or upgrade to BlackBerry Enterprise Service version.2.
Windows 7 Resource Kit
Windows 7 Resource Kit Mitch Tulloch, Tony Northrup, and Jerry Honeycutt To learn more about this book, visit Microsoft Learning at http://www.microsoft.com/mspress/books/ 9780735627000 2009 Microsoft
MANAGED FIREWALL SERVICE. Service definition
MANAGED FIREWALL SERVICE Service definition Page 1 of 4 Version 1.2 (03/02/2015) NSMS Managed Firewalls Service Definition Understanding of a firewall service The function of any firewall service is to
DEPLOYMENT GUIDE Version 1.4. Configuring IP Address Sharing in a Large Scale Network: DNS64/NAT64
DEPLOYMENT GUIDE Version 1.4 Configuring IP Address Sharing in a Large Scale Network: DNS64/NAT64 Table of Contents Table of Contents Configuring IP address sharing in a large scale network... 1 Product
IPv6 in Axis Video Products
TECHNICAL NOTE REFERENCE DOCUMENT IPv6 in Axis Video Products Created: 2006-01-31 Last updated: 2006-05-29 TABLE OF CONTENTS DOCUMENT HISTORY... 2 1 IPV6 IN GENERAL... 3 1.1 The IPv6 address... 3 1.1.1
HP and IPv6 Deployment. Bill Medlin HP-UX IPv6 Project Manager
HP and IPv6 Deployment Bill Medlin HP-UX IPv6 Project Manager OUTLINE Why IPv6? Current HP-UX IPv6 Features IPv6 Customer Experience HP-UX and IPv6 Deployment HP Strategy for IPv6 page 2 Why IPv6? Immediate
