TCP/IP Protocol Stack - PowerPoint PPT Presentation

About This Presentation
Title:

TCP/IP Protocol Stack

Description:

TCP/IP Protocol Stack TCP: Establish connection Maintain connection during the communication Release connection Reliable (Acknowledged, in order) Application – PowerPoint PPT presentation

Number of Views:105
Avg rating:3.0/5.0
Slides: 19
Provided by: meli51
Category:
Tags: tcp | protocol | stack | tcpip

less

Transcript and Presenter's Notes

Title: TCP/IP Protocol Stack


1
TCP/IP Protocol Stack
TCP Establish connection Maintain connection during the communication Release connection Reliable (Acknowledged, in order)
UDP No need to setup a link Independent packets Not reliable (no acknowledgement)
Application
Sockets
(Gate to network)
TCP
UDP
IP
Device Drivers
2
Programming with Sockets
  • Sockets are Berkeley software distribution UNIX
    interface to network protocols
  • Endpoint of communication, has a type and one
    associated process
  • Uses file system model (open-close-read-write)
  • Internet vs. Unix domain

3
Client-Server Architecture
request
Process request
client
response
Host www.vcu.edu Port 80
4
4 steps in programming a client
  • Open a socket.
  • Open an input and output stream to the socket.
  • Read from and write to the socket according to
    the server's protocol.
  • Clean up.

5
Socket in Java
  • Two important classes
  • Socket a normal socket as communication end
  • ServerSocket accept the incoming request
  • ServerSocket is an analogy to the custom service
    phone number, it will dispatch your call to a
    specialized staff--- normal Socket.

6
Client Socket Creation
Socket MyClientMyClient new Socket("Machine
name", PortNumber)
SOCKET DESCRIPTOR
port (a number) on which the server you want
the machine you are trying to open a connection
to
port numbers between 0 and 1,023 are reserved for
for standard services, such as email, FTP, and
HTTP. for your server, select one that is
greater than 1,023
7
Create Server Socket
  • If you are programming a server, then this is how
    you open a socket
  • ServerSocket MyServicetry    MyServerice
    new ServerSocket(PortNumber)                ca
    tch (IOException e)           
    System.out.println(e)        

8
Use ServerSocket listen, accept, and Create
connections from clients.
  • Socket clientSocket nulltry   
    serviceSocket MyService.accept()        catc
    h (IOException e)    System.out.println(e)

A blocking call, will return when a request arrive
9
Send Data to Socket at Client
  • PrintStream outputtry    output new
    PrintStream(MyClient.getOutputStream())
  • String inLhello
  • output.writeBytes(inL"\n")

10
Read data from Socket at Client
  • DataInputStream inputtry    input new
    DataInputStream(MyClient.getInputStream())
  • ..
  • String responseLine input.readLine()
  • System.out.println("Server "
    responseLine)

11
Send Data to Socket at Server
  • Use the serviceSocket returned from the accept()
    call.
  • PrintStream outputtry    output new
    PrintStream(serviceSocket.getOutputStream())outp
    ut.println(this is server reply)

12
Read Data From Socket at Server
  • Same as client case
  • DataInputStream inputtry       input new
    DataInputStream(serviceSocket.getInputStream())
  • String reqinput.readLine()

13
Close Socket Connection
  • On the server side
  • try    output.close()   input.close()  
    serviceSocket.close()    MyService.close()
    catch (IOException e)    System.out.println(e)
  • On the client side
  • try         output.close()       
    input.close()    MyClient.close() catch
    (IOException e)    System.out.println(e)

14
A Simple Echo Server
  • // listen and accept connections.// Open input
    and output streamstry            clientSocket
    echoServer.accept()           is
    new DataInputStream (clientSocket.getInputStream(
    )) os new PrintStream
    (clientSocket.getOutputStream())// As long as
    we receive data, echo that data back to the
    client.          while (true)             
    line is.readLine()            
    os.println(line)                      
    catch (IOException e)           
    System.out.println(e)            
  • import java.io.import java.net.public class
    echo3     public static void main(String
    args)         ServerSocket echoServer
    null        String line        DataInputStream
    is        PrintStream os        Socket
    clientSocket null        try           
    echoServer new ServerSocket(9999)           
         catch (IOException e)           
    System.out.println(e)          

15
A simple client
  • smtpSocket new Socket("128.172.167.167", 9998)
  • os new DataOutputStream(smtpSocket.getOutputStr
    eam())
  • is new DataInputStream(smtpSocket.getInputStrea
    m())
  • while (true)
  • inLd.readLine()
  • os.writeBytes(inL"\n")
  • if (inL.compareTo("quit")0) break
  • // keep on reading from/to the socket till we
    receive the "Ok" from SMTP,
  • // once we received that then we want to break.

responseLine is.readLine()
System.out.println("Server " responseLine)
responseLine is.readLine()
System.out.println("Server " responseLine)
responseLine is.readLine()
System.out.println("Server " responseLine)

16
Reference
  • Class ServerSocke
  • A server socket waits for requests to come in
    over the network. It performs some operation
    based on that request, and then possibly returns
    a result to the requester.
  • accept() Listens for a connection to be made to
    this socket and accepts it.
  • getInetAddress()
  • Returns the local address of this server socket.

17
Class Socket
  • This class implements client sockets (also called
    just "sockets"). A socket is an endpoint for
    communication between two machines.
  • Socket(InetAddress address, int port)
  • connect(SocketAddress endpoint)    Connects this
    socket to the server.
  • getPort()    Returns the remote port to which
    this socket is connected.
  • getLocalPort()           Returns the local port
    to which this socket is bound.
  • getInputStream()           Returns an input
    stream for this socket.
  • getOutputStream()           Returns an output
    stream for this socket.
  • getInetAddress()           Returns the address
    to which the socket is connected.
  • getLocalAddress()           Gets the local
    address to which the socket is bound.

18
Other Parameters in Socket
  • Buffer size
  • Incoming buffer size
  • Outgoing buffer size
  • Time out or not
  • Otherwise a bad read will block your browser for
    ever.
  • Status check
Write a Comment
User Comments (0)
About PowerShow.com