An Overview of TCP/IP Internals and Programming with Sockets

standguideΔίκτυα και Επικοινωνίες

26 Οκτ 2013 (πριν από 3 χρόνια και 5 μήνες)

64 εμφανίσεις

History and Internals of TCP/IP






Andrew Tucker

February 15, 2000

What We’ll Cover



Big picture of network protocols


Where TCP/IP lives in the network layer model


Protocols that utilize TCP/IP


Under the hood of IP


Addressing and Routing


Under the hood of TCP (and UDP)


Ensuring reliable delivery


Weaknesses of TCP/IP


Resources for more info

What We’ll Cover


All topics should be considered overviews


References for more depth on each subject
will be given at the end


Programming with sockets will be covered
in next session


Feel free to interrupt with questions at any
time

TCP/IP in the Big Picture

What is TCP/IP?



Set of protocols that are used for
communication across a network


TCP/IP

= Transmission Control Protocol /
Internet Protocol


UDP

= User Datagram Protocol


Standard method for transferring data and
information on the Internet

What is a protocol?



Definition:

A set of rules that regulate the way data
is transmitted between computers.


An infinite amount of ways to realize this
abstract notion
-

so why did the Internet
standardize on TCP/IP?

Why TCP/IP?


‘cuz Uncle Sam said so!


Originally a set of conventions developed
by the DOD and DARPA in 1969, formalized
into TCP/IP in 1980s


Original ideas attributed to Vinton Cerf and
Robert Kahn


Gained popularity in the user community
because of inclusion in v4.2 of BSD UNIX

Why TCP/IP?


DARPA network was the early precursor of
the Internet


If you wanted to talk on the DARPANET you
needed to speak TCP/IP


TCP/IP was designed well enough to scale
to the Internet*


*
-

until recently...

Why TCP/IP?


Three Main Goals:


Interoperability

-

communicate between
heterogeneous hardware and OS


Robustness

-

reliability and performance


Ease of Reconfiguration

-

add and remove
computers without disruption

ISO OSI 7
-
layer model



ISO developed the 7
-
layer Open Systems
Interconnect (OSI) model independent of
TCP/IP in the 1970s


Allows each layer of a protocol to be
changed without affecting layers above or
below

Layer 7: interfaces with end user

Layer 6: data format conversion

Layer 5: establishes node connection

Layer 4: ensures delivery and correctness

Layer 3: routing and addressing

Layer 2: interface for physical line (NIC)

Layer 1: actual transmission line or

“bit pipe”

ISO OSI 7
-
layer model

Modified Conceptual 5 Layer
Model


Top three layers ISO OSI model don’t relate
well to Internet protocols using TCP/IP


Conceptually it helps to think about a 5
layer model for the Internet and TCP/IP

Modified 5 Layer Conceptual
Model

TCP/IP In the 5 Layer Model


TCP

handles the transport layer and
guarantees data delivery and correctness


UDP

is a TCP replacement that doesn’t
guarantee delivery


IP

lives in the network layer and handles
routing and addressing

TCP/IP In the 5 Layer Model

Stream Connection

Connectionless

Datagram

Sockets API


Protocols Built on TCP/IP

IP

TCP

UDP

FTP

HTTP

NNTP

TFTP

DNS

Telnet

SMTP

TCP/IP Internals

IP Internals


Current version in widespread use is IPv4


Each node in an internet has a 32
-
bit IP
address such as 10.0.3.172

IP knows nothing of text names like
www.bsquare.com
-

they are
translated to the numeric form by
DNS

IP Internals



IP addresses are split into two parts:


network

-

same for all hosts on the same
network


host

-

identifies a specific host within a
network


The number of bits that represent the
network and host vary by the address
“class”

IP Internals

0 Network Host

Class A

1 0 Network Host

Class B

1 1 0 Network Host

Class C

7 24

14 16

21 8

IP Internals


Original idea was to have a small number of
WANs (class A), modest number of campus
size networks (class B) and a large number
of LANs (class C)


Explosion of the Internet has changed this
-

many clever interpretations of IP
addresses have been invented to stretch
the limit

IP Internals


IP routes information across a network via
“packet switching” (as opposed to circuit
switching)


Each packet is transmitted as a separate
entity


Different packets can take different routes
and can arrive in different order than they
were sent

IP Internals


Packets are sent as datagrams, so delivery
isn’t guaranteed


Each packet has an IP header that contains
source and destination address, data and
header length, etc


Packets are routed based on the network
specified in the destination address



IP Internals



If the source and destination address are
on the same network life is simple (e.g.
Ethernet uses ARP to get the MAC address)


If the source and destination address are
on different networks it is more
complicated...

IP Internals


Special nodes called “gateways” connect
networks


Gateways have tables that map network
numbers to gateway addresses


Datagrams are forwarded to the gateway
corresponding to their destination network
number


What if there is no gateway available?

IP Internals


Default gateways are used if no mapping is
present


Once a mapping is found the sender is
notified of the correct gateway mapping
(via ICMP)


Over time, routers build up a mapping table
based on ICMP notifications


IP Internals



A simple routing example via TraceRoute:


1 www.worldaccessnet.com (206.190.139.3)


2
worldaccessnet
-
2t1
-
ltipdxbackbone.ltinet.net (206.190.136.117)


3
pdx2lc.worldaccessnet.com (206.190.136.6)



4
seattle
-
portland
-
ds3.sea.above.net (
209.133.31.50
)



5
POS1
-
0
-
0.GW2.SEA4.ALTER.NET (157.130.177.121)



6
112.ATM3
-
0.XR2.SEA4.ALTER.NET (146.188.200.174)



7
292.ATM3
-
0.XR2.SEA1.ALTER.NET (146.188.200.157)



8
194.ATM9
-
0
-
0.GW1.SEA1.ALTER.NET (146.188.200.45)


9
63.76.82.94 (63.76.82.94)


10
www.bsquare.com (63.76.82.70)


IP Internals


TTL (Time To Live) field in IP header
eliminates endless routing loops by
limiting hop count


127.0.0.1 is a special loopback address

UDP Internals


Ensures data correctness, but not reliable
delivery


Adds a “port” number to IP


Think of a port as channels for a single
machine
-

more on this in the discussion of
sockets

UDP Internals


Sends entire chuck of data in one packet


Sends datagrams in one direction

TCP Internals


Lots of versions floating around:


Tahoe
-

released with BSD NR 1.0


Reno
-

released with BSD NR 2.0


New TCP Reno


TCP Vegas


Versions are guaranteed to interoperate
but not with optimal performance

TCP Internals


Guarantees data correctness and delivery


Uses ports identical to UDP


Breaks data into individual packets


Full duplex two
-
way stream


Complete implementation is
complicated

with lots of intricate details
-

we’ll touch on
interesting highlights

TCP Internals


Operates on two basic principles:
flow
control

and
congestion control


Flow control

involves preventing senders
from overrunning the capacity of receivers


Congestion control

involves preventing too
much data from being injected into the
network, causing links and switches to
become overloaded

TCP Internals


Follows a basic protocol design rule called
“smart sender, dumb receiver”


Flow control done via “sliding window”


For window size n, only n bytes can be sent
without receiving an acknowledgement


When data is acknowledged, the window slides
forward

TCP Internals


TCP packet header advertises a window
size indicating the number of bytes the
receiver is willing to get


Initial window size established in TCP
connection setup

TCP Internals


Packet header includes the last byte
acknowledged and the packet sequence
number


Sequence numbers are used to reassemble
packets in the order they were sent

TCP Internals

4

5

6

7

8

9

1

2

3

10

11

12

offered window

(advertised by receiver)

usable window

sent and

acknowledged

sent, not ACKed

can send ASAP

can’t send until

window moves

Left side of window advances when data is acknowledged

Right side controlled by size of window advertisement

TCP Internals


What if receiver’s buffer fills up and results
in an advertised window size of 0?


TCP periodically sends a 1
-
byte “probe”
packet which fails but has a new advertised
window size

EffectiveWindow = AdvertisedWindow
-

(LastByteSent
-

LastByteAcked)

TCP Internals


Acks indicate last consecutive packet
received


Packets are retransmitted if an ACK is not
received after a certain time period


Timeout value varies depending on
previous packets average round trip time
(RTT)

TCP Internals


Congestion control is built on top of sliding
window flow control


Consists of three intertwined mechanisms:


Additive Increase / Multiplicative Decrease


Slow Start


Fast Retransmit

TCP Internals


An additional window size is maintained in
each packet header called the congestion
window


Similar to advertised window, but not
directly controlled by sender or receiver


TCP Internals



Effective window size calculation changes:

MaxWindow = MIN(CongestionWindow,AdvertisedWindow)

EffectiveWindow = MaxWindow
-

(LastByteSent
-

LastByteAcked)



How is congestion window size calculated?


TCP Internals


Initially it is set to the Maximum Segment
Size (MSS)


Whenever a congestion window size is
successfully transmitted, the size is
incremented by MSS
-

hence the term
“additive increase”

TCP Internals


If a packet is dropped (e.g an ACK times
out), it is assumed to be due to network
congestion


When a packet is dropped, the congestion
window size is cut in half
-

hence the term
“multiplicative decrease”

TCP Internals



Result is that the window size is eased up
until a packet is dropped and then it is
throttled back


Works OK during the middle of a
connection, but takes too long to ramp up
when starting from scratch...

TCP Internals


Slow Start addresses initial connection
issue and temporarily discards additive
increase


Congestion window size starts at 1 packet
and is doubled every time a full window is
successfully transmitted


Eventually a packet is dropped and additive
increase is resumed

TCP Internals


Why is it called Slow Start if it changes
from linear to exponential growth of
congestion window size?



Refers to difference when compared to
original TCP strategy of always starting
with full advertised window size


TCP Internals


Fast retransmit was not part of original TCP
spec


Added by TCP Reno circa 1990 to deal with
performance problems


TCP Internals


Fast Retransmit means that if the sender
sees a number of duplicate ACKs it
retransmits first packet after ACK


Assumes that a number of duplicate ACKs
imply a dropped packet


TCP Internals

Packet 1

ACK 1

Packet 2


Packet 3

ACK 1

ACK 1


Packet 4


Packet 5

Packet 2

ACK 5

Fast Retransmit in action!

TCP/IP Weaknesses

TCP/IP Weaknesses


IP


address space is too small


size of routing information transmitted and
stored is too big


lack of real
-
time support necessary for voice
and multimedia

TCP/IP Weaknesses


Being addressed by IPv6


Increases address space to 128 bits


Over 1500 addresses per square foot of the
earth’s surface!


Difficult to roll out and guarantee
cooperation with IPv4


TCP/IP Weaknesses


TCP


congestion control algorithm is a problem over
wireless connections


maximum packet size of 64K and 32
-
bit
sequence number is too small for broadband
pipes


reliability guarantee causes degradation in
multimedia streams

TCP/IP Weaknesses


TCP has unused header bits that could be
used for a temporary hack


No structured initiative like IPv6 for solving
TCP issues

Resource Material

Resources for the Curious and
Diligent


RFCs at www.faqs.org/rfcs


Computer Networks: A Systems Perspective
by Peterson and Davie


Internetworking with TCP/IP 1, 2, and 3 by
Doug Comer


TCP/IP Illustrated 1, 2, and 3 by Richard
Stevens


Resources for the Curious and
Diligent


Understanding IP Addressing at
/www.3com.com/nsc/501302s.html


2 part article on embedding a TCP/IP stack
in Dec 99 and Jan 99 issues of ESP


Thanks for staying awake!



Questions?