15
Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Embed Size (px)

Citation preview

Page 1: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Introduction to Network Programming with Sockets

Network Programming

Kansas State University at Salina

Page 2: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Protocols

Rules that determine how communication is achieved.

Human protocols: vocal cords to ears, sign language to eyes, English, French, Spanish…

Layers of protocols – may replace any protocol with another functionally equivalent.

Network protocols – Ethernet, IP, TCP, UDP, HTTP, SMTP, etc…

Page 3: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

TCP/IP

Transmission Control Protocol/Internet Protocol (TCP/IP) Suite of small,

specialized protocols called subprotocols

OSI Model TCP/IP

TCP/IP compared to the OSI Model

Page 4: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Internet Protocol (IP)

IP datagram IP portion of

TCP/IP frame that acts as an envelope for data

Contains information necessary for routers to transfer data between subnets

Components of an IP datagram

Page 5: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Transport Control Protocol (TCP)

TCP provides reliable end to end communication.

A TCP segment

Page 6: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

User Datagram Protocol (UDP)

Connectionless transport service Only four fields in UDP header (10 in TCP

header) Unreliable Used for broadcast applications and

voice/video data.

Page 7: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Getting Data from Source to Destination

IP address – IP header Protocol (TCP or UDP) – IP header Port – TCP or UDP protocol

A port is a rendezvous point between TCP and the application.

A socket allows the application to read from and write to the port.

Page 8: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Postal Mail Analogy

• IP gets the data to the right place.

• TCP puts the data in the right port (mail box).

• The socket goes and gets the data from the port (mail box) and delivers it to the application.

Page 9: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Sockets

API for applications to read and write data from TCP/IP or UDP/IP

File abstraction (open, read, write, close) Abstract operating system resource. First introduced with BSD UNIX De-facto standard API for TCP/IP

Page 10: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Ports

Well Known Ports are in the range of 0 to 1023 only the operating system or an Administrator of the system can access

Registered Ports are in the range of 1024 to 49151.

Dynamic and/or Private Ports are those from 49152 through 65535 and are open for use without restriction

Page 11: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

The Socket API Commands

See example session Initialize

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Will always use above options. First option says it is IP version 4 (another value for IP

version 6), in UNIX it can also be set to a named pipe. Second option says that it will connect to a TCP port. These names are the original ones used.

Page 12: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Socket API (cont.) Server Side sock.bind(( hostname, port ))

Hostname can be one of: socket.gethostname(), ‘localhost’ or the machine host name as a string.

The port should usually be between 1024 to 49151.

Can not bind to a port with another socket bound to it.

Note the double parenthesis, bind() takes a single tuple argument. The extra set of parenthesis makes the two values a tuple.

Page 13: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Socket API (cont.) Server Side sock.listen(n)

Tells the socket to listen for incoming connections n here is an integer for number of new

connections to hold in queue. For now, we can set n to 1.

(newsock, address) = ss.accept() Wait for a connection – blocking Returns a tuple of a new allocated socket and the

IP address and port number of the client. The address is a tuple.

A new socket is allocated because a server will usually want to continue listening to the old socket.

Page 14: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Socket API (cont.) Client Side sock.connect(( hostname, portNumber ))

Connect to a server that is listening for connections

For most exercises in this class, just set hostname to ‘localhost’.

portNumber should match the port number that the sever was bound to.

A blocking statement, until the connection is established.

Page 15: Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina

Socket API (cont.)

message = sock.recv(N) Read a message from the socket and return a string. N is the maximum message size in characters. Blocking

sock.send( msg ) Send a string messages (msg) over an established socket

connection. sock.close()

Always a good idea to close sockets when finished with them.