2: Application Layer 1 Chapter 2 Application Layer Computer Networking: A Top Down Approach, 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April.
Published byModified over 6 years ago
Presentation on theme: "2: Application Layer 1 Chapter 2 Application Layer Computer Networking: A Top Down Approach, 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April."— Presentation transcript:
2: Application Layer 1 Chapter 2 Application Layer Computer Networking: A Top Down Approach, 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
2: Application Layer 2 Chapter 2: Application layer 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P applications 2.7 Socket programming with TCP 2.8 Socket programming with UDP
2: Application Layer 3 recv and send recv may be used instead of read (and is recommended): n = recv(fd, buffer, count, flags); The first three arguments are the same as for read. The flags argument provides additional flexibility. Interesting flags are MSG_DONTWAIT and MSG_PEEK. Refer to recv(2) for details.
2: Application Layer 4 recv and send Similarly send may be used instead of write (and is also recommended): n = send(fd, buffer, count, flags); Interesting flags are MSG_DONTWAIT, MSG_MORE and MSG_DONTROUTE. Refer to send(2) for details.
2: Application Layer 5 Chapter 2: Application layer 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P applications 2.7 Socket programming with TCP 2.8 Socket programming with UDP
2: Application Layer 6 Socket programming with UDP UDP: no “connection” between client and server no handshaking sender explicitly attaches IP address and port of destination to each packet server must extract IP address, port of sender from received packet UDP: transmitted data may be received out of order, or lost application viewpoint UDP provides unreliable transfer of groups of bytes (“datagrams”) between client and server
2: Application Layer 7 Client/server socket interaction: UDP Server (running on hostid ) close close() read datagram using recvfrom create socket, clifd = socket() Client Create datagram with server IP and port=x; send datagram via sendto create socket, port= x. srvfd = socket() bind() read datagram using recvfrom write reply using sendto specifying client address, port number
2: Application Layer 8 UDP Programming The client functions for passing UDP datagrams are: socket(), sendto(), and recvfrom(). It is not necessary for the client to connect() with the server. (Although connect() can be used.) The server uses socket(), bind(), recvfrom(), and sendto(). The server does not accept() a connection from the client, instead recvfrom() returns the data and client address.
2: Application Layer 10 UDP Programming recvfrom() returns an address as an argument. The address is used by the server to respond to the proper client: n = recvfrom(sockfd, mesg, mesg_len, 0, (SA *)&cliaddr_in, &len); sendto(sockfd, mesg, n, 0, (SA *)&cliaddr_in, len); A NULL address may be used in recvfrom() if we do not care about the address. Refer to udp_server.cpp for a complete example of UDP socket programming (a modified echo server). In-class Exercise: Write a udp_client.cpp program to communicate with udp_server.cpp. It should prompt the user for input, send the input to the server, and then read and display the response.
2: Application Layer 11 Chapter 2: Summary application architectures client-server P2P hybrid application service requirements: reliability, bandwidth, delay Internet transport service model connection-oriented, reliable: TCP unreliable, datagrams: UDP our study of network apps now complete! specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, Skype socket programming
2: Application Layer 12 Chapter 2: Summary typical request/reply message exchange: client requests info or service server responds with data, status code message formats: headers: fields giving info about data data: info being communicated Most importantly: learned about protocols Important themes: control vs. data msgs in-band, out-of-band centralized vs. decentralized stateless vs. stateful reliable vs. unreliable msg transfer “complexity at network edge”