SPL/2010 Protocols 1. SPL/2010 Application Level Protocol Design ● atomic units used by protocol: "messages" ● encoding ● reusable, protocol independent,

Slides:



Advertisements
Similar presentations
Categories of I/O Devices
Advertisements

CCNA – Network Fundamentals
Transport Layer – TCP (Part2) Dr. Sanjay P. Ahuja, Ph.D. Fidelity National Financial Distinguished Professor of CIS School of Computing, UNF.
Network Certification Preparation. Module - 1 Communication methods OSI reference model and layered communication TCP/IP model TCP and UDP IP addressing.
OSI MODEL Maninder Kaur
Tam Vu Remote Procedure Call CISC 879 – Spring 03 Tam Vu March 06, 03.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Network Services Networking for Home and Small Businesses – Chapter 6.
28.2 Functionality Application Software Provides Applications supply the high-level services that user access, and determine how users perceive the capabilities.
Internet Networking Spring 2006 Tutorial 12 Web Caching Protocols ICP, CARP.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
1 Java Networking – Part I CS , Spring 2008/9.
OSI Model.
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
OSI Model 7 Layers 7. Application Layer 6. Presentation Layer
WXES2106 Network Technology Semester /2005 Chapter 8 Intermediate TCP CCNA2: Module 10.
TCP: Software for Reliable Communication. Spring 2002Computer Networks Applications Internet: a Collection of Disparate Networks Different goals: Speed,
VSP Video Station Protocol Presented by : Mittelman Dana Ben-Hamo Revital Ariel Tal Instructor : Sela Guy Presented by : Mittelman Dana Ben-Hamo Revital.
The OSI Model A layered framework for the design of network systems that allows communication across all types of computer systems regardless of their.
Fundamentals of Python: From First Programs Through Data Structures
Gursharan Singh Tatla Transport Layer 16-May
OSI Model. Open Systems Interconnection (OSI) is a set of internationally recognized, non-proprietary standards for networking and for operating system.
Electronic Mail (SMTP, POP, IMAP, MIME)
Process-to-Process Delivery:
Presentation on Osi & TCP/IP MODEL
1 Chapter Client-Server Interaction. 2 Functionality  Transport layer and layers below  Basic communication  Reliability  Application layer.
1 Semester 2 Module 10 Intermediate TCP/IP Yuda college of business James Chen
Internet Addresses. Universal Identifiers Universal Communication Service - Communication system which allows any host to communicate with any other host.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Network Services Networking for Home and Small Businesses – Chapter 6.
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
 An ISO is a multi national body dedicated to worldwide agreement on international standards.  An ISO standard that covers all aspects of network communications.
FTP Client Application CSC 8560 Brian Jorgage 4/27/2004.
ICOM 6115©Manuel Rodriguez-Martinez ICOM 6115 – Computer Networks and the WWW Manuel Rodriguez-Martinez, Ph.D. Lecture 26.
TCP1 Transmission Control Protocol (TCP). TCP2 Outline Transmission Control Protocol.
Protocols Rules governing the communication process, the language of the deal between the devices, must reflect Layers protocols define format, order of.
User Datagram Protocol (UDP) Chapter 11. Know TCP/IP transfers datagrams around Forwarded based on destination’s IP address Forwarded based on destination’s.
Dr. John P. Abraham Professor University of Texas Pan American Internet Applications and Network Programming.
MODULE I NETWORKING CONCEPTS.
© Lethbridge/Laganière 2005 Chap. 3: Basing Development on Reusable Technology The Client-Server Architecture A distributed system is a system in.
Practical Session 12 Reactor Pattern. Disadvantages of Thread per Client It's wasteful – Creating a new Thread is relatively expensive. – Each thread.
1 Client-Server Interaction. 2 Functionality Transport layer and layers below –Basic communication –Reliability Application layer –Abstractions Files.
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
JS (Java Servlets). Internet evolution [1] The internet Internet started of as a static content dispersal and delivery mechanism, where files residing.
Individual Project 1 Sarah Pritchard. Fran, a customer of your company, would like to visit your company’s website from her home computer… How does your.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
CSI 3125, Preliminaries, page 1 Networking. CSI 3125, Preliminaries, page 2 Networking A network represents interconnection of computers that is capable.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Network Architecture Protocol hierarchies Design Issues for the layers
Reading TCP/IP Protocol. Training target: Read the following reading materials and use the reading skills mentioned in the passages above. You may also.
4343 X2 – The Transport Layer Tanenbaum Ch.6.
1 Kyung Hee University Chapter 11 User Datagram Protocol.
TCP/IP1 Address Resolution Protocol Internet uses IP address to recognize a computer. But IP address needs to be translated to physical address (NIC).
SPL/2010 Reactor Design Pattern 1. SPL/2010 Overview ● blocking sockets - impact on server scalability. ● non-blocking IO in Java - java.niopackage ●
Distributed Computing & Embedded Systems Chapter 4: Remote Method Invocation Dr. Umair Ali Khan.
3. END-TO-END PROTOCOLS (PART 1) Rocky K. C. Chang Department of Computing The Hong Kong Polytechnic University 22 March
5. End-to-end protocols (part 1)
Chapter 3 Internet Applications and Network Programming
Module 4 Remote Login.
Chapter 14 User Datagram Program (UDP)
File Transfer and access
Application Protocols
Chapter 14 User Datagram Protocol (UDP)
Lecture 11 Socket Programming.
Process-to-Process Delivery:
CS4470 Computer Networking Protocols
William Stallings Data and Computer Communications
Application Protocols
OSI Reference Model Unit II
Process-to-Process Delivery: UDP, TCP
OSI Model 7 Layers 7. Application Layer 6. Presentation Layer
Exceptions and networking
Presentation transcript:

SPL/2010 Protocols 1

SPL/2010 Application Level Protocol Design ● atomic units used by protocol: "messages" ● encoding ● reusable, protocol independent, TCP server, ● LinePrinting protocol implementation 2

SPL/2010 Protocol Definition ● set of rules, governing the communication details between two parties (processes) ● different forms and levels; ● protocols for exchange bits across a wire ● protocols governing administration of super computers. ● application level protocols - define interaction between computer applications 3

SPL/2010 Protocol Communication Rules ● syntax : how do we phrase the information we exchange. ● semantics : what actions/response for information received. ● synchronization : whose turn it is to speak (given the above defined semantics). 4

SPL/2010 Protocols Skeleton ● all protocols follow a simple skeleton. ● exchange information using messages, which define the syntax. ● difference between protocols: syntax used for messages, and semantics of protocol. 5

SPL/2010 Protocol Initialization (hand-shake) ● communication begins when party sends initiation message to other party. ● synchronization - each party sends one message in a round robin fashion. 6

SPL/2010 TCP 3-Way Handshake ● Establish/ tear down TCP socket connections ● computers attempting to communicate can negotiate network TCP socket connection ● both ends can initiate and negotiate separate TCP socket connections at the same time 7

SPL/2010 TCP 3-Way Handshake (SYN,SYN-ACK,ACK) 8

SPL/2010 ● A sends a SYNchronize packet to B ● B receives A's SYN ● B sends a SYNchronize-ACKnowledgement ● A receives B's SYN-ACK ● A sends ACKnowledge ● B receives ACK. ● TCP socket connection is ESTABLISHED. 9

SPL/2010 HTTP (Hyper Text Transfer Protocol) ● exchanging special text files over the network. ● brief (not complete) protocol description: ● synchronization: client initiates connection, sends single request, receive reply from server. ● syntax: text based, see rfc2616. ● semantics: server either sends to the client the page asked for, or returns an error. 10

SPL/2010 What next? ● syntax and semantics aspects of protocols. ● assume: synchronization works in round robin, i.e., each party sends one message at a time. 11

SPL/2010 Message Format ● Protocol syntax: message is the atomic unit of data exchanged throughout the protocol. ● message = letter ● concentrate on the delivery mechanism. 12

SPL/2010 Framing ● streaming protocols - TCP ● separate between different messages ● all messages are sent on the same stream, one after the other, ● receiver should distinguish between different messages. ● Solution: message framing - taking the content of the message, and encapsulating it in a frame (letter - envelop). 13

SPL/2010 Framing – what is it good for? ● sender and receiver agree on the framing method beforehand ● framing is part of message format/protocol ● enable receiver to discover in a stream of bytes where message starts/ends 14

SPL/2010 Framing – how? ● Simple framing protocol for strings: ● special FRAMING character (e.g., a line break). ● each message is framed by two FRAMING characters at beginning and end. ● message will not contain a FRAMING character ● framing protocol by adding a special tag at start and end. ● message can be framed using / strings. ● avoid having / in message body. 15

SPL/2010 Framing – how? ● framing protocol by employing a variable length message format ● special tag to mark start of a frame ● message contains information on message's length 16

SPL/

SPL/2010 Textual data ● Many protocols exchange data in textual form ● strings of characters, in character encoding, (UTF-8) ● very easy to document/debug - print messages ● Limitation: difficult to send non-textual data. – how do we send a picture? video? audio file? 18

SPL/2010 Binary Data ● non-textual data is called binary data. ● all data is eventually encoded in "binary" format, as a sequence of bits ● "binary data" = data that cannot be encoded as a readable string of characters? 19

SPL/2010 Binary Data ● Sending binary data in raw binary format in a stream protocol is dangerous. ● may contain any byte sequence, may corrupt framing protocol. ● Devising a variable length message format. 20

SPL/2010 Base64 Encoding Binary Data encode binary data using encoding algorithm ● Base64 encoding - encodes binary data into a string ● Convert every 2 bytes sequence from the binary data into 3 ASCII characters. ● used by many "standard" protocols ( to encode file attachments of any type of data). 21

SPL/2010 Encoding using Poco ● In C++, Poco library includes module for encoding/decoding byte arrays into/from Base64 encoded ASCII data. ● functionality is modeled as a stream "filter" ● performs encode/decode on all data flowing through the stream ● classes Base64Encoder / Base64Decoder. 22

SPL/2010 Encoding in Java ● iharder library. ● modeled as stream filters (wrappers around Input/Output Java streams). 23

SPL/2010 Encoding binary data ● advantage: any stream of bytes can be "framed" as ASCII data regardless of character encoding used by protocol. ● disadvantage - size of the message, increased by 50%. ● (we will use UTF-8 encoding scheme) 24

SPL/2010 Protocol and Server Separation 25

SPL/2010 Protocol and Server Separation code reuse is one of our design goals! ● generic implementation of server, which handles all communication details ● generic protocol interface: ● handles incoming messages ● implements protocol's semantics ● generates the reply messages. 26

SPL/2010 Protocol-Server Separation: protocol object ● protocol object is in charge of implementing expected behavior of our server: ● What actions should be performed upon the arrival of a request. ● requests may be correlated one to another, meaning protocol should save an appropriate state per client. 27

SPL/2010 Example: authenticated session ● protocols require user authentication (login), ● only authorized users can perform certain actions. ● protocol is statefull - serving requests of client can be in at least 2 distinct states: 1. authenticated (user has already logged in) 2. non-authenticated (user has not provided login). ● by state of the protocol object, behavior of protocol object is different 28

SPL/2010 Protocol and Server Separation separate different tasks server must perform. ● Accept new connections from new clients. ● Receive new bytes from connected clients. ● Parse incoming bytes from clients into messages ("de-serialization" / "unframing"). ● Dispatch message to right method on server side to execute requested operation. ● Send back an answer to a connected client after an action has been executed. 29

SPL/2010 a software architecture that separates tasks into separate interfaces 30

SPL/2010 ● The key participants in this architecture are: ● Tokenizer - syntax, tokenizing a stream of data into messages. ● MessagingProtocol – semantics, handling received messages and generating responses. 31

SPL/2010 ● implementations of interfaces: ● generic server ● MessageTokenizer ● LinePrinitingProtocol, 32

SPL/2010 Interfaces ● implement separation between protocol and server. Define: 1. message (can be encoded in various ways: Base64, XML, text). ● Our messages encoded as plain UTF-8 text. 2. framing of messages - delimiters between messages sent in stream. 3. protocol interface which handles each individual message. 33

SPL/2010 ConnectionHandler ● server accepted new connection from client. ● server creates ConnectionHandler - will handle all incoming messages from this client. ● ConnectionHandler - maintains state of connection for specific client ● Ex: user perform "login" - ConnectionHandler object remembers this in its state 34

SPL/2010 ConnectionHandler - Socket ● ConnectionHandler has access to Socket connecting server to client process. ● TCP server - Socket connection is viewed as a pair of InputStream and OutputStream. ● streams of bytes – client and the server exchange a bunch of bytes. 35

SPL/2010 Tokenizer - in charge of parsing a stream of bytes into a stream of messages ● Tokenizer interface: filter between Socket input stream and protocol ● Protocol accesses the input stream only through the tokenizer. ● instead of "seeing" a stream of bytes, it sees a stream of messages. ● Many libraries model such "filters" on streams as wrappers around a lower-level stream. ● OutputStreamWriter - wraps stream and performs encoding from one character encoding to another ● BufferedReader - adds a layer of buffering around a non-buffered input stream. 36

SPL/2010 Tokenizer ● splits incoming bytes from the socket into messages. ● For simplicity, we model the Tokenizer as an iterator… ● protocol will see the input stream from the socket as an iterator over messages (instead of an iterator over bytes). 37

SPL/

SPL/2010 Messaging Protocol ● protocol interface ● wraps together: socket and Tokenizer ● Pass incoming messages to MessagingProtocol - execute action requested by client. ● look at the message and decide on action ● decision may depend on the state ● Once the action is performed - answer back from the MessagingProtocol. 39

SPL/

SPL/2010 ● We use a String to pass data from Tokenizer to Protocol, and back from Protocol. ● Serialization/Deserialization (encode/decode parameters to/from Strings) performed by Protocol - and not by the Tokenizer. ● Tokenizer is only in charge of deframing (split bytes into messages). 41

SPL/2010 Implementations 42

SPL/2010 Connection Handler ● active object: ● handles one connection to one client for the whole period during which the client is connected ● (from the moment the connection is accepted, until one of the sides decides to close it). ● modeled as a Runnable class. 43

SPL/2010 Connection Handler ● holds references to: ● TCP socket connected to the client, ● Tokenizer ● an instance of the MessagingProtocol. 44

SPL/2010 ● connection handler is generic, works with any implementation of a messaging protocol. ● assumes data exchanged between client and server is in form of encoded strings ● encoder passed to constructor as an Encoder interface. 45

SPL/

SPL/2010 What’s left? ● only need to implement: ● specific framing handler (tokenizer) ● specific protocol we wish to use. ● continue our line printing example… 47

SPL/2010 Message Tokenizer ● we use a framing method based on a single character delimiter. ● assume stream of messages, delimited by FRAMING = we will use the character '\0‘ 48

SPL/

SPL/2010 ● important part is connection termination and exception handling at any moment ● most of the code in low-level input/output and socket manipulation relates to error handling and connection termination. 50

SPL/2010 Line Printing Protocol ● implement a specific protocol on the server side. ● when receives a message, prints it on the server side screen and adds a line number. ● line number is the state of the protocol. ● each client has its own line number. Two clients connected at the same time will see each one its own version of the line number. ● when protocol processes a message, - sends back message to client: ": printed" + date-time value when the message was processed (on the server side). ● timestamp acknowledgments. 51

SPL/

SPL/2010 A Client ● before ConnectionHandler, review code of compatible TCP client for protocol we have just described. ● no new idea - it is similar to the TCP client we have reviewed in the previous section. 53

SPL/

SPL/2010 Concurrency Models of TCP Servers Server quality criteria: ● Scalability: capability to server a large number of concurrent clients. ● Low accept latency: acceptance wait time ● Low reply latency: reply wait time after message received. ● High efficiency: use little resources on the server (RAM, number of threads CPU usage). 55

SPL/2010 ● model the concurrency model of the server, ● define interface which controls concurrency application of each connection handler 56

SPL/2010 ● Given: ● Encoder ● Tokenizer ● Protocol ● ServerConcurrencyModel defined the MessagingServer 57

SPL/

SPL/2010 ● To obtain good quality, a TCP server will most often use multiple threads. ● 3 simple models of concurrency servers ● 3 implementations of preparing the ServerConcurrencyModel interface 59

SPL/2010 Server Model 1: Single Thread ● 1 thread for; ● accepting a new client ● dealing requests, by applying run method of the passive ConnectionHandler object. 60

SPL/

SPL/2010 Single Thread Model: Quality ● no scalability: at any given moment, it can serve at most one client. ● high accept latency: a second client must wait until first client disconnects ● low reply latency: all resources are concentrated on serving one client. ● Good efficiency: server uses exactly the resources needed to serve one client 62

SPL/2010 When is model appropriate? ● time to process a full connection from one client is guaranteed to remain small. ● Example: server provides date and time value on the server machine. ● sends one string to the client then disconnects. 63

SPL/2010 Server Model 2: Thread per Client ● assigns a new thread, for each connected client, by invoking the 'start' method over the runnable ConnectionHandler object. 64

SPL/

SPL/2010 Model Quality: Scalability ● server can serve several concurrent clients, up to max threads running in the process. ● RAM of the host is used - each thread allocates a stack and thus consumes RAM ● Approx threads become active in a single process. ● process does not defend itself – keeps creating new threads - dangerous for the host. 66

SPL/2010 Model Quality: Latency ● Low accept latency: time from one accept to the next ~ time to create a new thread – ● short compared to delay in incoming client connections. ● Reply latency: resources of the server are spread among concurrent connections. ● reasonable number of active connections (~hundreds), load requested relatively low in CPU and RAM, 67

SPL/2010 Model Quality: Efficiency ● Low efficiency: server creates full thread per connection, – connection may be bound to Input/Output operations. – ConnectionHandler thread will be blocked waiting for IO,,still use the resources of the thread (RAM and Thread). ● Reactor architecture … 68

SPL/2010 Server Model 3: Constant Number of Threads ● constant number of 10 threads (given by the Executor interface of Java) ● adding runnable ConnectionHandler object to task queue of a thread pool executor 69

SPL/2010 Model Quality ● avoids server causing host crash when too many clients connect at the same time ● up to N concurrent client connections - server behaves as "thread-per-connection" ● above N, accept latency will grow ● scalability is limited to amount of concurrent connections we believe we can support. 70