CSE561 10/9/2002 Notes
Project
- get as much of the design out of the way as possible, as soon as possible
- make sure that you stay on track and don't move off onto a tangent
- for October 22, have 3 pages including
- background reading (probably a few papers)
- identify hypothesis (identify the question precisely)
- method and explanation of experiments (how you intend to answer the
hypothesis; sketch details and be specific, though later refinements are okay)
- 1-2 pages of introduction (synopsis)
- What's the question?
- alternative technologies and approaches
- What's wrong with these alternatives? (be fair to other/current systems/ideas)
- What do you plan to do? (your contribution and approach)
- evaluation of your results (what you expect to show)
Transport/Addressing
- API?
- sockets: read/write byte interface (pipe)
- TCP: two-way byte stream
- connection halts if outgoing buffer fills up (needs to receive acknowledgements in order to empty)
- data must be broken into packets (might ask IP for suggested packet size)
- (denial of service attacks try to fill up a host's limited resources)
- Why is the byte # used for the (32-bit) sequence number?
- fragmentation in IP
- it could be possible to retransmit multiple small packets as one larger packet
- Nagle's Algorithm: 1 partial packet is sent at a time, bulk up typing based on round trip time
- Other kinds of connections are UDP and RPC
- How do you prevent a fast sender from overwhelming a slow receiver?
- drop packets (cheap way)
- receiver specifies a sliding window size and the sender must stop when the window is full
- every acknowledgement carries the remaining window size
- to prevent "silly window syndrome" (where the sender sends small amounts of data just because there is a
small amount of room available in the receiver's window), the receiver will sometimes wait until its window
is half empty before telling the sender
Connection Setup / Tear Down
- connection setup
- buffer allocated
- pick random sequence number (if you always choose 1, then it is vulnerable to attacks, masquerading;
randomization also helps eliminate confusion with old packets)
- window size
- asymmetric open
- sender sends SYN with initial sequence number, x
- receiver acknowledges a SYN requesting x+1 and sending it's own sequence number, y
- sender acknowledges with a request for y+1
- they begin sending eachother data based on their numbers
- symmetric close (send FIN, but sometimes the host doesn't wait for acknowledgement)
- SYN cookies help to prevent flooding attacks
Addressing
- IP has:
- destination address
- source address
- TCP has:
- to: port
- from: port
- sequence number
- acknowledgement number
- flags
- checksum
- unique identity, globally unique - Internet style
- depending on the route, a host may have different numbers because of interfaces
- virtual hosts may have a unique address
- Domain Name System
- takes a name, looks up an address
- multiple servers serve names, so there can be temporary inconsistancies as changes propegate
- some names may map to a list of hosts (eg. a server farm somewhere, may send back a round robin element instead)
- if the host representing the name goes down, then the location would look unavailable to some while the DNS updates
- load balancers
- forward requests to multiple hosts (server farm)
- if one host fails, then another can take over
- NATs
- similar to load balancers, but meant to function the other way around
- distinguish different connections through selecting the port number
- Is global addressability necessary?
- IPv6 - 128 bit address
- IPv4 - 32 bit address
- all IPv4 addresses haven't been used up yet (probably because of increased use of systems like NATs)
- perceived limit on addresses makes them cost
- names as addresses have the following considerations: routability, aggregation, length