make sure to schedule some time with me to do a bit of project brainstorming do the IRB training bring me a copy of the certificate a lil bit o networking anthony tang build a distributed whiteboard ID: 781773
Download The PPT/PDF document "administrative fun thing" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
administrative fun thing
make sure to schedule some time with me to do a bit of project brainstormingdo the IRB training bring me a copy of the certificate
Slide2a lil
’ bit ‘o’ networkinganthony tang
Slide3build a distributed whiteboard
goal: build a simple distributed applicationassignment #1
Slide4build a distributed whiteboard
goal: build a simple distributed applicationassignment #1
Slide5without taking away all of the fun…
establish a data connection (topology?)get input from user (ui
?)
send data (granularity? formatting?)
receive data (
ui
presentation?)
break the data connection
assignment #1
Slide6constraints
language: whatever you like; suggestion: C#, Java, or Python*use either: raw sockets OR udpthe point is to do some raw network programming
no networking toolkits
assignment #1
* if you’re not sure, ask me early
Slide7fun bits
2.5% each!see the assignment pagesome examples: support
telepointers
support the late joiner
support >2 clients
assignment #1
Slide8Slide9on deck
*distributed application terminologytopologies*networking 101
*network programming: sockets and
udp
messaging
*based on:
http
://hcc2.cc.gatech.edu/documents/107_Edwards_week6.pdf
Slide10assumptions
you have seen some of this beforeyou kind of have a feel for most of this stuffthis is mostly refresher
* but I could be wrong; ask for clarification when needed
Slide11protocol
rules that facilitate information exchange “picard to
riker
”
“
riker
here”
…
“
picard out” (* or another radio protocol)network applications communicate in very specific ways (certain messages, known formats)
terminology
Slide12server
process that waits for incoming connections, and provides a service restaurant waiter, for example
web server, Apple app store, video game server
instant messaging servers, file servers
terminology
Slide13client
process that connects to servers, and uses the provided service*tink
tink
* “apple juice, please!”
web browsers get web pages, and render them
email clients (outlook/thunderbird) connect to mail servers to get and send email
IM clients connect to servers to exchange messages and find out who’s online
terminology
Slide14host
(n) a device connected to the network(n) a device running the server(v) run the server; usage: I will
host
the server
terminology
Slide15serialization
converting an object into a format that can be stored and resurrected latermake into a stream pictures, MS Word documents
data structures/data objects
terminology
101101100001….
Slide16topologies
arrangement or distribution of application and communication logicgeneral questions this lays out: which parts talk to each other
how you know who’s around
Slide17peer-to-peer
everyone tries to talk to one anothertopologies
Slide18peer-to-peer
topologies
(0,0) = black
(0,0) = black
what happens when there are a lot of peers?
how to synchronize?
delegation
leads to “weak link” scenarios
peer discovery?
Slide19centralized
server responsible for communication between clientstopologies
client
client
client
server
Slide20centralized
server responsible for communication between clientstopologies
client
sends message
server relays this, or another message to other clients
1
2
2
2
Slide21all sorts of interesting hybrids
bittorrent, skype, gnutella …
mainly, the hybrids are in place to:
boostrapping
(getting going)
overcome performance bottlenecks
or, structurally, they just make sense (different parts use different models—like
skype)topologies
Slide22Slide23networking 101
every host has an addressaddresses are written in dotted quad notation e.g. 192.168.1.23, 74.125.229.16one special address refers to the “local” machine:
127.0.0.1
localhost
Slide24addressing
only a limited number of IP addressesDHCP (dynamic host configuration protocol) is used to assign IP addresses from a shared pool (LAWN at GeorgiaTech
)
IPs from DHCP expire
when debugging, you can use “
localhost
” to refer to the client and server on the
same machine
networking 101
Slide25private and public addresses
** not all IP addresses can be reached from a given machine **because there are more devices than IPs, “local network adminstrators” use private or “non-routable” IP addresses
10.0.0.0 – 10.255.255.255
172.16.0.0. – 172.31.255.255
192.168.0.1 – 192.168.255.255.
(
your home network is
likely doing this)
networking 101
Slide26network address translation
most home routers do thisComcast gives me: 98.242.73.187my router gives: desktop: 192.168.1.115
Xbox: 192.168.1.110
laptop: 192.168.1.118
router performs
Network Address Translation
(NAT) so that when my desktop tries to connect to a website, it
looks like it is coming from 98.242.73.187networking 101
Slide27why is this important?
servers running with private IP addresses cannot be reached from machines not on that networkgenerally, you will be unable to run a server at GT, and connect to it from a client at home
networking 101
Slide28naming
when you go to a web browser, you don’t type in 64.223.161.104,you type in www.google.com
DNS (domain name service) makes this happen
a
big distributed database of all the machines on the Internet
each
organization manages its own little portion of it
maps
from host names to IP addresses
internet runs on IP addresses; names are for people*when you type www.google.com, the browser
resolves that name to an IP address by talking to a DNS serverif name resolution can’t be done (DNS is down; you’re not connected to the network), then browsing will failnetworking 101* “usability” ;-) … email boxes were supposed to be numbered
Slide29ports
ports let your machine run multiple servers at the same timeanalogy: IP address=street address; ports=apartmentsa port is a number [0-65,535] used to specify a certain mailbox in the apartment
networking 101
Slide30ports (2)
most internet services run on well-known portse.g. web servers run on port 80, so when I type www.google.com, it resolves: 64.223.161.104; when you type it into a web browser, the browser connects to: 64.223.161.104, port 80
ports 0-1024 are “special” and reserved
networking 101
Slide31why do you need to know this?
when you are writing an application, choose a high port number (e.g. 5000)only one program gets to use a port at a time
firewalls often block ports (e.g. to prevent you from connecting to instant messenger)
debugging:
“port already bound”: another process is already using that port
“can’t connect”: you may have specified the wrong IP
or
port
networking 101
Slide32Slide33network programming
for our purposes, there are two ways of communicating between machines: socket/stream-based, or UDP messaging
Slide34UDP messaging
UDP messaging is akin to sending postcards: if you send a bunch, they will likely get there quickly, but they might also get lostclient
:
create a message, address it (
address:port
), send it on the internet
server
:
BIND to a port on your machine, and wait for messagesnetwork programming
* note: no true notion of a “connection” *
Slide35sockets: stream-based
socket: endpoint for communication (think of a power socket) you can read/write to a socket with a stream—like a file you will know if the message gets there/if no one listening on the other side
network programming
Slide36from a client’s perspective
create a socketbind it to the address on the client machine (you’ll get an IP and a port)*connect to the server,
specifying
its address and port
read/write
from/to the socket for data
close
the socket
networking programming: sockets
* in many languages, this happens implicitly
Slide37from a server’s perspective
create a socketbind it to an address and portaccept incoming connections (this will wait until it gets a new client)
this produces a new
socket
that is paired w/ the client
meanwhile, you can go back to accepting new clients
close
listening socket when you’re donenetworking programming: sockets
Slide38client example
import
socket
client_socket
=
socket
.
socket
(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(("localhost", 5000)) while 1: data = client_socket.recv(512) print "RECIEVED:" , data data = raw_input ( "SEND:" ) if (data <>
'Q' and
data <> 'q'): client_socket.send(data) else: client_socket.send(data) client_socket.close() breaknetworking programming* from: http://www.pythonprasanna.com/Papers%20and%20Articles/Sockets/tcpclient_py.txt
Slide39server example
import
socket
server_socket
=
socket
.
socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((“localhost", 5000)) server_socket.listen() print “Server Waiting for client on port 5000" while 1: client_socket, address = server_socket.accept() print "I got a connection from ", address
while 1:
data = raw_input ( “SEND:" ) client_socket.send(data) data = client_socket.recv(512) print "RECIEVED:" , datanetworking programming* from: http://www.pythonprasanna.com/Papers%20and%20Articles/Sockets/tcpserver_py.txt
Slide40