Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 3 Sockets Introduction

Similar presentations


Presentation on theme: "Chapter 3 Sockets Introduction"— Presentation transcript:

1 Chapter 3 Sockets Introduction
By They Yu Shu

2 Outline Socket Address Structures Value-Result Arguments
Byte Ordering Functions Byte Manipulation Functions Address Conversion

3 Socket Address Structure
In socket programming, IP address and Port value are used to identify the end-points of the TCP/IP communication. Socket Address Structure is a data structure to hold Address Family IP address Port Value And ….

4 IPv4 Socket Address Structure
struct in_addr { in_addr_t s_addr; /* 32-bit IPv4 address */ /* network byte ordered */ }; struct sockaddr_in { uint8_t sin_len; /* length of structure */ sa_family_t sin_family; /* 16 bit address family*/ /*AF_INET*/ in_port_t sin_port; /* 16-bit TCP or UDP port number */ struct in_addr sin_addr; /* 32-bit IPv4 address */ char sin_zero[8]; /* unused (to keep sockaddr_in > 16 bytes in size) */

5 Address Family Number Number Description Reference
0 Reserved 1 IP (IP version 4) 2 IP6 (IP version 6) 3 NSAP 4 HDLC (8-bit multidrop) 5 BBN 1822 (includes all 802 media plus Ethernet "canonical format") 7 E.163 8 E.164 (SMDS, Frame Relay, ATM) 9 F.69 (Telex) 10 X.121 (X.25, Frame Relay) 11 IPX 12 Appletalk 13 Decnet IV 14 Banyan Vines 15 E.164 with NSAP format subaddress [UNI-3.1] [Malis] 16 DNS (Domain Name System) 17 Distinguished Name [Lynn] 18 AS Number [Lynn] 19 XTP over IP version [Saul] 20 XTP over IP version [Saul] 21 XTP native mode XTP [Saul] 22 Fibre Channel World-Wide Port Name [Bakke] 23 Fibre Channel World-Wide Node Name [Bakke] 24 GWID [Hegde] 25 AFI for L2VPN information [RFC4761] Reserved

6 Socket Functions IPv4 Socket Address Structure IPv6 Socket
others Socket Address Structure Socket Functions: Bind() Connect() Send() Recv() …. Example: int bind(int, struct sockaddr *, socklen_t );

7 Generic Socket Address Structure
struct sockaddr { uint8_t sa_len; sa_family_t sa_family; /* address family: AF_xxx value */ char sa_data[14]; /* protocol-specific address */ };

8 Using Generic Socket Address Structure
struct sockaddr_in serv; /* IPv4 socket address structure */ /* fill in serv{} */ bind(sockfd, (struct sockaddr *) &serv, sizeof(serv));

9 IPv6 Socket Address Structure
struct in6_addr { uint8_t s6_addr[16]; /* 128-bit IPv6 address */ /* network byte ordered */ }; struct sockaddr_in6 { uint8_t sin6_len; /* length of this struct (28) */ sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* transport layer port# */ uint32_t sin6_flowinfo; /* flow information, undefined */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* set of interfaces for a scope */

10 New Generic Socket Address Structure
struct sockaddr_storage { uint8_t ss_len; /* length of this struct (implementation dependent) */ sa_family_t ss_family; /* address family: AF_xxx value */ ….. };

11

12 Value-Result Arguments
Arguments used for both value passing and result returning purpose. Process to Kernel: bind(),connect(),sendto() Example: struct sockaddr_in serv; /* fill in serv{} */ connect (sockfd, (sockaddr *) &serv, sizeof(serv) ); Kernel to Process accept(), recvfrom(), getsockname(), and getpeername() struct sockaddr_un cli; /* Unix domain */ socklen_t len; len = sizeof(cli); /* len is a value */ getpeername(unixfd, (sockaddr *) &cli, &len); /* len may have changed */

13

14 Byte Ordering Functions

15 #include <netinet/in.h>
uint16_t htons(uint16_t host16bitvalue) ; uint32_t htonl(uint32_t host32bitvalue) uint16_t ntohs(uint16_t net16bitvalue) ; uint32_t ntohl(uint32_t net32bitvalue) ;

16 Byte Manipulation Functions

17 Address Conversion Functions to convert 32 bit IPv4 network address to Ascii string 0x => “ ” inet_aton(), net_ntoa()

18 Address Conversion Functions to convert 32 bit IPv4/IPv6 network address to Ascii string inet_pton(), inet_ntop()

19 End


Download ppt "Chapter 3 Sockets Introduction"

Similar presentations


Ads by Google