Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNIX Network Programming1 UNIX Network Programming 2nd Edition.

Similar presentations


Presentation on theme: "UNIX Network Programming1 UNIX Network Programming 2nd Edition."— Presentation transcript:

1 UNIX Network Programming1 UNIX Network Programming 2nd Edition

2 UNIX Network Programming2 Chapter 1. Introduction Contents –Introduction –A Simple Daytime Client –Error Handling: Wrapper Functions –A Simple Daytime Server –OSI Model –Unix Standards

3 UNIX Network Programming3 1.1 Introduction Client / Server ClientServer Communication link Figure 1.1 Network application : client and server Client Server... Figure 1.2 Server handling multiple clients at the same time.

4 UNIX Network Programming4 1.1 Introduction (continued) Example : Client and Server on the same Ethernet communication using TCP Web Client TCP IP Ethernet driver Web server TCP IP Ethernet driver TCP protocol Application protocolIP protocol Ethernet protocol Actual flow between client and server Ethernet Application layer transport layer network layer datalink layer User process Protocol stack within kernel Figure 1.3 Client and server on the same Ethernet communicating using TCP

5 UNIX Network Programming5 1.1 Introduction (continued) Example : Client and Server on different LANs connected through WAN. client application Host with TCP/IP server application Host with TCP/IP router LAN WAN Figure 1.4 Client and server on different LANs connected through a WAN

6 UNIX Network Programming6 1.2 A Simple Daytime Client #include “unp.h” int main (int argc, char **argv) { intsockfd, n; charrecvline[MAXLINE+1]; struct sockaddr_in servaddr; if ( argc != 2) err_quit(“usage: a.out ”); if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys(“socket error”); bzero( &servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13);/* daytime server */ if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) err_quit(“inet_pton error for %s”,argv[1]); if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0) err_sys(“connect error”); while ( (n = read(sockfd, recvline, MAXLINE)) > 0 ) { recvline[n] = 0;/* null termicate */ if ( fputs(recvline, stdout) == EOF) err_sys(“fputs error”); } if ( n < 0 ) err_sys ( “read error “); exit(0); } 1 2 3 4 5

7 UNIX Network Programming7 #include"unp.h" int main(int argc, char **argv) { intsockfd, n; struct sockaddr_in6servaddr; charrecvline[MAXLINE + 1]; if (argc != 2)err_quit("usage: a.out "); if ( (sockfd = socket(AF_INET6, SOCK_STREAM, 0)) < 0) err_sys("socket error"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin6_family = AF_INET6; servaddr.sin6_port = htons(13);/* daytime server */ if (inet_pton(AF_INET6, argv[1], &servaddr.sin6_addr) <= 0) err_quit("inet_pton error for %s", argv[1]); if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0) err_sys("connect error"); while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0;/* null terminate */ if (fputs(recvline, stdout) == EOF) err_sys("fputs error"); } if (n < 0) err_sys("read error"); exit(0); } 1.3 protocol Independence

8 UNIX Network Programming8 1.4 Error Handling: Wrapper Functions Since terminating on an error is the common case, we can shorten our program by defining a wrapper function that performs the actual function call, tests the return value, and terminates on an error. sockfd = Socket(AF_INET, SOCK_STREAM, 0); int Socket(int family, int type, int protocol) { int n; if( (n = socket( family, type, protocol)) < 0 ) err_sys(“socket error”); return (n); } Unix errno Value Figure 1.7 Our wrapper function for the socket function

9 UNIX Network Programming9 1.5 A Simple Daytime Server #include “unp.h” #include int main(int argc, char **argv) { intlistenfd, connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_tticks; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(13);/* daytime server */ Bind(listenfd, (SA *) *servaddr, sizeof(servaddr) ); Listen(listenfd, LISTENQ); for( ; ; ) { connfd = Accept(listenfd, (SA *) NULL, NULL) ; ticks = time(NULL); snprintf(buff, sizeof(buff), “%.24s\r\n”, ctime(&ticks) ); Write(connfd, buff, strlen(buff) ); Close(connfd); } 1 2 3 4

10 UNIX Network Programming10 1.7 OSI Model –Why do both sockets and XTI provide the interface from the upper three layers of the OSI model into the transport layer? First, the upper three layers handle all the details of the application and The lower four layers handle all the communication details. Second, the upper three layers is called a user process while the lower four layers are provided as part of the operating system kernel. Application Session Presentation Transport Network Datalink Physical 76543217654321 OSI Model Application TCP | | UDP IPv4, IPv6 Device driver and Hardware Internet protocol suite Sockets XTI user process kernel application details communication details Figure 1.14 Layers on OSI model and Internet protocol suite

11 UNIX Network Programming11 1.10 Unix Standards POSIX –Potable Operating System Interface –a family of standards being developed by IEEE The Open Group –an international consortium of vendors and end-user customers from industry, government, and academia. IETF (Internet Engineering Task Force) –a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the internet.

12 UNIX Network Programming12 Chapter 2. The Transport Layer : TCP and UDP Contents –Introduction –The Big Picture –UDP: User Datagram Protocol –TCP: Transmission Control Protocol –TCP Connection Establishment and Termination –TIME_WAIT State –Port Numbers –TCP Port Numbers and Concurrent Servers –Buffer Sizes and Limitations

13 UNIX Network Programming13 2.1 Introduction Overview of the TCP / IP protocol Transport layer : TCP & UDP

14 UNIX Network Programming14 2.2 The Big Picture

15 UNIX Network Programming15 2.3 UDP : User Datagram Protocol The application writes a datagram to a UDP socket, which is encapsulated as either a IPv4 of a IPv6 datagram, which is sent to its destination. UDP provides a connectionless service. Each UDP datagram has a length and we can consider a datagram as a record. RFC 768[Postel 1980]

16 UNIX Network Programming16 2.4 TCP: Transmission Control Protocol Provides connections between clients and servers. Provides reliability. –RTT ( round-trip-time) TCP also sequences the data by associating a sequence number with every byte that it sends. TCP provides flow control. –window A TCP connection is also full-duplex.

17 UNIX Network Programming17 2.5 TCP Connection Establishment and Termination Three-Way Handshake SYN segment ACK

18 UNIX Network Programming18 TCP Header

19 UNIX Network Programming19Encapsulation

20 UNIX Network Programming20 2.5 TCP Connection Establishment and Termination (cont) TCP Options –MSS option With this option the TCP sending the SYN announces its maximum segment size, the maximum amount of data that it is willing to accept in each TCP segment, on this connection. –Window Scale option –Timestamp option

21 UNIX Network Programming21 TCP Connection Termination half-close : Between steps 2 and 3 it is possible for data to flow from the end doing the passive close to the end doing active close. 2.5 TCP Connection Establishment and Termination (cont)

22 UNIX Network Programming22 2.5 TCP Connection Establishment and Termination (cont) - State transition diagram

23 UNIX Network Programming23 Watching the Packets 2.5 TCP Connection Establishment and Termination (cont)

24 UNIX Network Programming24 2.6 TIME_WAIT State The end that performs the active close is the end that remains in the TIME_WAIT state=>because that end is the one that might have to retransmit the final ACK. There are two reason for TIME_WAIT state –to implement TCP’s full-duplex connection termination reliably –to allow old duplicate segments to expire in the network

25 UNIX Network Programming25 2.7 Port Numbers

26 UNIX Network Programming26 2.8 TCP port Numbers and Concurrent Servers

27 UNIX Network Programming27 2.8 TCP port Numbers and Concurrent Servers

28 UNIX Network Programming28 2.9 Buffer Sizes and Limitations Maximum size of IPv4 => 65535 byte Maximum size of IPv6 => 65575 byte MTU(maximum transmit unit) => fragmentation DF (don’t fragment) IPv4 and IPv6 define a minimum reassembly buffer size. TCP has MSS(maximum segment size)

29 UNIX Network Programming29 TCP output

30 UNIX Network Programming30 UDP output

31 UNIX Network Programming31 2.10 standard internet service Notice: TCP and UDP port number is same.

32 UNIX Network Programming32 2.11protocol usage by common internet Application


Download ppt "UNIX Network Programming1 UNIX Network Programming 2nd Edition."

Similar presentations


Ads by Google