25.03.2013 Views

Cracking the Coding Interview - Fooo

Cracking the Coding Interview - Fooo

Cracking the Coding Interview - Fooo

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Solutions to Chapter 17 | Networking<br />

17 5 What are <strong>the</strong> differences between TCP and UDP? Explain how TCP handles reliable<br />

delivery (explain ACK mechanism), flow control (explain TCP sender’s / receiver’s window)<br />

and congestion control<br />

SOLUTION<br />

2 5 5<br />

<strong>Cracking</strong> <strong>the</strong> <strong>Coding</strong> <strong>Interview</strong> | Knowledge Based<br />

pg 84<br />

TCP (Transmission Control Protocol): TCP is a connection-oriented protocol A connection can<br />

be made from client to server, and from <strong>the</strong>n on any data can be sent along that connection<br />

» Reliable - when you send a message along a TCP socket, you know it will get <strong>the</strong>re unless<br />

<strong>the</strong> connection fails completely If it gets lost along <strong>the</strong> way, <strong>the</strong> server will re-request<br />

<strong>the</strong> lost part This means complete integrity; data will not get corrupted<br />

» Ordered - if you send two messages along a connection, one after <strong>the</strong> o<strong>the</strong>r, you know<br />

<strong>the</strong> first message will get <strong>the</strong>re first You don’t have to worry about data arriving in <strong>the</strong><br />

wrong order<br />

» Heavyweight - when <strong>the</strong> low level parts of <strong>the</strong> TCP “stream” arrive in <strong>the</strong> wrong order, resend<br />

requests have to be sent All <strong>the</strong> out of sequence parts must be put back toge<strong>the</strong>r,<br />

which requires a bit of work<br />

UDP(User Datagram Protocol): UDP is connectionless protocol With UDP you send messages<br />

(packets) across <strong>the</strong> network in chunks<br />

» Unreliable - When you send a message, you don’t know if it’ll get <strong>the</strong>re; it could get lost<br />

on <strong>the</strong> way<br />

» Not ordered - If you send two messages out, you don’t know what order <strong>the</strong>y’ll arrive in<br />

» Lightweight - No ordering of messages, no tracking connections, etc It’s just fire and<br />

forget! This means it’s a lot quicker, and <strong>the</strong> network card / OS have to do very little work<br />

to translate <strong>the</strong> data back from <strong>the</strong> packets<br />

Explain how TCP handles reliable delivery (explain ACK mechanism), flow control (explain TCP<br />

sender’s/receiver’s window).<br />

For each TCP packet, <strong>the</strong> receiver of a packet must acknowledge that <strong>the</strong> packet is received<br />

If <strong>the</strong>re is no acknowledgement, <strong>the</strong> packet is sent again These guarantee that every single<br />

packet is delivered ACK is a packet used in TCP to acknowledge receipt of a packet A TCP<br />

window is <strong>the</strong> amount of outstanding (unacknowledged by <strong>the</strong> recipient) data a sender can<br />

send on a particular connection before it gets an acknowledgment back from <strong>the</strong> receiver<br />

that it has gotten some of it<br />

For example, if a pair of hosts are talking over a TCP connection that has a TCP window with<br />

a size of 64 KB, <strong>the</strong> sender can only send 64 KB of data and <strong>the</strong>n it must wait for an acknowledgment<br />

from <strong>the</strong> receiver that some or all of <strong>the</strong> data has been received If <strong>the</strong> receiver

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!