1 / 40

Client/Server Networking

Client/Server Networking. Protocol Stack Summary. “turtles all the way down” each layer uses the services of the layer below and provides a service to the layer above Python lets you work at the layer of your choice programs are “cleaner” the higher the layer you use

heman
Télécharger la présentation

Client/Server Networking

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. Client/Server Networking

  2. Protocol Stack Summary • “turtles all the way down” • each layer uses the services of the layer below and provides a service to the layer above • Python lets you work at the layer of your choice • programs are “cleaner” the higher the layer you use • layers work by “hiding” the layers below behind function calls

  3. What lies under Socket? TCP/UDP IP “link layer” Internet Protocol Stack

  4. Networking • About “sharing” resources. • Compare to sharing of disk, IO devices, etc done by programs running on a computer • Computer Example: OS is the master controller • Network Example: Each participant “plays by the rules” but no “controller”

  5. Networking • All network cards share the same ethernet cable • all wireless transmitters share the same frequency channels • fundamental unit of sharing is “packet” • individual packets carry addressing info sufficient to arrive at final destination.

  6. Addressing • two layers: one hop at a time and end-to-end • single hop addressing performed by link layer • end-to-end addressing is IP • process addressing is TCP or UDP

  7. IP Addresses • a.b.c.d: 0 <= a,b,c,d <= 255 • New Paltz: 137.140.*.* • localhost: 127.0.0.1 • private networks: 10.*.*.*, 172.16-31.*.*, 192.168.*.*

  8. Domain Name Service • DNS converts host names into host IP addresses. • corresponds to directory assistance address = socket.gethostbyname(name);

  9. How DNS Works • gethostbyname() first looks in /etc/hosts • if this fails then it looks in /etc/resolv.conf for the address of “directory assistance”, also called a DNS Server. • sends the request to this address • Observation: If your DNS server is down, you won't get anywhere on the Internet.

  10. Routing • Each time a packet arrives at a new node a decision must be made at that node as to where to send the packet next. • Guiding principle of routing on the Internet is that each time a packet “hops” from one node to another it is always one hop closer to its final destination. • Exercise: Difference between host and node.

  11. Lots of Reading • The classic text is TCP/IP Illustrated: Vol I by Richard Stevens. • PDF file available on the web at books.google.com among other places • We will concentrate on Chapters 1-4, 9, 11, 14, 17-19.

  12. EXAMPLE: • Given: • Find longitude and latitude 207 N. Defiance St, Archbold, OH

  13. Protocol Stack: GoogleMaps ????? TCP IP Ethernet

  14. GoogleMaps URL HTTP Socket GoogleMaps • googlemaps library (3rd party) uses • urllib, uses • httplib, uses • Socket, uses • TCP, IP, Ethernet protocol stack inside the actual program itself TCP, IP and Ethernet make up the OS part of the protocol stack

  15. APIs vs Sockets: • well-tested • written by experts • common practice to use them • we still need to understand Sockets toappreciate things that depend upon them

  16. Wireshark: • lets you look at packets crossing the wire • needs root permissions • easy to filter out unneeded traffic • I saved some traffic and you can view it with Wireshark (see course web page).

  17. Highest Level API Example: • Fetch a JSON document without realizing it: #!/usr/bin/env python # Foundations of Python Network Programming - Chapter 1 - search1.py # Not even clear you are using a web service from googlemaps import GoogleMaps address = '207 N. Defiance St, Archbold, OH' print GoogleMaps().address_to_latlng(address)

  18. GET Syntax:

  19. #!/usr/bin/env python # Foundations of Python Network Programming - Chapter 1 - search2.py # HTML-level abstraction import urllib, urllib2 try: import json except ImportError: # for Python 2.5 import simplejson as json params = {'q': '207 N. Defiance St, Archbold, OH', 'output': 'json', 'oe': 'utf8'} url = 'http://maps.google.com/maps/geo?' + urllib.urlencode(params) rawreply = urllib2.urlopen(url).read() reply = json.loads(rawreply) print reply['Placemark'][0]['Point']['coordinates'][:-1]

  20. GET Syntax:

  21. #!/usr/bin/env python # Foundations of Python Network Programming - Chapter 1 - search3.py # HTTP level abstraction import httplib try: import json # json built in with Python 2.6 except ImportError: # for Python 2.5 import simplejson as json path = ('/maps/geo?q=207+N.+Defiance+St%2C+Archbold%2C+OH' '&output=json&oe=utf8') connection = httplib.HTTPConnection('maps.google.com') connection.request('GET', path) rawreply = connection.getresponse().read() reply = json.loads(rawreply) print reply['Placemark'][0]['Point']['coordinates'][:-1]

  22. GET Syntax:

  23. #!/usr/bin/env python # Foundations of Python Network Programming - Chapter 1 - search4.py import socket sock = socket.socket() # OS functionality sock.connect(('maps.google.com', 80)) sock.sendall( 'GET /maps/geo?q=207+N.+Defiance+St%2C+Archbold%2C+OH' '&output=json&oe=utf8&sensor=false HTTP/1.1\r\n' 'Host: maps.google.com:80\r\n' 'User-Agent: search4.py\r\n' 'Connection: close\r\n' '\r\n') rawreply = sock.recv(4096) print rawreply

  24. GET Syntax:

  25. # search4.py output HTTP/1.1 200 OK Content-Type: text/javascript; charset=UTF-8 Vary: Accept-Language Date: Wed, 21 Jul 2010 16:10:38 GMT Server: mafe Cache-Control: private, x-gzip-ok="" X-XSS-Protection: 1; mode=block Connection: close { "name": "207 N. Defiance St, Archbold, OH", "Status": { "code": 200, "request": "geocode" }, "Placemark": [ { ... "Point": { "coordinates": [ -84.3063479, 41.5228242, 0 ] } } ] } data transmitted by web server data read into program variable

  26. Things We've Seen: • protocols stacked on top of one another • higher level protocols using services of lower levels • programs get more specific and harder to maintain the lower down you go • the idea behind high-level protocols is precisely to hide lower levels • there's a whole lot going on below Socket.

  27. The Stack: • Fundamental unit of shared information is the packet. • Typical packet structure: • Transmitted as a single unit (but serially) • Routing is generally at the packet level • Things packets contain: data, addresses, layering, sequencing, protocol bytes, checksums • ethernet packets are called frames. IP header TCP/UDP header program data ethernet header

  28. Ethernet: • 14-byte header • addresses: two 6-byte addresses – source and destination • type: 2 bytes – 0800 == IP datagram • the two network cards involved can process the header without using the CPU, RAM, etc. • cable length (100m) and MTU • CSMA/CD • Some of the details: http://serverfault.com/questions/422158/ what-is-the-in-the-wire-size-of-a-ethernet-frame-1518-or-1542

  29. IP Addresses: • 32 bits: a.b.c.d • network address – n bits; host id – (32-n) bits • some times the network part has a subnet component; some times the subnet component is carved out of the hostID bits • a.b == 137.140 == New Paltz network address • a.b.c == 137.140.8 == CS subnet at New Paltz • the part of the network address that is not subnet identifies an organization like New Paltz.

  30. IP Address Classes:

  31. IP Special Addresses: • 127.*.*.*: local to the current machine • 10.*.*.*, 172.16-31.*.*, 192.168.*.*: private subnets. • none of these address found on the larger Internet.

  32. IP Routing: • Guiding principle: after each hop you are one step closer to your destination • typical local routing table contains a default entry pointing to the Internet together with one entry for each local subnet the host belongs to. [pletcha@archimedes PPT]$ netstat -nr Kernel IP routing table Destination Gateway Genmask Flags Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG wlan0 192.168.1.0 0.0.0.0 255.255.255.0 U wlan0 192.168.122.0 0.0.0.0 255.255.255.0 U virbr0

  33. IP Routing Next Hop Algorithm: • Search Destination column of table entries with H-flag set which is an exact match to Destination IP in packet • If found and Flag is G or H then Gateway is next hop; otherwise Destination IP is next hop. • If not found then calculate Dest IP && Genmask for each entry that is not the default. If Dest IP && Genmask == Destination column entry then if Flag is G or H then Gateway is next hop; otherwise Destination IP is next hop. • Otherwise use the default entry. Flag is almost always G so Gateway is next hop IP.

  34. IP Routing Next Hop Algorithm: • Once you have the next hop IP you need to determine the next hop ethernet. • The Address Resolution Protocol (ARP) converts the next hop IP into a next hop ethernet. More recently replaced by the ip neigh command • Exercise: Read up on ARP in TCP/IP Illustrated. [pletcha@archimedes PPT]$ ip neigh 137.140.39.139 dev enp0s25 lladdr 00:c0:17:c2:14:f3 STALE 137.140.193.250 dev wlp3s0 lladdr 00:1f:29:07:e4:6a STALE 137.140.39.250 dev enp0s25 lladdr 00:21:a0:39:65:00 DELAY

  35. ARP Example • From my laptop (137.140.8.104) I try to locate joyous (137.140.8.101) • Because of my routing table I know it is locally connected so 137.140.8.101 is “next hop”. [pletcha@archimedes PPT]$ ping 137.140.8.101 PING 137.140.8.101 (137.140.8.101) 56(84) bytes of data. 64 bytes from 137.140.8.101: icmp_seq=1 ttl=64 time=0.266 ms ^C [pletcha@archimedes PPT]$ netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 137.140.8.250 0.0.0.0 UG 0 0 0 enp0s25 137.140.8.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s25 137.140.192.0 0.0.0.0 255.255.254.0 U 0 0 0 wlp3s0

  36. ARP Request

  37. ARP Reply

  38. Packet Fragmentation: • The Internet Protocol Suite supports 64k packets but specific IP networks support much smaller packets. • Ethernet networks support 1500 byte packets. • IP headers contain a Don't Fragment (DF) flag, set by sender. • DF not set, then a router can fragment a packet too large to be forwarded on a particular interface. • DF set, router sends an ICMP message to original sender so sender can fragment the original message and try again. • UDP: DF unset by OS • TCP: DF set by OS

  39. Packet Fragmentation (continued): • Each subnet has an MTU – Maximum Transmission Unit. • Path MTU = min hop MTU over all hops in a path • DSL providers make MTU = 1492. • Initially many service providers used MTU = 1500 and disabled ICMP so never knew their “large” traffic was being dropped. • TCP/IP Illustrated discusses how fragmentation actually happens (Read Section 11.5).

  40. TCP/IP Illustrated: • Pages to Look at 25, 38, 43, 44, 48, 58, 61, 63

More Related