Lectured Computer networks 1 - Chapter 2: Application Layer has contents: Principles of network applications, Web and HTTP, P2P applications, socket programming with TCP, socket programming with UDP,.... and other contents.
Computer Networks (Mạng Máy Tính 1) Lectured by: Dr Phạm Trần Vũ CuuDuongThanCong.com https://fb.com/tailieudientucntt Chapter Application Layer Computer Networking: A Top Down Approach , 5th edition Jim Kurose, Keith Ross Addison-Wesley, April 2009 All material copyright 1996-2009 J.F Kurose and K.W Ross, All Rights Reserved CuuDuongThanCong.com Introduction https://fb.com/tailieudientucntt 1-2 Chapter 2: Application layer 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail 2.6 P2P applications 2.7 Socket programming with TCP 2.8 Socket programming with UDP SMTP, POP3, IMAP 2.5 DNS CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt Chapter 2: Application Layer Our goals: conceptual, implementation aspects of network application protocols transport-layer service models client-server paradigm peer-to-peer paradigm CuuDuongThanCong.com learn about protocols by examining popular application-level protocols HTTP FTP SMTP / POP3 / IMAP DNS programming network applications socket API 2: Application Layer https://fb.com/tailieudientucntt Some network apps e-mail voice over IP web real-time video instant messaging remote login P2P file sharing conferencing grid computing cloud computing multi-user network games streaming stored video clips CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt Creating a network app write programs that run on (different) end systems communicate over network e.g., web server software communicates with browser software No need to write software for network-core devices application transport network data link physical application transport network data link physical Network-core devices not run user applications applications on end systems allows for rapid app development, propagation CuuDuongThanCong.com application transport network data link physical 2: Application Layer https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com 2.6 P2P applications 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server 2: Application Layer https://fb.com/tailieudientucntt Application architectures Client-server Peer-to-peer (P2P) Hybrid of client-server and P2P CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt Client-server architecture server: always-on host permanent IP address server farms for scaling clients: client/server CuuDuongThanCong.com communicate with server may be intermittently connected may have dynamic IP addresses not communicate directly with each other 2: Application Layer https://fb.com/tailieudientucntt Pure P2P architecture no always-on server arbitrary end systems directly communicate peer-peer peers are intermittently connected and change IP addresses Highly scalable but difficult to manage CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 10 Socket programming with TCP Example client-server app: 1) client reads line from standard input (inFromUser stream) , sends to server via socket (outToServer stream) 2) server reads line from socket 3) server converts line to uppercase, sends back to client 4) client reads, prints modified line from socket (inFromServer stream) CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 101 Example: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; Create input stream Create client socket, connect to server Create output stream attached to socket CuuDuongThanCong.com BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 2: Application Layer https://fb.com/tailieudientucntt 102 Example: Java client (TCP), cont Create input stream attached to socket BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Send line to server outToServer.writeBytes(sentence + '\n'); Read line from server modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 103 Example: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { Create welcoming socket at port 6789 Wait, on welcoming socket for contact by client Create input stream, attached to socket CuuDuongThanCong.com public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 2: Application Layer https://fb.com/tailieudientucntt 104 Example: Java server (TCP), cont Create output stream, attached to socket DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); Read in line from socket clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; Write out line to socket outToClient.writeBytes(capitalizedSentence); } } } CuuDuongThanCong.com End of while loop, loop back and wait for another client connection 2: Application Layer https://fb.com/tailieudientucntt 105 Chapter 2: Application layer 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail 2.6 P2P applications 2.7 Socket programming with TCP 2.8 Socket programming with UDP SMTP, POP3, IMAP 2.5 DNS CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 106 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 application viewpoint UDP provides unreliable transfer of groups of bytes (“datagrams”) between client and server UDP: transmitted data may be received out of order, or lost CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 107 Client/server socket interaction: UDP Server (running on hostid) create socket, port= x serverSocket = DatagramSocket() read datagram from serverSocket write reply to serverSocket specifying client address, port number CuuDuongThanCong.com Client create socket, clientSocket = DatagramSocket() Create datagram with server IP and port=x; send datagram via clientSocket read datagram from clientSocket close clientSocket 2: Application Layer https://fb.com/tailieudientucntt 108 Example: Java client (UDP) input stream Client process monitor inFromUser keyboard Process Input: receives packet (recall thatTCP received “byte stream”) UDP packet receivePacket packet (recall that TCP sent “byte stream”) sendPacket Output: sends client UDP clientSocket socket to network CuuDuongThanCong.com UDP packet UDP socket from network 2: Application Layer https://fb.com/tailieudientucntt 109 Example: Java client (UDP) import java.io.*; import java.net.*; Create input stream class UDPClient { public static void main(String args[]) throws Exception { Create client socket Translate hostname to IP address using DNS BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 110 Example: Java client (UDP), cont Create datagram with data-to-send, length, IP addr, port DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); Send datagram to server clientSocket.send(sendPacket); Read datagram from server clientSocket.receive(receivePacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 111 Example: Java server (UDP) import java.io.*; import java.net.*; Create datagram socket at port 9876 class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Create space for received datagram Receive datagram CuuDuongThanCong.com DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); 2: Application Layer https://fb.com/tailieudientucntt 112 Example: Java server (UDP), cont String sentence = new String(receivePacket.getData()); Get IP addr port #, of sender InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); Create datagram to send to client DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); Write out datagram to socket serverSocket.send(sendPacket); } } } CuuDuongThanCong.com End of while loop, loop back and wait for another datagram 2: Application Layer https://fb.com/tailieudientucntt 113 Chapter 2: Summary our study of network apps now complete! application architectures client-server P2P hybrid application service requirements: reliability, bandwidth, delay specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, Skype socket programming Internet transport service model connection-oriented, reliable: TCP unreliable, datagrams: UDP CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt 114 Chapter 2: Summary Most importantly: learned about protocols 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 CuuDuongThanCong.com 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” 2: Application Layer https://fb.com/tailieudientucntt 115 ... https://fb.com/tailieudientucntt 1 -2 Chapter 2: Application layer 2. 1 Principles of network applications 2. 2 Web and HTTP 2. 3 FTP 2. 4 Electronic Mail 2. 6 P2P applications 2. 7 Socket programming with TCP 2. 8... Client-server Peer-to-peer (P2P) Hybrid of client-server and P2P CuuDuongThanCong.com 2: Application Layer https://fb.com/tailieudientucntt Client-server architecture server: always-on host... https://fb.com/tailieudientucntt 20 Chapter 2: Application layer 2. 1 Principles of network applications app architectures app requirements 2. 2 Web and HTTP 2. 4 Electronic Mail SMTP, POP3, IMAP 2. 6 P2P applications