2020/2021 Computer network programming
Lec 10: Python Networking
April 5, 2021
Prof. Shinnazar Seytnazarov
Dept. of Control & Computer Engineering
Turin Polytechnic University in Tashkent
Introduction
❑ Network programming is a major use of Python
❑ Python standard library has wide support for
▪ network protocols, data encoding/decoding, and other
things you need to make it work
❑ Writing network programs in Python tends to be
substantially easier than in C/C++
Computer network programming 2
Python networking levels
❑ Python provides two levels of access to network
services.
❑ Low level : can access the basic socket support in the
underlying OS
▪ Connection-oriented (TCP)
▪ Connectionless (UDP)
❑ High level protocol level libraries for various
application-level network protocols
▪ FTP, HTTP, POP3, SMTP, …
Computer network programming 3
Internet protocol stack
❑ Aka TCP/IP protocol stack
▪ application: supporting network
applications application
• FTP, SMTP, HTTP
▪ transport: process-process data transfer transport
• TCP, UDP
▪ network: routing of datagrams from source
to destination network
• IP, routing protocols
▪ link: data transfer between neighboring link
network elements
• Ethernet (802.3), WiFi (802.11) physical
▪ physical: bits “on the wire”
Computer network programming 4
The problem
❑ Communication between computers
▪ It’s just sending/receiving bits
Computer network programming 5
Three Main Issues
❑ Addressing
▪ Specifying a remote computer and service
❑ Data transport
▪ Sending/receiving data (bits)
❑ Meaningful conversation
▪ Conversation in proper order
▪ Understand each other
Computer network programming 6
Networking Address
❑ Machines have a hostname and IP address
❑ Programs/services have port numbers
Computer network programming 7
Standard Ports
❑ Ports for common services are preassigned
▪ 21 FTP
▪ 22 SSH
▪ 23 Telnet
▪ 25 SMTP (Mail)
▪ 80 HTTP (Web)
▪ 110 POP3 (Mail)
▪ 119 NNTP (News)
▪ 443 HTTPS (Web)
❑ Other port numbers may just be randomly assigned
to programs by the OS
Computer network programming 8
Connections
❑ Connections
▪ Each endpoint of a network connection is always
represented by a host and port #
▪ In Python you write it out as a tuple (host, port)
• ("www.python.org", 80)
• ("205.172.13.4", 443)
▪ In almost all network programs you’ll write, you use this
convention to specify a network address
Computer network programming 9
Client/Server Concept
❑ Each endpoint is a running program
▪ Servers wait for incoming connections and provide a service
(e.g., web, mail, etc.)
▪ Clients make connections to servers
Computer network programming 10
Request/Response Cycle
❑ Most network programs use a request/response
model based on messages
▪ Client sends a request message (e.g., HTTP)
GET /index.html HTTP/1.0
▪ Server sends back a response message
HTTP/1.0 200 OK
Content-type: text/html
Content-length: 48823
<HTML>
...
▪ The exact format depends on the application
Computer network programming 11
Data Transport
❑ There are two basic types of communication
❑ Streams (TCP):
▪ Computers establish a connection with each other and
read/write data in a continuous stream of bytes like a file.
This is the most common.
❑ Datagrams (UDP):
▪ Computers send discrete packets (or messages ) to each
other. Each packet contains a collection of bytes, but each
packet is separate and self-contained.
Computer network programming 12
Sockets
❑ Programming abstraction for network code
▪ Socket: A communication endpoint
▪ Supported by socket library module
▪ Allows connections to be made and data to be transmitted
in either direction
Computer network programming 13
Python Socket Support
❑ Python supports socket networking through the
socket module.
▪ The module provides the BSD socket interface.
▪ The socket() function creates socket objects.
▪ Various functions(gethostbyname(), gethostbyaddr(), …) to
get comm related info.
▪ The send() / recv () function sends/receives data through the
socket.
Computer network programming 14
Any questions?
Computer network programming 15