1 / 80

Chapter 22

Chapter 22. Internet Networking. CHAPTER GOALS. To understand the concept of sockets To learn how to send and receive data through sockets To implement network clients and servers To communicate with web servers and server-side applications through Hypertext Transfer Protocol (HTTP).

nirav
Download Presentation

Chapter 22

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 22 Internet Networking

  2. CHAPTER GOALS • To understand the concept of sockets • To learn how to send and receive data through sockets • To implement network clients and servers • To communicate with web servers and server-side applications through Hypertext Transfer Protocol (HTTP)

  3. Internet • A worldwide collection of networks, routing equipment, and computers • Uses a common set of protocols to define how the parties will interact with each other • Many different services are offered over the Internet • The World Wide Web • Email

  4. Physical Media • Network cabling • Electrical impulses represent the information flow • Telephone wires using a modem • Data travels encoded as tones • Air in a wireless network • Signals are sent by modulating radio frequencies

  5. Data Transmission • Data transmission consists of sending and receiving streams of zeros and ones along the network connection

  6. Two Types of Information • Application data • consists of the information one computer wants to send to another • Network protocol data • describes how to reach the intended computer • describes how to check for errors in the transmission

  7. previous | start | next File Purse.java Network Protocol • Local area network protocols • Microsoft Networking • Novell NetWare • AppleTalk • Protocol for connecting local area networks • Internet Protocol (IP) previous | start | next

  8. Sending Data from A to B across the Internet • A is you home computer • It is connected by phone lines to an Internet Service Provider (ISP) • The ISP is connected to an Internet Access Point • B is on an local area network at XYZ Computers. • XYZ has its own Internet Access Point • The Internet Access Points are connected by a complex collection of pathways (the Internet) • Over these pathways a message sent from one access point can eventually reach any access point

  9. Two Computers Communicating across the Internet

  10. Destination Address • Data must be marked with a destination address • In IP, addresses are denoted by a sequence of four numbers o Each is one byte (a number between 0 and 255) o For example 130.65.86.66 • To send data to B, A needs to know B's Internet address o A includes that address in the protocol portion when sending the data

  11. Domain Naming Service • In addition to an IP address, computers can have an easy-to-remenber domain name • For example, java.sun.com • A service called a Domain Naming Service (DNS) translates from domain name to Internet address • When A wants to request data from a domain name: • It asks the DNS for the numeric Internet Address • It includes the numeric address with the request for data

  12. Packets • IP breaks large chunks of data up into more manageable packets • Each packet is delivered separately • Each packet in a larger transmission may be sent by a different route. • Packets are numbered • The recipient reassembles the data

  13. Transmission Control Protocol • Internet Protocol (IP) does not notify the sender if data is lost or garbled • This is the job of a higher level protocol Transmission Control Protocol (TCP) • The most commonly used Internet services use TCP with IP (TCP/IP)

  14. TCP's Job •  Attempt to deliver the data • Try again if there are failures • Notify the sender whether or not the attempt was successful

  15. previous | start | next Port Numbers • One computer can offer multiple services over the Internet o For example, both a web server program and an email server program • When data are sent to that computer, they need to indicate which program is to receive the data • IP uses port numbers for this previous | start | next

  16. A port number is an integer between 0 and 65,535 • The sending program must know the port number of the receiving program • This number is included in the transmitted data Port Numbers

  17. Contents of TCP Packet • The Internet address of the recipient • The port number of the recipient • Internet address of the sender • The port number of the sender

  18. The OSI Reference Model

  19. Application Level Protocol • TCP/IP mechanism establishes an Internet connection between two ports on two computers. • Each Internet application has its own application protocol • This application protocol describes how data for that application are transmitted

  20. Hypertext Transfer Protocol • The application protocol used by the World Wide Web is Hypertext Transfer Protocol (HTTP) • A web address is called a Uniform Resource Locator (URL) • You type a URL into the address window of your browser • o For example, http://java.sun.com/index.html

  21. Browser Steps • You type http://java.sun.com/index.html into the browser's address • The browser examines the part of the URL between the double slash and the first single slash • o In this case: java.sun.com • o This identifies the computer to which you want to connect • o Because it contains letters, this part of the URL is a domain name • The browser sends a quest to a DNS server to obtain the Internet address of the computer with the domain name java.sun.com

  22. Browser Steps • From the http: prefix to the URL, the browser decides that the protocol you want to use is HTTP • HTTP uses port 80 by default • The browser establishes a TCP/IP connection to port 80 at the Internet address determined above • The browser deduces from the /index.html that you want to see the file /index.html • It sends this request formatted as an HTTP command through the established connection GET/index.html HTTP/1.0 a blank line

  23. Browser Steps • The web server running on the computer whose Internet Address was obtained above receives the request • It decodes the request • It fetches the file /index.html • It sends the file back to the browser

  24. Telnet • Telnet program allows you to o Type characters to send to a remote computer and o View the characters that the remote computer sends back • It is a useful tool to establish test connections with servers • You can imitate the browser connection by using a dialog box or typing at the command line telnet java.sun.com 80

  25. Telnet • After Telnet starts, type the following without using backspace • GET /index.html HTTP/1.0 • then hit enter twice • The server responds to the request with the file • Telnet is not a browser • It does not understand HTML tags so it just displays everything it was sent

  26. Web Server Response in Telnet

  27. HTTP Commands

  28. A socket is an object that encapsulates a TCP/IP connection • There is a socket on both ends of a connection • Syntax to create a socket in a Java program • Socket s = new Socket(hostname, portnumber); • Code to connect to the HTTP port of server, java.sun.com • final int HTTP_PORT = 80; • Socket s = new Socket("java.sun.com", HTTP_PORT); • If it can't find the host, the Socket constructor throws an UnknownHostException Client Program - Sockets

  29. Use the input and output streams attached to the socket s to communicate with the other endpoint of the connection • Code to obtain the input and output streams InputStream in = s.getInputStream(); • OutputStream out = s.getOutputStream(); • When you send data to the output stream out, the socket forwards them to the server • The socket catches the server's response and you can read it through the input streamin • When you are done communicating with the server, close the socket • s.close(); Client Program - Input and Output Streams

  30. Client and Server Sockets

  31. InputStream and OutputStream send and receive bytes • To send and receive text, get a reader and a writer BufferedReader reader = new BufferedReader(new InputStreamReader(in)); • PrintWriter writer = new PrintWriter(out); • A PrintWriter buffers the characters and only sends when the buffer is full • When sending a command, you want the whole command to be sent now so flush the buffer manually writer.print(command); • writer.flush(); Client Program - Readers and Writers

  32. This program lets you retrieve any item from a web server • You specify the host and item from the command line • For example: • java WebGet java.sun.com index.html Client Program - WebGet

  33. File WebGet.java 01: import java.io.BufferedReader; 02: import java.io.InputStream; 03: import java.io.InputStreamReader; 04: import java.io.IOException; 05: import java.io.OutputStream; 06: import java.io.PrintWriter; 07: import java.net.Socket; 08: 09: /** 10: This program demonstrates how to use a socket to communicate 11: with a web server. Supply the name of the host and the 12: resource on the command-line, for example 13: java WebGet java.sun.com index.html 14: */ 15: public class WebGet 16: { 17: public static void main(String[] args) throws IOException

  34. 18: { 19: // get command-line arguments 20: 21: if (args.length != 2) 22: { 23: System.out.println("usage: java WebGet host resource"); 24: System.exit(0); 25: } 26: String host = args[0]; 27: String resource = args[1]; 28: 29: // open socket 30: 31: final int HTTP_PORT = 80; 32: Socket s = new Socket(host, HTTP_PORT); 33: 34: // get streams 35: 36: InputStream in = s.getInputStream(); 37: OutputStream out = s.getOutputStream();

  35. 38: 39: // turn streams into readers and writers 40: 41: BufferedReader reader = new BufferedReader( 42: new InputStreamReader(in)); 43: PrintWriter writer = new PrintWriter(out); 44: 45: // send command 46: 47: String command = "GET /" + resource + " HTTP/1.0\n\n"; 48: writer.print(command); 49: writer.flush(); 50: 51: // read server response 52: 53: boolean done = false; 54: while (!done) 55: { 56: String input = reader.readLine(); 57: if (input == null) done = true;

  36. 58: else System.out.println(input); 59: } 60: 61: // always close the socket at the end 62: 63: s.close(); 64: } 65: }

  37. This is a server program that enable clients to manage a set of bank accounts in a bank • When you develop a server application, you need some application-level protocol • The client can use this protocol to interact with the server • A simple bank access protocol is described on the next slide A Server Program

  38. Simple Bank Access Protocol

  39. A Server Program • The server waits for the client to connect on a certain port. We choose 8888 • To listen for incoming connections, use a server socket • To construct a server socket, provide the port number • ServerSocket server = new ServerSocket(8888); • Use theacceptmethod to wait for client connection and obtain a socket • Socket s = server.accept();

  40. Server Program - Readers and Writers • Get the input and output streams connected to the socket s • Create a reader and writer BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter( s.getOutputStream()); • The server reads a command from theclient String line = in.readLine();

  41. Server Program • The socket s is closed if: o The string received by the client equals QUIT command o Or it isnull o Anullstring means the client has disconnected

  42. Server Program • Use a StringTokenizer to analyze the client command string • The first token is the command • The second token is the account number

  43. Server Program • If the command is DEPOSIT, deposit to the given account • If the command is WITHDRAW, withdraw from the given account • Then send the account number and new balance to the client • out.println(n + " " + bank.getBalance(account));

  44. Server Program • The server program never stops • When you are done running the sever, kill it.

  45. To Try Out Server Program • Run the server • Use Telnet to connect to localhost , port number 8888 • Start typing commands

  46. Using the Telnet Program to Connect to the BankServer

  47. import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** A server that executes the Simple Bank Access Protocol. */ public class BankServer { public static void main(String[] args ) throws IOException { final int ACCOUNTS_LENGTH = 10; Bank bank = new Bank(ACCOUNTS_LENGTH); final int SBAP_PORT = 8888; ServerSocket server = new ServerSocket(SBAP_PORT); System.out.println("Waiting for clients to connect..."); import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** A server that executes the Simple Bank Access Protocol. */ public class BankServer { public static void main(String[] args ) throws IOException { final int ACCOUNTS_LENGTH = 10; Bank bank = new Bank(ACCOUNTS_LENGTH); final int SBAP_PORT = 8888; ServerSocket server = new ServerSocket(SBAP_PORT); System.out.println("Waiting for clients to connect..."); File BankServer.java 01: import java.io.IOException; 02: import java.net.ServerSocket; 03: import java.net.Socket; 04: 05: /** 06: A server that executes the Simple Bank Access Protocol. 07: */ 08: public class BankServer 09: { 10: public static void main(String[] args ) throws IOException 11: { 12: final int ACCOUNTS_LENGTH = 10; 13: Bank bank = new Bank(ACCOUNTS_LENGTH); 14: final int SBAP_PORT = 8888; 15: ServerSocket server = new ServerSocket(SBAP_PORT); 16: System.out.println("Waiting for clients to connect..."); 17:

  48. 18: while (true) 19: { 20: Socket s = server.accept(); 21: 22: BankService service = new BankService(s, bank); 23: service.doService(); 24: s.close(); 25: } 26: } 27: } 28: 29: 30: 31: 32: 33: 34: 35:

  49. File BankService.java 01: import java.io.BufferedReader; 02: import java.io.InputStream; 03: import java.io.InputStreamReader; 04: import java.io.IOException; 05: import java.io.OutputStream; 06: import java.io.PrintWriter; 07: import java.net.Socket; 08: import java.util.StringTokenizer; 09: 10: /** 11: Executes Simple Bank Access Protocol commands 12: from a socket. 13: */ 14: public class BankService 15: {

  50. 16: /** 17: Constructs a service object that processes commands 18: from a socket for a bank. 19: @param aSocket the socket 20: @param aBank the bank 21: */ 22: public BankService(Socket aSocket, Bank aBank) 23: { 24: s = aSocket; 25: bank = aBank; 26: } 27: 28: /** 29: Executes all commands until the QUIT command or the 30: end of input. 31: */ 32: public void doService() throws IOException 33: { 34: BufferedReader in = new BufferedReader( 35: new InputStreamReader(s.getInputStream()));

More Related