administrative fun thing n.
Skip this Video
Loading SlideShow in 5 Seconds..
administrative fun thing PowerPoint Presentation
Download Presentation
administrative fun thing

Loading in 2 Seconds...

play fullscreen
1 / 40

administrative fun thing - PowerPoint PPT Presentation

Download Presentation
administrative fun thing
An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 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 administrative fun thing

  2. a lil’ bit ‘o’ networking anthony tang

  3. goal: build a simple distributed application • assignment #1 build a distributed whiteboard

  4. goal: build a simple distributed application • assignment #1 build a distributed whiteboard

  5. establish a data connection(topology?) • get input from user (ui?) • send data (granularity? formatting?) • receive data (ui presentation?) • break the data connection • assignment #1 without taking away all of the fun…

  6. language: whatever you like; suggestion: C#, Java, or Python* • use either: raw sockets OR udp • the point is to do some raw network programming  no networking toolkits • assignment #1 constraints * if you’re not sure, ask me early

  7. 2.5% each! • see the assignment page • some examples: • support telepointers • support the late joiner • support >2 clients • assignment #1 fun bits

  8. *distributed application terminology • topologies • *networking 101 • *network programming: sockets and udp messaging on deck *based on:

  9. you have seen some of this before • you kind of have a feel for most of this stuff • this is mostly refresher assumptions * but I could be wrong; ask for clarification when needed

  10. rules that facilitate information exchange • “picardtoriker” • “riker here” • … • “picardout” • (* or another radio protocol) • network applications communicate in very specific ways (certain messages, known formats) • terminology protocol

  11. 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 server

  12. process that connects to servers, and uses the provided service • *tinktink* “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 client

  13. (n) a device connected to the network • (n) a device running the server • (v) run the server; usage: I will host the server • terminology host

  14. converting an object into a format that can be stored and resurrected later • make into a stream • pictures, MS Word documents • data structures/data objects • terminology serialization 101101100001….

  15. arrangement or distribution of application and communication logic • general questions this lays out: • which parts talk to each otherhow you know who’s around topologies

  16. everyone tries to talk to one another • topologies peer-to-peer

  17. topologies peer-to-peer (0,0) = black what happens when there are a lot of peers? how to synchronize? delegation leads to “weak link” scenarios peer discovery? (0,0) = black

  18. server responsible for communication between clients • topologies centralized server client client client

  19. server responsible for communication between clients • topologies centralized client sends message server relays this, or another message to other clients 1 2 2 2

  20. 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 all sorts of interesting hybrids

  21. every host has an address • addresses are written in dotted quad notation e.g., • one special address refers to the “local” machine: • • localhost networking 101

  22. only a limited number of IP addresses • DHCP (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 addressing

  23. ** 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 • – • – • – • (your home network is likely doing this) • networking 101 private and public addresses

  24. most home routers do this • Comcast gives me: • my router gives: • desktop: • Xbox: • laptop: • router performs Network Address Translation (NAT) so that when my desktop tries to connect to a website, it looks like it is coming from • networking 101 network address translation

  25. servers running with private IP addresses cannot be reached from machines not on that network • generally, you will be unable to run a server at GT, and connect to it from a client at home • networking 101 why is this important?

  26. when you go to a web browser, you don’t type in, • you type in • 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, the browser resolves that name to an IP address by talking to a DNS server • if name resolution can’t be done (DNS is down; you’re not connected to the network), then browsing will fail • networking 101 naming * “usability” ;-) … email boxes were supposed to be numbered

  27. ports let your machine run multiple servers at the same time • analogy: IP address=street address; ports=apartments • a port is a number [0-65,535] used to specify a certain mailbox in the apartment • networking 101 ports

  28. most internet services run on well-known ports • e.g. web servers run on port 80, so when I type, it resolves:; when you type it into a web browser, the browser connects to:, port 80 • ports 0-1024 are “special” and reserved • networking 101 ports (2)

  29. 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 why do you need to know this?

  30. for our purposes, there are two ways of communicating between machines: socket/stream-based, or UDP messaging network programming

  31. UDP messaging is akin to sending postcards: if you send a bunch, they will likely get there quickly, but they might also get lost • client: • create a message, address it (address:port), send it on the internet • server: • BIND to a port on your machine, and wait for messages • network programming UDP messaging * note: no true notion of a “connection” *

  32. 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 sockets: stream-based

  33. create a socket • bind 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 from a client’s perspective * in many languages, this happens implicitly

  34. create a socket • bind it to an address and port • accept 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 done • networking programming: sockets from a server’s perspective

  35. importsocket • client_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM) • client_socket.connect(("localhost", 5000)) • while1: • 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() • break • networking programming client example * from:

  36. importsocket • 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" • while1: • client_socket, address =server_socket.accept() • print"I got a connection from ", address • while1: • data =raw_input ( “SEND:") • client_socket.send(data) • data =client_socket.recv(512) • print"RECIEVED:" , data • networking programming server example * from: