1 / 40

administrative fun thing

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. a lil ’ bit ‘o’ networking. anthony tang. goal: build a simple distributed application. assignment # 1.

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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: http://hcc2.cc.gatech.edu/documents/107_Edwards_week6.pdf

  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. 192.168.1.23, 74.125.229.16 • one special address refers to the “local” machine: • 127.0.0.1 • 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 • 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 private and public addresses

  24. most home routers do this • Comcast gives me: 98.242.73.187 • my 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.187 • 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 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 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 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 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: http://www.pythonprasanna.com/Papers%20and%20Articles/Sockets/tcpclient_py.txt

  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: http://www.pythonprasanna.com/Papers%20and%20Articles/Sockets/tcpserver_py.txt

More Related